Re: самомодифицирующийся код?

From
Arthur Vartanov ()
To
Vasily Nikishaev
Date
2002-10-07T18:34:53Z
Area
SU.WINDOWS.NT.PROG
From: "Arthur Vartanov" <arvar@penza.net>

Hello, Vasily!
You wrote to All on Sat, 05 Oct 2002 09:57:11 +0400:

 VN> Я посмотрел этот Detours. Он работает по принципу замещения первых
 VN> пяти байт API-функций на код безусловного перехода на свой
 VN> обработчик.

Плохо ты смотрел. Невнимательно :)
Он не просто замещает первые 5 байт. Он работает примерно по такому
алгоритму:
1. Дизассемблируем начало функции и определяем количество команд процессора,
чтобы их размер был не иеньше 5 байт (например, 6 :)
2. Копируем эти команды в другой кусок памяти (они называют его "батутом"-
trampoline). В конец этого куска добавлем jmp на первую нескопированную
команду.

После шагов 1 и 2 получили "второй вход" в функцию.

3. Заменяем первые 5 байт на jmp перехватчика.

Теперь, чтобы из своего перехватчика вызвать оригинальную функцию,
достаточно вызвать "батут".

 Sincerely, Arthur.  E-mail: arvar@penza.net


--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)