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


         

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


Точка входа (start), расположенная по адресу 200008h, выглядит нетипично и сразу же притягивает к себе внимание. Нормальные ELF-файлы начинаются с адреса 08048000h или около того (см. статью "секреты покорения эльфов"), а этот… разлегся понимаешь, в области стека и лежит себе. Ну и пускай лежит! Он же никому не мешает! Такой прием вполне законен и все нормально работает. Отладчики это, похоже, ничуть не смущает, да и дизассемблеры тоже. Это совсем не антиотладочный прием, а просто хитрый выкрутас хакера типа "выпендреж". Ладно, идем дальше.

Выполнение программы начинается с команды "mov bl,2A", загоняющий в регистр BL значение 2Ah. Нигде по ходу программы оно не используется, так что это явный мусор. Или… все-таки нет? В ASCII-представлении команда выглядит как "¦*" (мячик отскакивающей от стены?) и возможно внесена умышлено, но вот расшифровать ее смысл (если, конечно, допустить, что он есть) мыщъху так и не удалось, поэтому он (и мы вместе с ним) через серию прыжков типа jmp loc_200040 à jmp loc_200046 à call sub_2002F0 добирается до "заветной" процедуры sub_2002F0. Это практически единственная процедура в программе, а все остальное содержимое, как легко видеть, зашифровано. Логично предположить, что это и есть расшифровщик!

Расшифровка кода в дизассемблере всегда представляла большую проблему. Дизассемблер не может дизассемблировать упакованный/зашифрованный код и его надо как-то расшифровать. А как это сделать? Одни хакеры предпочитают снимать с работающей программы дамп, другие — создают специальный скрипт, расшифровывающий файл прямо в дизассемблере. Первый путь проще, второй — надежнее. Если программа использует различные антиотладочные приемы, она сможет подсунуть нам испорченный дамп, если вообще позволит дотронуться до него. Лучше расшифруем программу вручную, заодно познакомившись со скриптами IDA Pro, но для этого нам потребуется проанализировать алгоритм работы процедуры расшифровщики. Это легко!




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