LOAD:0020009C loc_20009C: ; CODE XREF: start:loc_200099^j
LOAD:0020009C push ebx ; сохранить ebx
в стеке
Листинг 11 что за бикфордов шнур?!
А чему равен сам EBX? Ответ дает очередная перекрестная ссылка ведущая нас к следующему коду:
LOAD:0020007B mov edx, 1
LOAD:00200080 int 80h ; LINUX - sys_ptrace
LOAD:00200082 sub ebx, eax ; анализ возвращенного значения
LOAD:00200084 test eax, eax ; отладчик обнаружен?
LOAD:00200086 jz short loc_200099 ; -> отладчика нет, все чисто
Листинг 12 то был бикфордов шнур, а это динамит
Вот оно! Системный вызов sys_ptrace! Оказывается, что наш условный переход в строке 2000CFh проверял совсем не пароль, а… наличие отладчика (программа которая уже отлаживается не может вызывать ptrace, сказанное, разумеется, распространяется только на те отладчики, что работают через ptrace). Но это не совсем так. Точнее, совсем не так. Как только отладчик напарывается на условный переход 200086h, на экран выводится разочаровывающее сообщение "Sorry but the process seems to be trace" ("извините, но процесс похоже трассируется") и до "нашего" условного перехода 2000CFh дело просто не доходит!
На самом деле, создатель кряксима применил довольно хитрый трюк. Условный переход 2000CFh не контролирует ни правильность пароля, ни наличие отладчика. Он вставлен просто как приманка. Мина-ловушка. Кто пытается его хакнуть, тот взрывается.
Таким образом, чтобы взломать программу необходимо изменить всего один условный переход по адресу 2000B7h.
Условный переход 2000CFh трогать не нужно! Поскольку мы уже тронули его, нам надлежит вернуть все на место, заменив ханутое 85h на 84h. Сохраняем изменения по <F2>, выходим из hex-редактора и… Неужели на этот раз сработает?!
Рисунок 8 взлом завершен
Да! Это работает!!! Невероятно! У нас получилось! Программа воспринимает любые вводимые пароли как правильные, выводя победоносную надпись "Success!! Congratulations" на экран! Открываем свежее пиво и отрываем у мыщъха хвост. Теперь мы будет работать только клавиатурой!
Все это долго описывать, но быстро ломать. Чтобы захачить программу мыщъх'у потребовалось чуть больше десяти минут да и те ушли в основном на тормоза виртуальной LINUX-машины под не самым быстрым P-III 733. В живой природе все происходит еще быстрее.