Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Установка прерывания на точку входа в программу

Обсудить статью на форуме

Хорошая подборка видеоуроков, инструментов крэкера, книг и статей - здесь.

Автор: Alexey <alexey@ugres-i.gpce.db.energy.gov.ua>

В сентябре 2004-го года я разместил на сайте свою статью "Что за ASProtect ?", а вот сейчас хочу рассказать, как я устанавливаю прерывание на точку входа в программу. В нескольких статьях я встречал описание того, как это делается. Сначала нужно определить адрес точки входа по записи в заголовке файла, запомнить содержание ячейки по этому адресу, затем при помощи какого-нибудь редактора сделать врезку по этому адресу - записать int 3, затем запустить программу и когда SoftIce перехватит программу, восстановить содержимое ячейки. Как говорил один известный персонаж: "Хлопотно это!" :)
Я применяю другой способ - может кому то он покажется проще. Нужно войти в SoftIce и записать такую директиву: bpx isdbcsleadbyte+05e3. После этого выйти из SoftIce и можно запускать программу. SoftIce перехватит исполнение кода в точке вызова подпрограммы. В эту подпрограмму нужно ВОЙТИ по F8 и далее, "прошагав" несколько адресов по F10, дойти до инструкции JMP EAX. Это и есть переход на точку входа в программу, поскольку в EAX адрес точки входа. Вот, например, что показывает SoftIce при перехвате точки входа в Notepad:

Адрес, по которому происходит прерывание.
017f:bff8b55b call bff74319 //здесь нужно войти по F8

Сюда вошли с предыдущего адреса.
017f:bff74319 cmp eax,80000000
017f:bff7431e jae bff74335
017f:bff74320 btr word ptr fs:[0000001c],01
017f:bff7432a jae bff74335
017f:bff7432c pushfd
017f:bff7432d or dword ptr[esp],00000100
017f:bff74334 popfd
017f:bff74335 jmp eax //здесь переход на точку входа в программу.

Конечно, каждый раз записывать такую абракадабру - в напряг. Поэтому я назначил для этой директивы "короткую клавишу" по AF6. Для этого в Symbol Loader’e в закладке Keyboard Mappings, нужно записать:
AF6=^bpx isdbcsleadbyte+05e3;
Понятно, что можно назначить и другую комбинацию клавиш - дело вкуса.
Теперь, чтобы перехватить исполнение программы, нужно войти в SoftIce, нажав Alt+F6, установить прерывание, выйти из SoftIce и можно запускать программу. Есть одна небольшая фишка: при запуске программы из-под винды перехватывается сразу программа, а если запускать программу из-под оболочки (не всякой), то сначала перехватится исполнение оболочки, а следующим ходом уже сама программа. В этом случае при первом перехвате нужно просто "протолкнуть" исполнение до следующего перехвата.

С уважением, Алексей.

Обсуждение статьи: Установка прерывания на точку входа в программу >>>


Комментарии к статье: Установка прерывания на точку входа в программу

Godness 19.06.2005 16:09:56
Забавно, только скажи под какой это у тебя системой работает то? У меня под XP SP1 бряк bpx isdbcsleadbyte+05e3 оказывается в KERNEL32!:FindNextFileW и соответственно ни хЭ не работает...
---
Godness 19.06.2005 16:12:32
Хотя идея неплохая, надо будет найти такой фикус и для моей ХР, а то внатуре int3 ставить подзае... :)
---
Archer 20.06.2005 18:18:26
Под ХР СП2 бряк встаёт в кернел, причем на что-то типа badoffset. Ну, понятно, не пашет.
---
bi0w0rM 20.06.2005 19:55:14
да уже по системным адресам можно догадаться, что всё это только в win98 работать будет.
статья плоха тем, что автор не объяснил, как нашел смещение 5e3. а ставить 98 и узнавать, что там находиться, чтоб применить эту технику в XP, я не буду.
никакого исследования здесь короче...
---

Материалы находятся на сайте https://exelab.ru



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS