-
-
[旧帖]
[求助]pspcidtable学习中的问题
0.00雪花
-
发表于:
2009-6-12 10:01
3778
-
[旧帖] [求助]pspcidtable学习中的问题
0.00雪花
ExEnumHandleTable的回调函数typedef BOOLEAN (*EX_ENUMERATE_HANDLE_ROUTINE)(
IN PHANDLE_TABLE_ENTRY HandleTableEntry,
IN HANDLE Handle,
IN PVOID EnumParameter
);
这第3个参数IN PVOID EnumParameter是做什么的
我在看别人的文章时候看到在回调函数中使用(*(ULONG*)EnumParameter)++;
我在测试代码的时候发现使用这句后蓝屏。。
网上代码大体如下
BOOLEAN MyEnumerateHandleRoutine(
IN PHANDLE_TABLE_ENTRY HandleTableEntry,
IN HANDLE Handle,
IN PVOID EnumParameter
)
{
BOOLEAN Result=FALSE;
ULONG ProcessObject;
ULONG ObjectType;
ProcessObject=(HandleTableEntry->Value)&~7; //掩去低三位
ObjectType=*(ULONG*)(ProcessObject-0x10);//取对象类型
__try{
if (ObjectType==(ULONG)PsProcessType)//判断是否为Process
{
//应该是下面这句异常了吧。。。
//(*(ULONG*)EnumParameter)++;
//注意PID其实就是Handle,而不是从EPROCESS中取,可以对付伪pid
DbgPrint("PID=%4d\t EPROCESS=0x%08X\n",Handle,ProcessObject);
}
}
__except(1)
{DbgPrint("except"); }
return Result;//返回FALSE继续
}
另外这句代码if (ObjectType==(ULONG)PsProcessType)//判断是否为Process
是否应该是if (ObjectType==*(ULONG*)PsProcessType)
谢谢各位
[课程]FART 脱壳王!加量不加价!FART作者讲授!