|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Сен 22, 2004 16:58:21 Hook функций в драйвере не из SDT Всем привет Помогите пожалуйста с хуками в дровах. В принципе нужно только RtlClearBits обработать и скорее всего в системном потоке. Заранее спасибо |
|
|
Дата: Сен 22, 2004 18:33:05 Очень примерно, но это будет так(один из вариантов). У меня так куча хуков, но чуть по-сложнее. За какие-то ошибки не ругать-писал принцип. .. myaddr offset hookfunction myaddr_j dw 025FFh myaddr_r dd offset myaddr mydump_1 dw ? mydump_2 dd ? ... .code ... lea esi,RtlClearBits@12 mov eax,dword ptr [esi] cmp eax,signature_4b jnz exit_bad movzx ax,word ptr [esi+4] cmp ax,signature_2b jnz exit_bad ;it's Ok mov ebx,esi mov edi,offset mydump_1 mov ecx,6 cld rep movsb mov edi,ebx mov esi,offset myaddr_j mov ecx,6 rep movsb .. .. .. hookfunction proc pushfd pusha ..... popa popfd jmp [mydump_2] hookfunction endp |
|
|
Дата: Сен 23, 2004 02:16:56 VOOrDOOluck, дизасмни DebugView от sysinternals.com, да посмотри. Там хучится DbgPrint и, небось, всё грамотно сделано. |
|
|
Дата: Сен 27, 2004 17:45:00 Four-F Всего то и делов.Рановато для меня такое.Я себе больше проблем создам.Насчет грамотности не сомневаюся (filemon & regmon это просто офигенее). Тут нашел пример хука (from rootkit)на asm/с.Принцип как и везде (jmp)но даже для меня далекого от asm вполне понятно и очень удобно. Всем спасибо за внимание _850265505__hook_example.c |
|
|
Дата: Сен 28, 2004 15:02:58 Нужно ещё добавить рамапинг, ибо точка входа хукаемой функции запросто может находится на read-only памяти.
VOID
RemapDbgPrint(
VOID
)
{
PMDL pMdl;
pMdl = MmCreateMdl( NULL, g_pfnDbgPrint, PAGE_SIZE );
MmBuildMdlForNonPagedPool( pMdl );
g_pfnDbgPrint = MmMapLockedPages( pMdl, KernelMode );
}
call RemapDbgPrint
mov ecx, pfnDbgPrint
mov word ptr [ecx], 25FFh
mov dword ptr [ecx+2], offset DbgPrintHook
|
|
|
Дата: Сен 28, 2004 16:41:46 Four-F g_pfnDbgPrint- это указатель на функцию? Пару вопросов Как правильно хучить DbgPrint.Я на скорую руку попробовал но там фигня выходила из за параметров (LPCSTR ddd,...) Как это троеточие правильно обработать И еще.В примерах хуков (через длл) для хука функции из длл нужно делать подмену для получения результата в конкретном просеце или во всех.Почему из драйверов один хук контролирует все процесы.Ведь сам хук ставится в system контексте то какое отношение к нему имеют другие просецы, функции которых вызываются не из контекста system. |
|
|
Дата: Сен 28, 2004 18:34:10 [ VOOrDOOluck: Как правильно хучить DbgPrint.Я на скорую руку попробовал но там фигня выходила из за параметров (LPCSTR ddd,...) ] Наверное, также как это делает DbgPrint, wsprintf и т.п. - парсить форматную строку и считать '%'. Сколько этих плюшек, столько и параметров после LPCSTR. А можно заглянуть за вызов DbgPrint и посмотреть сколько DWORD'ов со стека убирается. [ VOOrDOOluck: И еще.В примерах хуков (через длл) для хука функции из длл нужно делать подмену для получения результата в конкретном просеце или во всех. ] Это я не очень понял. [ VOOrDOOluck: Почему из драйверов один хук контролирует все процесы.Ведь сам хук ставится в system контексте то какое отношение к нему имеют другие просецы, функции которых вызываются не из контекста system. ] Если хукаются функции ядра, то в каком контексте ставится хук не имеет никакого значения. Ядерное пространство оно одно, т.е. глобально. |
|
|
Дата: Сен 29, 2004 13:18:06 [ VOOrDOOluck: g_pfnDbgPrint- это указатель на функцию? ] Забыл ответить. Да, конечно. На сайте лежат исходники RegMon. Там должен быть файлик regsrc\lib\reglib.c - позыркай. |
|
|
Дата: Сен 30, 2004 16:39:12 Four-F насчет первого(параметров)спасибо, понял. насчет второго.Третий вопрос все решил. насчеит третьего.Возьмем на заметку. СПАСИБО |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.044 |