S.l.e!ep.¢%

像打了激速一样,以四倍的速度运转,开心的工作
简单、开放、平等的公司文化;尊重个性、自由与个人价值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

关于进程枚举

Posted on 2009-10-25 17:03 S.l.e!ep.¢% 阅读(277) 评论(0)  编辑 收藏 引用 所属分类: RootKit

关于进程枚举2009-10-18 14:30使用QuerySystemInformation的效果是下面的调用ProcessInformation->ExpGetProcessInformation-> PEB中的ActiveProcess双向链表

昨天的PspCidTable在不同版本的HANDLE_TABLE结构体相差非常大,不过在内核模式中使用ExEnumHandleTable也许能避免这一差异,还没有式

也就是说如果进程断链,NtQuerySystemInformation就失败了,并且断链很不好收拾。

所以还是恢复正常的函数调用后,for(){openProcess(i)}稍微好一点

附上某彪悍解决方案:

进程遍历:
1.native api获得进程表a
2.通过activelist获得进程表b
3.通过pspCidTable获得进程表c
4.通过handletablelisthead获得进程表d
5.通过csrss的handletable用2种方法枚举获得进程表e和f
6.通过扫描当前进程的handletable获得进程表g
7.遍历表c的每一个进程的SessionProcessLinks获得进程表h
8.遍历表c的每一个进程Vm.WorkingSetExpansionLinks获得进程表i
9.通过Typelist分别取process和thread的表j和表k
10.通过表k得到进程表l
11.搜索内存中的threadobject和processobject得到进程表m
12.通过Wait/Dispatch得到进程表n
13.如果系统是Win2003以上遍历表c的每一个进程的MmProcessLinks得到表o
14.综合上面的进程表得到表p
15.对表p每一个进程做HandleTable,Vm.WorkXX,MmProcessXX,SessionProcessList扫描得到表q
16.枚举HWNDHandle得到进程表r
17.枚举JobObject得到表s
18.综合得表t,此时枚举结束~~

动态部分:
KiReadyThread
和KiSwapContext的钩子
还有KiService钩子
还有CreateProcessNotifyRoutine和CreateThreadNotifyRoutine
NtCreateThread钩子
动态维护一张表,静态枚举结束后综合两表~
 


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理