-
-
[求助]自写函数 HOOK NtOpenProcess 和 NtOpenTread 蓝屏的几个问题
-
发表于:
2011-2-16 18:31
5620
-
[求助]自写函数 HOOK NtOpenProcess 和 NtOpenTread 蓝屏的几个问题
在TP的HOOK NtOpenProcess前 直接跳到自己写的函数判断 这样写加载了以后 用OD附加的时候 什么进程都看不到了
VOID _declspec(naked) MyNtOpenProcess()
{
processEPROCESS=IoGetCurrentProcess();//获得调用者的EPROCESS
RtlInitAnsiString(&p_str1,(PCSZ)processEPROCESS+0x174);//将调用者的进程名保存到str1里
RtlInitAnsiString(&p_str2,DNF_EXE);//将DNF进程名保存到str2里
if(RtlCompareString(&p_str1,&p_str2,true)==0)
{
__asm
{
pushad
pushfd
push dword ptr [ebp-38h]
push dword ptr [ebp-24h]
push p_ReturnAddress
mov eax,p_ReturnAddress
jmp eax
popad
popfd
}
}
else
{
__asm
{
pushad
pushfd
push dword ptr [ebp-38h]
push dword ptr [ebp-24h]
push p_ReturnAddress
mov eax,ObOpenObjectByPointerAddress
jmp eax
popad
popfd
}
}
}
这个加载了以后 打开OD就蓝屏
VOID _declspec(naked) MyNtOpenThread()
{
pEPROCESS=IoGetCurrentProcess();//获得调用者的EPROCESS
RtlInitAnsiString(&str1,(PCSZ)pEPROCESS+0x174);//将调用者的进程名保存到str1里
RtlInitAnsiString(&str2,DNF_EXE);//将DNF进程名保存到str2里
if(RtlCompareString(&str1,&str2,true)==0)
{
__asm
{
pushad
pushfd
push dword ptr [ebp-38h]
push dword ptr [ebp-24h]
push p_ReturnAddress_Thread
mov eax,p_ReturnAddress_Thread
jmp eax
popad
popfd
}
}
else
{
__asm
{
pushad
pushfd
push dword ptr [ebp-38h]
push dword ptr [ebp-24h]
push p_ReturnAddress_Thread
mov eax,ObOpenObjectByPointerAddress_Thread
jmp eax
popad
popfd
}
}
}
这个两个只要是加载以后再卸载 一定蓝屏 卸载蓝屏是不是因为卸载的时候没有还原之前修改的代码
但是为什么跳到自己的函数里之后,OD什么进程都看不到了那? 而且HOOK NtOpenThread之后,开OD就蓝屏
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)