我有一台联想 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;
}
关于我应该如何进行,您有什么想法吗,希望不会把整个事情搞砸?