能力值:
( LV11,RANK:190 )
在线值:

|
-
-
2 楼
查看第四个参数ProcessHandle,如果是-1就是本进程
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
如果是-1,那肯定是本进程,这个没有疑问。
但是如果我自己调用NtCreateThread,参数ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId())呢?那ProcessHandle应该不为-1吧(自己没有测试过,只是觉得OpenProcess应该不会返回伪句柄吧),要是这样可以的话,那对于非-1的ProcessHandle ,还得通过句柄获得对应的进程ID,才能判断是否是远线程
|
能力值:
( LV9,RANK:850 )
在线值:

|
-
-
4 楼
内核的话obreferenceobjectbyhandle->_EPROCESS-> PID/PATH来判断
用户层的话就直接GetModuleFileNameEx来判断下进程路径就行
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
为什么在NtCreateThread中使用obreferenceobjectbyhandle获取Eprocess总是失败?
NTSTATUS nt = ObReferenceObjectByHandle( ProcessHandle , 0 , NULL , UserMode , &pEprocess, NULL );
if( !NT_SUCCESS(nt) )
{
DbgPrint("ObReferenceObjectByHandle err!\n");
}
我调用的有什么错误吗?
查看ProcessHandle 的值有点不正常,显示是0x00000001
|
能力值:
( LV2,RANK:10 )
在线值:

|
-
-
6 楼
ObReferenceObjectByHandle( ProcessHandle , PROCESS_ALL_ACCESS , NULL , KernelMode , &pEprocess, NULL );
|
能力值:
( LV2,RANK:10 )
在线值:

|
-
-
7 楼
得到EPROCESS之后对比PsGetCurrentProcess()就行了
|
|
|