Набор статей и руководств по дизассемблеру IDA


Ida.key



000000F0 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF ............................


0000010C FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF ............................


00000128 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF ............................


00000144 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF ............................

Можно удалить и другие байты, попытайтесь сделать это в качестве упражнения.

В результате, несмотря на удаление всей шифрованной регистрационной информации, IDA 4.01 тем не менее продолжает нормально работать и не показывает ее больше нигде, в том числе *.ASM и *.LST, а встроенная в IBD базы лицензия больше не воспроизводится.

ОДНАКО, осталась еще небольшая проблема. Начните декомпилировать большую программу.  Сначала все идет хорошо, но в конце работа прерывается сообщением, что "программа превысила допустимые пределы" (execution flows beyond limits) или ему подобным.  Но если вы возвратите исходный неисправленный ida.key, то все заканчивается нормально.  Что же случилось?

Вернем нормальный ключ в директорию IDA.  По окончании процедуры декомпиляции существует последняя проверка целостности ключа, одна из тех, которые трудно обнаружить.  Как я сам нашел ее?  Я проследил программу до следующего фрагмента:

001B:10077848  E83B020000        CALL    10077A88


001B:1007784D  85C0              TEST    EAX,EAX  <-- остановимся здесь


001B:1007784F  7C09              JL      1007785A <-- исправить на 'nop'


001B:10077851  0FBE4610          MOVSX   EAX,BYTE PTR [ESI+10]

Если установить в этом фрагменте прерывание 'bpmb 1b:10077848 x' и загрузить idag.exe, то до момента окончания процедуры декомпиляции это прерывание произойдет 5 раз.  По окончании выполните команду 'd esi' и увидите в окне данных расшифрованную регистрационную информацию в виде "= имя, дата, ...мусор...".  Если теперь в памяти изменить лицензионные данные на что-либо еще, то в конце второй попытки декомпиляции возникнет та самая ошибка.

Проверка происходит именно здесь - в расшифрованном ключе.  Да, мы исправили код IDA, однако, регистрационная информация хранится в памяти и используется повторно.  Если Вы хотите все сделать самостоятельно, то запаситесь временем и терпением, эта информация копируется в памяти из области в область (около 300 раз!), прежде чем будет проверена.  Вам придется ставить контрольные точки 'bpmb' в памяти на регистрационную запись и удалять их, как только эти данные будут скопированы в новое место.  Я использовал другие хитрости, здесь не описанные, однако, если Вы терпеливы, то и этот метод прекрасно срабатывает.  В конце концов мы оказываемся в участке кода IDA.WLL, где регистрационная информация уже больше никуда не копируется и где происходит ее окончательная проверка.

0008:10013318 53                 PUSH    EBX




Начало  Назад  Вперед