-
-
[讨论]简单获取PspCidTable地址
-
发表于:
2011-1-6 14:46
7131
-
这样好像也可以简单的获取 PspCidTable的地址,我的机器是WinXP+SP3,这样会有什么问题呢?如果没有问题那就不用搜索内存特征字符了
ULONG GetPspCidTableAddr()
{
//取得PspCidTableAddr的地址
UNICODE_STRING vStrFunName;
RtlInitUnicodeString(&vStrFunName,L"PsLookupProcessByProcessId");
PVOID vPsLookupProcessByProcessIdAddr=MmGetSystemRoutineAddress(&vStrFunName);
if(NULL==vPsLookupProcessByProcessIdAddr)
{
KdPrint(("Get PsLookupProcessByProcessId Failed...\n"));
return 0;
}
ULONG vPspCidTable=*(ULONG*)((ULONG)vPsLookupProcessByProcessIdAddr+sizeof(ULONG)*22);//我通过Windbg dd PspCidTable 和 dd PsLookupProcessByProcessId发现,PspCidTable的地址在PsLookupProcessByProcessId的地址偏移
//23个ULONG的位置处,所以直接取了,虽然PspCidTable地址会变,但是重启或者换一台机器,这个23个便宜不变
return vPspCidTable;
}
我测试好长时间,好像完全没有问题啊....抹掉进程在这里的痕迹就方便了
[课程]Linux pwn 探索篇!