我有一个只允许安装某些硬件的联想 Thinkpad。如果连接的硬件不在白名单上,BIOS 会告诉您删除它并重新启动。否则机器将无法启动。现在我想安装一个未经授权的wifi+蓝牙模块,所以我需要摆脱那个白名单。
我一直在关注本指南,直到作者建议使用 IDA pro 软件,我不想仅仅为了这个黑客而购买它。
相反,我在 Ghidra 中对提取的主体进行了一些尝试,并设法找到了“检测到未经授权的网卡 ...”字符串的十六进制代码,并发现该字符串是某个名为“ DAT_000104d0",并且该实体被引用的唯一地方是以下函数:
void FUN_00010ec4(undefined8 param_1,undefined *param_2,undefined8 param_3,undefined8 param_4)
{
if (param_2 == (undefined *)0x0) {
param_2 = &DAT_00010ec0;
}
(**(code **)(DAT_00011040 + 0x170))(0x200,param_1,param_2,param_3,&DAT_000104d0,param_4);
return;
}
依次从这里调用该函数:
longlong entry(undefined8 param_1,longlong param_2)
{
longlong lVar1;
undefined8 local_res18;
undefined8 *local_res20;
undefined local_18 [24];
FUN_00010f08(param_1,param_2);
lVar1 = (**(code **)(DAT_00011040 + 0x140))(&LAB_00010480,0,&DAT_00011058);
if (-1 < lVar1) {
lVar1 = (**(code **)(DAT_00011040 + 0x140))(&LAB_00010410,0,&DAT_00011070);
if (-1 < lVar1) {
lVar1 = (**(code **)(DAT_00011040 + 0x140))(&DAT_000103f0,0,&DAT_00011078);
if (-1 < lVar1) {
lVar1 = (**(code **)(DAT_00011040 + 0x140))(&LAB_00010460,0);
if (-1 < lVar1) {
DAT_00011060 = *local_res20;
local_res18 = 0;
_DAT_00011068 = &LAB_00010b54;
(**(code **)(DAT_00011040 + 0x80))(&local_res18,&DAT_000103d0,0,&DAT_00011068);
DAT_00011028 = local_res18;
FUN_00010ec4(0x10,FUN_00010cf8,0,local_18);
lVar1 = 0;
}
}
}
}
return lVar1;
}
关于我应该如何进行的任何想法,希望不会弄乱整个事情?
我已经在这里上传了完整的 bios img 和提取的身体,如果有人想看看的话。
编辑:我通过谷歌搜索使用了一种解决方法,最终找到了我实验性使用的提取主体的修改版本,并且它有效。我用谷歌搜索的是(我认为)BIOS 那部分的名称。在中型指南的示例中,它将是 11D37... 但是,对于您的设备,这个数字会有所不同,我不能保证您的设备会有这样的文件,或者它会起作用。只需确保在多个位置多次备份您的原始 BIOS,这样您就可以再次刷新它。