- 注册时间
- 2011-3-6
- 最后登录
- 1970-1-1
该用户从未签到
|
__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的函数分派表实现 |
|