Обход белого списка Lenovo B IOS - PullRequest
1 голос
/ 28 мая 2020

У меня есть Lenovo Thinkpad, на который можно установить только определенное оборудование. Если подключено оборудование, которого нет в белом списке, B IOS скажет вам удалить его и перезапустить. В противном случае машина не загрузится. Теперь я хочу установить неавторизованный модуль Wi-Fi + Bluetooth, поэтому мне нужно избавиться от этого белого списка.

Я следовал этому руководству до того момента, пока автор использование программного обеспечения 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;
}

Есть идеи, как мне действовать, надеюсь, не все испортить?

Я загрузил полную версию b ios img и извлеченное тело здесь , если кто хочет их посмотреть.

...