首页
社区
课程
招聘
[注意]关于HOOK NtCreateThread的问题
发表于: 2011-1-26 15:43 6763

[注意]关于HOOK NtCreateThread的问题

2011-1-26 15:43
6763
在hook NtCreateThread时,如何判断当前创建的是远程创建的线程?谢谢

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 601
活跃值: (256)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
2
查看第四个参数ProcessHandle,如果是-1就是本进程
2011-1-26 16:16
0
雪    币: 4817
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
如果是-1,那肯定是本进程,这个没有疑问。
但是如果我自己调用NtCreateThread,参数ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId())呢?那ProcessHandle应该不为-1吧(自己没有测试过,只是觉得OpenProcess应该不会返回伪句柄吧),要是这样可以的话,那对于非-1的ProcessHandle ,还得通过句柄获得对应的进程ID,才能判断是否是远线程
2011-1-26 16:58
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
4
内核的话obreferenceobjectbyhandle->_EPROCESS-> PID/PATH来判断

用户层的话就直接GetModuleFileNameEx来判断下进程路径就行
2011-1-26 21:20
0
雪    币: 225
活跃值: (294)
能力值: ( 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
2011-2-9 14:49
0
雪    币: 247
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
ObReferenceObjectByHandle( ProcessHandle , PROCESS_ALL_ACCESS , NULL , KernelMode , &pEprocess, NULL );
2011-2-9 23:32
0
雪    币: 247
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
得到EPROCESS之后对比PsGetCurrentProcess()就行了
2011-2-9 23:34
0
游客
登录 | 注册 方可回帖
返回
//