· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› IsDebuggerPresent, как запатчить или захучить?

Посл.отвђт Сообщенiе


Дата: Янв 20, 2004 21:41:49

Я попробовал пропатчить kernel32.dll но ясное дело патч действителен в пределах
этого процесса, как бы это проделать для всех процессов или захучить чтоб не
патчить?


Дата: Янв 20, 2004 21:59:31

А помнишь, я тебя просил помочь мне с WFP? Так вот, угадай, для чего я падчил ядро? :)
PEB заполняется в ядре. Поле PEB.BeingDebugged заполняется на основе поля EPROCESS.DebugPort. Надо чуть-чуть еще подумать - и тема пойдет в третью часть. Кстати, довольно скоро будет готова первая глава!


Дата: Янв 20, 2004 22:05:03

Приаттачиться на лету можно, и тогда в PEB.BeingDebugged нехорошее значение запишеться в другом месте, а не в коде создания процесса, надо ещё все места найти, где патчить.


Дата: Янв 20, 2004 22:06:54

Предположительно:

MiCreatePeb
NtSetInformationProcess

Спасибо Four-F и мне :)


Дата: Янв 20, 2004 22:38:43 · Поправил: Grenader

volodya
[оффтопик] кстати - не накопал ли ты часом, как можно избавиться от WFP? я способов не вижу приемлимых пока...


Дата: Янв 20, 2004 23:31:04

Grenader

Поиск по форуму - приемлимый способ есть. Мой же пост о WIndows File Protection.


Дата: Янв 21, 2004 01:02:24

Я вобщем-то придумал для себя решение, так как на все процессы это осуществить не получается, то нужно захучить CreateProcessA и от него плясать, по крайней мере мой целевой процесс будет пропатчен!


Дата: Янв 25, 2004 09:32:11

Ну, тут ты не совсем прав.Это только лишь под winnt.
Что касается win9x то kernel32.dll находится в Shared Memory. Это значит, что код отбражается на все контексты. Все произошедшие там изменения автоматически будут видны всем предложениям. Под Winnt если процесс пытается писать в защищённую память(в кодовый сегмент при наличии соответствующих привелегий) срабатывает некий механизм, называемый "копирование при записи". Механизм заключается в следующем: при попытке писать в память возникает исключение, обработчик которого выделяет кусок памяти и переписывает туда ту страницу, в которую пытались до этого писать. Далее эта страничка отображается на контекст процесса и производится запись в неё. Механизм используется windows nt и юниксами в целях защиты и экономии памяти. Для того, что бы изменения произошли одновременно во всех контекстах покапайся в msdn, там я видел соответствующие функции. Под win9x проканает и так, только перед записью вызови _Page_Modify_Permissions через драйвер или Kernel32!Ord_0001 (VMMCall). Дерзай.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.117