__declspec(naked) test()
{
_asm
{
ret
jmp oldaddr
}
}
DWORD * KernelCallbackTable = NULL;
_asm
{
push eax
mov eax,dword ptr fs:[0x18]
mov eax,dword ptr ds:[eax+0x30]
mov eax,dword ptr ds:[eax+0x2C]
mov KernelCallbackTable, eax
pop eax
}
DWORD old = 0;
if(VirtualProtect(&KernelCallbackTable[40], sizeof(PVOID),PAGE_EXECUTE_READWRITE, &old))
{
oldaddr = KernelCallbackTable[40];
KernelCallbackTable[40] = (DWORD)test;
}
前几天研究windows的消息机制时偶尔发现。
通过修改KernelCallbackTable内供ring3回调用ring0的函数分派表实现
- 标 题:处女贴ring3改KernelCallbackTable防键盘钩子
- 作 者:jwtck
- 时 间:2010-01-13 15:27:43
- 链 接:http://bbs.pediy.com/showthread.php?t=105107