Методика отключения проверки OTP IMEI на примере прошивки T610

Задача: Отключить проверку соответствия IMEI в OTP и установленного IMEI.

Инструменты:

 

Начнем.

Загрузив прошивку уже конвертированную в BIN формат в IDA Pro и дизассемблировав её многие, наверное, заметили, что существуют переходы на адреса 3F0006, 3F0008 и т.д. Но никаких процедур или функций по этим адресам нет. Их и не должно быть, так как область памяти с 3F0000 по 400000 это RAM которая эмулирует FLASH, а все процедуры и функции по этим адресам формируются (т.е. записываются) при старте прошивки. Поэтому считав данную область прошивки setool`ом мы ничего не увидим. Этот ход со стороны Sony- Ericsson был сделан, что бы защитить куски кода отвечающие за всяческие проверки, в том числе и OTP IMEI.

Не буду ходить вокруг да около, а сразу перейду к делу.
Для того чтобы найти место где проверяется OTP IMEI необходимо найти следующие строки

95FF 001C call unk_3F001C
97E8 sbiw r28, 0x38 ; '8'

Для этого в IDA Pro необходимо нажать ALT+ B и ввести для поиска следующую строку 95 FF 001 C 97 E8 поставив при этом галочку “ Find all occurences”


Через некоторое время IDA Pro отрапортует следующим диалогом:

Из которого видно, что IDA Pro нашла всего одно место в прошивке с необходимыми строками. Перейдем на найденный адрес путем двойного щелчка мышки на найденной строке. Мы увидим следующую картинку :

Зеленым цветом я выделил строки которые мы искали. Но нас интересуют строки выделенные красным цветом. Рассмотрим поподробнее:

Команда rcall sub _862BC вызывает подпрограмму проверки IMEI и если совпадает с OTP IMEI, то в регистре R16 возвращается не нулевое значение. После этого команда tst r16 проверяет регистр r16 на предмет нулевого значения и если r16 содержит не ноль команда brne loc_86118 совершает переход по адресу 86118. Для отключения проверки совпадения необходимо заменить в прошивке по адресу 8610F (запомним его) команду tst r16 на команду clz, это делается для однозначного перехода по адресу 86118 независимо от содержания r16.

Для полного отключения проверки нам необходимо еще в одном месте пропатчить прошивку. Для этого прокручиваем листинг программы немного вниз, мы должны увидеть следующую картинку

Зеленным я отметил наш блок который мы искали и патчили в прошлый раз, желтым начало той самой процедуры которая вызывается в случае если IMEI совпадает с OTP IMEI, синим злосчастный кусок программы который инициализирует “Insert Correct Sim card”, а вот красным по адресу 8612E (запомним его тоже) команда перехода на злосчастный кусок. Нам необходимо убрать этот переход и обнулить флаг Z. Для этого заменяем rjmp loc _86114 на clz .

Итак мы определились, что на что и по каким адресам менять, теперь нам надо пропатчить прошивку. Для этого берем любой удобный для Вас HEX редактор и открываем в нем BIN файл (именно BIN, а не SBN), запускаем калькулятор WINDOWS`а и умножаем полученные адреса на 2 (это надо делать из-за того что в IDA Pro AVR прошивка имеет 2 байта по одному адресу).

Мы запомнили 2 адреса :

  1. 8610F
  2. 8612E

Считаем смещения в файле

  1. 8610F*2=10C21E
  2. 8612E*2=10C25C

 

Смотрим по этим адресам в HEX редакторе

Красным отмечены два байта команды tst r16, а зеленым команда перехода rjmp.

Меняем их на clz (98 94). После этого мы должны видить такую картинку.

 

Сохраняем патченную прошивку.

 

Могу Вас поздравить с прошивкой с отключенной проверкой OTP IMEI.

Осталось:

  1. Конвертировать полученный BIN файл в SBN с помощью BIN2SBN.
  2. Прошить телефон.
  3. Сделать Change IMEI.

© 2006
Яндекс.Метрика
Hosted by uCoz