绕过联想 BIOS 中的 Wifi 白名单

绕过联想 BIOS 中的 Wifi 白名单

我有一台联想 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;
}

关于我应该如何进行,您有什么想法吗,希望不会把整个事情搞砸?

相关内容