我正在尝试绕过或清除 Thinkpad T440p 上的 BIOS 白名单。到目前为止我已经
- 使用 flashrom 和 soic8 剪辑将 bios 转储到 bios.img 文件
- 再次转储并与
diff bios.img bios2.img
验证文件进行比较 - 使用 UEFITool 查找并提取包含字符串“Unauthorized network card ...”的相关部分作为 .efi 文件
- 使用 Ghidra 分析了该部分
- 在 Ghidra (FUN_00010ec4) 中找到一个包含所述字符串 (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;
}
可以在此处找到正文以及转储的 .img 。
现在我不知道该怎么办。我可以删除该行FUN_00010ec4(0x10,FUN_00010cf8,0,local_18);
并且该函数永远不会被调用,从而将我从白名单中释放出来吗?你认为还有什么其他可能性可以绕过它?
这是我第一次处理 BIOS 修改,我真的不想让我的笔记本电脑变砖。另外我很抱歉,如果我使用了错误的标签。我愿意接受更好的建议。