路飞 发表于 2012-6-3 15:02:27

根据PID在PspCidTable中寻找EProcess

需要的工具WinDbg~接下去开始在Command输入相应命令,写出来以防以后我忘记鸟...
假设我们要寻找PID是07d8的进程,这里我只有一张表,所以步骤略微简单,如果多张表可以参考WRK
0: kd> dd PspCidTable
805638c0 e1000c88 00000002 00000000 00000000
...

0: kd> dt _handle_table e1000c88
nt!_HANDLE_TABLE
   +0x000 TableCode      : 0xe1005000
...
   +0x038 NextHandleNeedingPool : 0x800
...
   
e1005000 + 7D8 * 2 = E1005FB0 (为什么的话,请参考ExpLookupHandleTableEntry)
接下去可以dt _handle_table_entry E1005FB0 或者dd E1005FB0 (个人偏好dd)

0: kd> dd E1005FB0
e1005fb0 81f52421 00000000 81f48da9 00000000
...

81f52421 & (~7) = 81f52420 (根据教主的提示,这里的确是7,可以参考某书的P139)

0: kd> !process 81f52420
PROCESS 81f52420 SessionId: 0 Cid: 07d8    Peb: 7ffd4000 ParentCid: 02a0
    DirBase: 02b40280 ObjectTable: e14e8a28 HandleCount: 133.
    Image: VMwareService.exe
   
其实网上目前关于PspCidTable的文章现在已经很多了,不过我感觉最主要的还是要自己看WRK吧
感觉有的人写的PspCidTable穷举进程的代码好像连WRK都没认真看过...

zhangchenggu 发表于 2012-8-30 14:28:03

这么好的文章 竟没有回复
页: [1]
查看完整版本: 根据PID在PspCidTable中寻找EProcess