能力值:
( LV12,RANK:210 )
|
-
-
2 楼
贴代码看看呗
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
void ReGetContextThread();
ULONG NtGetContextThreadAddr;
typedef NTSTATUS (WINAPI * _NtGetContextThreadAddr)(HANDLE hThread,PCONTEXT pContext);
_NtGetContextThreadAddr MyNtGetContextThread;
__declspec(naked) void CloseProtect()
{
_asm
{
cli
push eax
mov eax,cr0
and eax,not 10000h
mov cr0,eax
pop eax
retn
}
}
__declspec(naked) void ReProtect()
{
_asm
{
push eax
mov eax,cr0
or eax,10000h
mov cr0,eax
pop eax
sti
retn
}
}
__declspec (naked) NTSTATUS uNtGetConThread(HANDLE hThread,PCONTEXT pContext)
{
__asm jmp NtGetContextThreadAddr
}
NTSTATUS WINAPI MNtGetContextThread(HANDLE hThread,PCONTEXT pContext)
{
if(strcmp((char *)((ULONG)pEp+0x174),"dnf.exe")==0)
{
pEp=PsGetCurrentProcess();
KdPrint(("%s 访问NtGetContextThread \n",(ULONG)pEp+0x174));
return STATUS_UNSUCCESSFUL;
}
return uNtGetConThread(hThread,pContext);
}
void ReGetContextThread()
{
//获取SSDT表中 编号 85
NtGetContextThreadAddr=*((ULONG *)((ULONG)(KeServiceDescriptorTable->ServiceTableBase)+85*4));
//++++++++++执行SSDT HOOK ++++++++++++
//获取函数的SSDT地址
SSDT_ADDR=(ULONG)(KeServiceDescriptorTable->ServiceTableBase)+85*4;
MyNtGetContextThread=MNtGetContextThread;
//去保护
CloseProtect();
*((ULONG *)SSDT_ADDR)=(ULONG)MyNtGetContextThread;
//恢复保护
ReProtect();
}
|
能力值:
( LV12,RANK:210 )
|
-
-
4 楼
dnf.exe 是不是游戏检测到什么
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
硬件断点。。。
|
|
|