Особенности дизассемблирования под LINUX на примере tiny-crackme


         

Исследование tiny-crackme извне и изнутри - часть 9


LOAD:00200136 aSuccessCongrat db '-> Success !! Congratulations...',0Ah

LOAD:00200136                                   ; DATA XREF: start+C9o

LOAD:00200136        db '  -> You can send me yr solution/comments at the above mai'

LOAD:00200136        db 'l addr...',0Ah,0

LOAD:0020019E unk_20019E db 0FAh ; ·             ; DATA XREF: start+5Bo

Листинг 8 дизассемблированный листинг после расшифровки скриптом

Совсем другое дело! Наконец-то мы получили читабельный код, в конце которого просматриваются текстовые строки "Wrong password, sorry" и " Success !! Congratulations..." с перекрестными ссылками возле них. Перекрестная ссылка это то, что начинается с префикса "XREF" (cross reference). Это мощное оружие против защиты, ведущее прямо в сердце защитного механизма. В частности, чтобы увидеть какой код выводит сообщение о неправильном пароле достаточно перейти по перекрестной ссылке к строке "loc_2000B9". Суффикс "o" в конце обозначает "offset", то есть смещение. Это говорит о том, что данная строка адресуется по ее смещению, то есть мы имеем дело с указателем.

На самом деле, в окрестностях строки 2000B9h нет и не может быть ничего интересного. Тот код просто выводит сообщение "wrong password" на экран. Правосудие уже свершилось! Карающая рука Немезиды находится совсем в другом месте. В каком? Мы видим что рядом со строкой 2000B9h имеется еще одна перекрестная ссылка, ведущая к метке "start+C7j". Суффикс 'j' подразумевает jump, то есть прыжок. Это уже интереснее! Возможно, здесь-то и кроется тот самый заветный условный переход, который решает wrong'ли этот пароль или нет. Подводим курсор к перекрестной ссылке и нажимаем ENTER, IDA автоматически переносит нас на нужное место к строке 2000СFh. Что ж, все вполне логично, функция start расположена по адресу 200008h, а 200008h + C7h = 2000СFh.

LOAD:002000CC        pop    ebx                  ; CODE XREF: start:loc_200099^j




Содержание  Назад  Вперед