wywwwl
驱动大牛
驱动大牛
  • 注册日期2002-08-16
  • 最后登录2018-04-07
  • 粉丝1
  • 关注0
  • 积分-10分
  • 威望135点
  • 贡献值6点
  • 好评度76点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:2713回复:0

来鸟从PEPROCESS 到 进程id的过程(欢迎批评)

楼主#
更多 发布于:2005-01-28 18:39
对于nt系统,知道了进程的id后,可以通过
PsLookupProcessByProcessId获得进程的PEPROCESS,现在的问题是如果知道了PEPROCESS,如何获得进程的id呢?当然,如果知道了相应的EPROCESS结构,就可以获取了(PEPROCESS->UniqueProcessId
),关于这个结构,驱动网上有,但是不全。而我也不爱找,昨天看了skymartin写的soft-ice的使用手册,突然想到了一个方法(自己对softice的使用也是来鸟级别的),下面说说。
其实非常简单,就是找UniqueProcessId在PEPROCESS的偏移量,方法是:
(1)softice呼出
(2)执行proc,注意kpeb是PEPROCESS的第一成员(这个看驱动网文章)
结果你会看到很多行,我选择的是:foxmail(你也可以选择别的)

system  81661520 8 ....
.......................
foxmail 82bc0020 25c ....
MSDEV   FF2CE020 4D0 ....

下面就用到了softice的两个命令:s (搜索)和d(显示)
 s 82bc0020 l 120 5c 02 00 00
显示:Pattern found at 0010:82bc00bc(0000009c)

结果说明:82bc0020 是foxmail进程的kpeb地址,l是120长度,在我W2K PROFESSIONAL中,pid =25c,注意类型是ULONG,所以实际值为0000025c,内存存储方式是:先低字,再高字,对于每个字(2个字节),先低字节,再高字节,所以25c再内存的存放是 :
5c 02 00 00  。结果中(9c)就是偏移量了。为了测试是否正确,执行命令db ff2ce020 + 9c,内存为:
0010:FF2CE0BC D0 04 00 00 .....
0010:....;.
看见D0 04 00 00 了吗,再给还原,看看上面的存储方式,先低字,再高字,所以D0 04是低字,0000是高字,你应该再心里记住(0000)(D0 04),然后是对每个字,先低字节,再高字节,所以(oo00)=》(00 oo),(DO O4)=>(04 d0),所以结果为:000004d0=4d0。当然了你也可以通过system来找。


 :D :D听高兴的,终于会用softice的命令了,大侠别笑话我啊

最新喜欢:

aasa2aasa2
琢磨悟真知
游客

返回顶部