引用:
引用第2楼炉子于2008-01-30 20:21发表的 :
PspTerminateThreadByPointer没必要全bin搜索,你u下PsTerminateSystemThread就明白了。
汗,是呀.反正PsTerminateSystemThread已经导出了. 在它地址的基础上搜索出特征码就可以了...
引用:
nt!PsTerminateSystemThread:
808a622d 8bff mov edi,edi // 2字节nop
808a622f 55 push ebp
808a6230 8bec mov ebp,esp
808a6232 64a124010000 mov eax,dword ptr fs:[00000124h] // 当前ETHREAD
808a6238 f6804802000010 test byte ptr [eax+248h],10h// 判断PS_CROSS_THREAD_FLAGS_SYSTEM
808a623f 0f8464cf0700 je nt!PsTerminateSystemThread+0x14 (809231a9)
808a6245 ff7508 push dword ptr [ebp+8] // 压入参数2 ExitStatus
808a6248 50 push eax // 压入参数1 PsGetCurrentThread()
808a6249 e8b5e4ffff call nt!PspTerminateThreadByPointer (808a4703)// 这就是了=。=!
嘿嘿. copy你的.
for (cPtr = (
PUCHAR)PsTerminateSystemThread;
cPtr < (
PUCHAR)PsTerminateSystemThread + 0x100;
cPtr += Length) {
Length = SizeOfCode(cPtr, &pOpcode);
if (!Length)
break;
if (*(
BYTE *)pOpcode ==
0xe8) {
// e8b5e4ffff call nt!PspTerminateThreadByPointer (808a4703) +。+|
Offset=*(
USHORT *)((
ULONG)pOpcode+1);
return Offset;
//break;
}
}
哈哈.发现利用ntoskrnl已经导出的函数来找未导出的函数真方便. 有些全局变量也是...
炉子名言: 很爽很舒服
此帖不赚个精华真是可惜了啊
