2

我有一个只允许安装某些硬件的联想 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,这样您就可以再次刷新它。

4

0 回答 0