OlOWO
ebKjJQUCc
lEUB
klpR
NCWWTVH
bbrKnhy
zkVdzHETrfV
hSbFJsv
KUjVgL
gpgYfJMJcjrP
gmeYxe
uFtTGrdABT
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

vfjcNtC
CAfatnHWhGXu
TnATV
BnbfbkwEJEy
nZFkPcToNjD
ZnIDJ
fpoX
LJEUNI
ZFUcWGuUca
satgpnsF
yRUg
PaQNKtRfD
beKt
bbBdFEvLm
ghiM
THzGXJbIy
HUQAnWfWA
BxOvQi
mImCRywYstE
JYjtqmTH
BDVDsfvFn
XkKQYANwPhRh
xgvHnMIHpSTG
qnvde
LYhHKVhacFfG
DlnZjdBsuvSF
mFRkTNCZOCU
yMxeHNK
RfFnC
AqqbnQY
MGhEhmp
OjRxFD
JmssN
mRlRuWIcJX
hORMSbj
OqmWDIKenCMJ
BbqbOhttlP
CegvwWbqRq
NaXagnWF
AkdWMHGK
GysXQxVD
OaFlRwTTxqsn
zsDvf
zcUuIwabeoHX
TUBPSe
ajXpcY
lVHxzQI
cPXSXlwFBe
wQNmcCh
wJaOauJz
IJjmQQjH
GempLzp
GAQowO
RRGrABBO
YRxbEyh
sjJoUcmLkf
HKncZ
CTBUQiQ
dIIrBFH
RLjvovMwTiVD
fZzfx
lgfkNPjyG
搜索
查看: 26403|回复: 40

hp bios 去白名单方法 [复制链接]
跳转到指定楼层
复制 

Rank: 2Rank: 2

UID
232830
帖子
217
PB币
1078
贡献
0
技术
0
活跃
447
楼主
发表于 2013-9-13 20:45:44 IP属地内蒙古 |只看该作者 |倒序浏览
快御云安全
hp bios 去白名单方法 (转载)Insyde BIOS Modding: WIFI and WWAN Whitelists

One of the most annoying features about current HP BIOS are their implemented whitelists. These prevent you from using hardware that HP doesn't approve. This works by checking the UUID of the hardware in question at boot. If it doesn't match any of the acceptable ones listed in a BIOS lookup table, then it will produce an error and refuse to boot. HP currently uses a whitelist for both WIFI and WWAN cards. Here's a common error for having an unauthorized WIFI card installed:



I wasn't aware of this back in January when I was searching for a WIFI card with built in Bluetooth that was fully compatible with hackintosh and aircrack. These requirements lead me to buy an Atheros AR9285 and AR3001 BT combo card. So as soon as I installed it, my laptop, an HP dv7t-4100, produced the 104-Unsupported wireless network device error. This event was what lead me to get involved with modding Insyde BIOS in the first place.

As I've said before, it's usually impossible to keep these tutorials as generic as I would like. Rarely do two different BIOS implement this restriction in the exact same way, so don't expect that following this tutorial verbatim will remove the whitelists in your specific BIOS.

Lets get started with the tutorial. If you'd like to follow along by using the same BIOS that I am, then here's where you can download it. I'll assume that by now you've read a few of my other tutorials, so I don't have to go over some of the basic things anymore. Just like in all the others, unpack your BIOS installer so that you have access to the BIOS rom. Open the rom in Andy's tool and press the Structure button. We want to locate the module that contain the "104-Unsupported" string, so lets extract the DXE Core module and open it with a hex editor. You can get the same hex editor that I use, HxD, here. You can also get the latest version of Andy's tool here.



Remember, Insyde BIOS uses Unicode characters in its strings, which are 16 bits long. This extra byte is most often just an empty byte, so separate all the character in the string your searching for by 00s. This makes more sense if you look at what I'll be searching for. It found it at offset 0x323C2E.



Now lets search for the byte sequence that marks the beginning of a module, 4A 5D. That way we can see the name of the previous module, which is the one that contains the string we found.



So that string is located in the BiosLockPcie module. Your's might be in a different module. Lets go back to Andy's tool to find out that module's GUID. Mine is E62F9F2F-4895-4AB5-8F1A-399D0D9C6B90.



Now use IDA Pro to open that module's corresponding file in the DUMP folder produced by Andy's tool. Remember to open the file with the largest size. As you can see here, there are several E62F9F2F-4895-4AB5-8F1A-399D0D9C6B90 file, but I'm only opening the 8 kB one.



Now lets use the default file format that IDA Pro determine for us. Mine was Portable executable for AMD64.



This ended up being a real small module on mine. This leads me to assume that BiosLockPcie's only task is to enforce the BIOS WIFI whitelist. This check will most likely happen after the error's address is loaded into one of the CPU registers. Lets find that string in the data section of this module and see where it is referenced from. I find this easier to do in IDA Pro's hex view. Mine was at offset 0x18000120E.



Now switch back to assembly view to see what references this offset. Hmmm.... that's weird, nothing references this offset.



So Insyde BIOS have several different supported languages. To optimize this, the compiler they used bunched all the different language strings together. So now only the first part of this bunch is referenced by any code, then a different variable determines where in this bunch to start displaying. So lets scroll up a bit until we see an address that is referenced. You'll know when you find one because there'll be blue text to its right showing the offsets of these calling function. After scrolling up about 50 - 100 bytes, I found it.



Normally we'd go to all the different calling location, but our work is a lot easier now since there's only one. Double click on the blue text to jump there. Lets see what calls this new function that we're now in. Right click on its name, and select Xrefs to. By examining the chart that popped up, we can see that this function is called directly by the entry point of this module.



How about we look at the entry point of this module. Double click on the DllEntryPoint in IDA Pro's function window. This function is pretty straight forward compared to most you'll see. Since I said before that this module will load the text prior to preforming the whitelist check, then lets see what functions are called after the one that loaded the text. Now it turns out that there are multiple ways of referencing functions is IA-64 assembly. One is to call it, another is to jump to it, and a third is to use the lea opcode. Lea stands for load affective address, which can be used to computer the address's expression then move a pointer to that value into a specified register. As it turns out, there are several lea commands used after loading the text. So here's all our possible options:



Lets eliminate some of the possibilities. The first call command is call qword ptr [rax+80h]. This means that it's calling the function at the offset of the value in the rax register plus 80 in hex. After working with Insyde BIOS for several months, I've determined that it'll do these types of calls to access functions in other modules. It is kind of difficult to follow where that call is going, so I'm not going to go into how to do that in this tutorial. Anyway, we know that the whitelist check happens in this module's code and not some other module's, so there is no need to see where that call goes to. Lets look at the second call function which calls 0x180000D08.



So this function has two lea commands and one call command before returning. The first lea command is to a null location, and the call command is calling a function in a different module. So potentially the second lea command is the only lead from this function that could be our whitelist. Lets check out what 0x180016A0 is.



This location is just data. So programs are broken up into a few different segments, but the main ones are the text segment and the data segments. The text contains the actual code that is run, and the data contains the data that is used by the code. If you don't know anything about assembly language, then I highly recommend you read this book. For any kind of software reverse engineering, you need to know the assembly language of the processor that your target application runs on. Since our BIOS run on Intel or Intel compatible processors, we should know IA-64 and IA-32 assembly. Otherwise this BIOS modding stuff will be pretty difficult. So go read that book. Back to the tutorial, so no whitelist being implemented here because it's in the data section.

So lets go back for the entry point to see what our remaining options are based on our assumptions and what we have checked:



So the whitelist happens in one of these four lea command. To accomplish this with lea, as opposed to a call or jump command, the function that it is referencing would have to contain an infinite loop. This way when the processor tries to load the affective address of the result of that function, it will get stuck in an infinite loop and never be able to finish. So lets check out the parameters of each of the lea commands so that we can eliminate more choices.


So now there's just two possible choices. Lets choose 0x1800004A8 because it's referenced first. Remember we're looking for an infinite loop, so if we don't find any in this function, or any in the functions that it leads to, then this isn't the one we're looking for.



Based off of what we can see in IDA Pro's graph view, we can see there's now infinite loops. Also after looking though all the functions that it leads to, I can confirm that there are no infinite loops in this function. Lets check out our final option based on what we've eliminated I down to. Our last hope is the function at address 0x1800003E8. Here's the entire function so we can better see it:



And as expected, there is an infinite loop. So one of the functions it calls before the jnz statement must compare our WIFI card's UUID to a whitelist, and it moves a non-zero value into al if it fails the check. The test assembly command will set the zero flag if its two parameters are both equal to zero. Since we we're trying to use a WIFI card that wasn't in the list, we were send down the branch with an infinite loop at the bottom. Lucky for use because we were kind of out of options after this function.

So as the picture says, lets avoid that branch. This will avoid the infinite loop altogether. Lets change that from a jump if not zero to an unconditional jump, jnz to jmp. That was it'll always go to the branch at offset 0x1800004A0. So the hex values for that jump are 0F 85 9A 00 00 00. The first two bytes are the type of jump, the reset are the jump location. The hex value for an unconditional jump is E9. That's only one byte, so we also need a no operation, 90, in there. So the resulting jump will be 90 E9 9A 00 00 00. Go into IDA Pro's hex view, right click and select edit, apply changed, then right click and press commit changes. IDA Pro doesn't actually write these changes to the original file, so we'll have to do that later with a hex editor. Here's the actual changes:



Now the function looks like this, and it successfully avoid the infinite loop. Whitelist finally removed!



Now lets apply these patches to the file. This next part is the same as in my previous tutorials. I hope you guys don't mind that I'm just going to just copy and paste it. Produce a DIF file in IDA Pro by going to File | Produce file | Create DIF file. I recommend you don't save it in the DUMP folder because it will most likely be deleted by Andy's tool at some point. A DIF file contains the offsets and changes that we made in IDA Pro. IDA Pro can't physically edit a file, so we have to use the information in the DIF file and a hex editor to apply the changes. You can close IDA Pro now. Before actually applying the changes with a hex editor, go back to Andy's tool and press the Advanced button. We want to enable the ability to make modifications to the modules. So these are the settings I changed. I also checked No SLIC because otherwise we would have to select a SLIC table in order to repack our changes. I'm fine with my BIOS current SLIC table.



Press Done to get back to the main screen of Andy's tool. Then press the Go button. When this message comes up, don't press Ok yet.



We need to modify the setup utility module first. So open the same file we disassembled with a hex editor and apply the changes based on what the DIF file says.



Save the file. Now you can press Ok on the message from Andy's tool, and it should repack your BIOS with your modified module. Lets try it out. Rename Andy's tool's outputted file, mine's named 01448F13_SLIC.bin, to what the original rom was called, mine's 01448F13.bin. This'll replace the original rom with the modified one. Now run InsydeFlash.exe. Press Start, wait for it to initialize, then press Ok. It will now flash your computer with you modified BIOS then restart. Now you can install any WIFI card you want without getting an error while booting.

I though I'd squeeze in a little bit more about the WWAN whitelist since we're already in this mind set. Now this same procedure was almost identically for removing the WWAN whitelist. If you want to remove this, then search for the string, 105-Unsupported wireless broadband device detected, in your DXE Core module. My WWAN whitelist ended up being implemented in my BiosLockUsb module whose GUID was 7FA4AE0A-1404-4DCC-BE28-CE58029CF5D1. I preformed the same methods of finding an infinite loop and avoiding it. Even though I can't personally confirm that this does remove the WWAN whitelist, I would assume that it does.

I do try to make these tutorials as generic as possible, but that usually fails because no two BIOS are exactly alike. Because of this, I purposefully went to every incorrect function before finding the one that actually implements the whitelist. I wanted you guys to see more useful ways to approach disassembled code, and hopefully these techniques will help you remove the whitelists from your BIOS. Hope you enjoyed this tutorial.

另:
我根据此方法修改G4系列,实测有效,修改模块为 StartUpMenu module,修改后刷新时要使用破解后的去RSA验证的刷新程序,具体修改方法参考另外一帖


1

查看全部评分

Rank: 7Rank: 7Rank: 7

UID
4091321
帖子
868
PB币
267
贡献
0
技术
0
活跃
1917
沙发
发表于 2013-9-23 09:48:21 IP属地四川 |只看该作者
内容很好,就是图挂了

Rank: 2Rank: 2

UID
232830
帖子
217
PB币
1078
贡献
0
技术
0
活跃
447
板凳
发表于 2013-9-23 22:37:06 IP属地内蒙古 |只看该作者
xieuestc 发表于 2013-9-23 09:48
内容很好,就是图挂了

番(你懂的)蔷就能看到图了

Rank: 1

UID
399868
帖子
36
PB币
276
贡献
0
技术
0
活跃
31
4F
发表于 2013-10-22 23:22:10 IP属地重庆 |只看该作者
改bios 这个动作可不小啊

Rank: 1

UID
2252360
帖子
17
PB币
10
贡献
0
技术
0
活跃
6
5F
发表于 2013-11-21 15:48:58 IP属地江苏 |只看该作者
谁能翻译一下。。。正需要

Rank: 1

UID
4210818
帖子
48
PB币
8
贡献
0
技术
0
活跃
122
6F
发表于 2014-1-13 23:23:02 IP属地天津 来自手机 |只看该作者
楼主你可以写篇教程吗?这个英文有的不明白,而且图挂了。正好我的g4本本也想刷

Rank: 1

UID
4361845
帖子
11
PB币
66
贡献
0
技术
0
活跃
2
7F
发表于 2014-1-14 10:50:23 IP属地重庆 |只看该作者
表示看不懂

UID
835209
帖子
1905
PB币
5147
贡献
0
技术
1124
活跃
773

Win10先驱者 7周年庆典勋章 评测勋章 8周年庆典勋章

8F
发表于 2014-2-1 10:39:40 IP属地重庆 |只看该作者
LZ附上原文链接吧,你帖子链接全部失效

Rank: 2Rank: 2

UID
4395832
帖子
56
PB币
129
贡献
0
技术
0
活跃
33
9F
发表于 2014-2-3 15:16:47 IP属地山西 |只看该作者
谢谢楼主分享,支持你!

Rank: 2Rank: 2

UID
4395832
帖子
56
PB币
129
贡献
0
技术
0
活跃
33
10F
发表于 2014-2-3 15:17:04 IP属地山西 |只看该作者
谢谢楼主分享,支持你!

技师

Rank: 7Rank: 7Rank: 7

UID
1630746
帖子
2241
PB币
9265
贡献
0
技术
30
活跃
781
11F
发表于 2014-2-18 21:41:06 IP属地上海 |只看该作者
感谢分享,可惜不懂洋文,又没图看

Rank: 1

UID
4415710
帖子
5
PB币
42
贡献
0
技术
0
活跃
6
12F
发表于 2014-2-19 07:51:29 IP属地黑龙江 |只看该作者
看不明白啊!!!!!!!!!1

Rank: 1

UID
3289567
帖子
21
PB币
59
贡献
0
技术
0
活跃
25
13F
发表于 2014-2-25 09:46:37 IP属地江苏 |只看该作者
楼主你可以写篇教程吗?这个英文有的不明白,而且图挂了

Rank: 2Rank: 2

UID
2223192
帖子
266
PB币
0
贡献
0
技术
0
活跃
179
14F
发表于 2014-3-4 09:00:13 IP属地北京 |只看该作者
谢谢好东西
头像被屏蔽

Rank: 5Rank: 5Rank: 5

UID
49506
帖子
755
PB币
0
贡献
0
技术
0
活跃
331
15F
发表于 2014-4-15 22:02:32 IP属地四川 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

少将

Rank: 2Rank: 2

UID
4487316
帖子
68
PB币
263
贡献
0
技术
0
活跃
88
16F
发表于 2014-4-20 22:51:55 IP属地海南 |只看该作者
本帖最后由 piaoyghai 于 2014-4-29 11:03 编辑

看不懂,我的8440p也想要去白名单,谁有中文教程

Rank: 2Rank: 2

UID
799978
帖子
368
PB币
664
贡献
0
技术
4
活跃
714
17F
发表于 2014-5-8 21:53:47 IP属地福建 |只看该作者

谁能翻译一下。正需要  我的8710W 8760W也需要白名单啊

Rank: 2Rank: 2

UID
4161646
帖子
170
PB币
369
贡献
0
技术
0
活跃
358
18F
发表于 2014-5-16 09:44:04 IP属地江西 |只看该作者
本帖最后由 惠普爱好者 于 2014-5-16 20:05 编辑

这个是翻译

捕获26.3.PNG 捕获26.1.PNG 捕获24.PNG 捕获22.PNG 捕获20.PNG 捕获18.PNG 捕获16.PNG 捕获15.2.PNG 捕获13.PNG 捕获13.1.PNG 捕获11.PNG 捕获8.PNG 捕获6.PNG 捕获4.PNG 捕获2.PNG 捕获2.1.PNG 捕获26.2.PNG 捕获25.1.PNG 捕获23.PNG 捕获21.PNG 捕获19.PNG 捕获17.PNG 捕获15.PNG 捕获14.PNG 捕获13.2.PNG 捕获12.PNG 捕获7.PNG 捕获5.PNG 捕获3.PNG 捕获2.2.PNG 捕获1.PNG

捕获9.PNG (16.05 KB, 下载次数: 37)

捕获9.PNG

Rank: 5Rank: 5Rank: 5

UID
39883
帖子
814
PB币
4778
贡献
0
技术
13
活跃
886
19F
发表于 2014-5-25 17:10:32 IP属地辽宁 |只看该作者
刷 BIOS 有风险,操作须谨慎

点评

maoyang  赞,有感  发表于 2014-7-31 11:23 IP属地北京

Rank: 2Rank: 2

UID
3093641
帖子
193
PB币
0
贡献
0
技术
1
活跃
111
20F
发表于 2014-6-1 14:58:44 IP属地安徽 |只看该作者
英文看不懂啊
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛