RE:самомодифицирующийся код?
- From
- Kirill Neznamov (2:5025/32.88)
- To
- Ilya Rudakov
- Date
- 2002-09-27T23:33:06Z
- Area
- SU.WINDOWS.NT.PROG
Am 24 Sep 02 22:05:49 schrieb Ilya Rudakov an Kirill Neznamov zum Thema
<б ┐R┐R¤ЁдЁжЁагойЁcбп ЄR¤?>
[skipped]
IR> Не усе. Получится, что перехватываем не вызовы kernel32 а вызовы Native
IR> API, т.е. системных сервисов, что не есть одно и тоже. Плюс еще
IR> необходимо учитывать, что индексы в таблице для различных версии ОС
IR> отнюдь не всегда совпадают.
IR> А если прямо так уж хочется перехватить вызовы системных сервисов, то
IR> проще драйвер написать. В качестве примера можно использовать regmon
IR> Руссиновича...
Если хочешь kernel32.dll все еще проще. Я кстати сначала перехватил CreateFile
из kernel32.dll вместо zwCreateFile из ntdll.dll из-за чего и почитал немного Руссиновича о KDT:) . А сначала я делал так: алгоритм тот же только в конце немного по другому - выясняешь адрес нужной функции, впихиваешь туда обычный jmp на свой перехватчик который находится в пустотах kernel32.dll. Делаешь че те надо затем востанавливаешь состояния регистров после выхода из своего обработчика. Кста переход обратно на старый обработчик CreateFile тоже я делал джампом(не помню из-за чего но с call'ом возиться не стал). Для того чтобы правильно определить image base kernel32.dll тебе надо ручками разбирать PE заголовок, а чтобы определить адреса функций - таблицу экспорта. Зато на разных системах работать будет(в пределах конечно nt5 :) ).
Конечно писать драйвер правильней но если хочется извратиться то кто мешает? :)
IR> [Delphi - гадость] [Задолбали слюниксоиды!!!]
^^^^^^^^^^^^^^^^^^^^^^^^^^
Вот я этим я полностью согласен!
WBR,
KiR
--- F.I.P.S./32 v1.0r W95/NT [M]
* Origin: Придумай его сам. (2:5025/32.88)