Re: Вызов функции, перехваченной на уровне SDT
От: -prus-  
Дата: 23.12.10 11:50
Оценка:
Здравствуйте, idiMAN, Вы писали:

MAN>Каким образом можно вызвать функцию NtCreateThread, если её перехватил другой процесс путём подмены её адреса в SYSTEM_SERVICE_TABLE?


Если идти по принципу наименьшего сопротивления, то попробую изложу свои мысли...

Насколько мне известно, все оригинальные адреса функций в SDT статичны, но эти адреса разные в разных ОС и сервис паках.
Например, для WinXP SP2 x86 NtCreateThread имеет оригинальный адрес 0x805cf804.

nt!NtCreateThread:
805cf804 6a28 push 28h
805cf806 68b0a84d80 push offset nt!ObWatchHandles+0x674 (804da8b0)
...
...

Идея в том, чтобы на чистой машине с нужной ОС, где хуки отсутствуют, посмотреть оригинальные адреса SDT, например, с помощью WinGdb или Rootkit Unhooker'a,
потом либо восстановить оригинальный адрес на хукнутой ОС и вызвать нужную функцию, либо напрямую, зная оригинальный адрес, вызвать функцию, положив в стек нужные параметры.

В теории как-то так...
С уважением,
Евгений
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.