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)