!peb和PEB结构

来源:互联网 发布:顶级域名有几种类型 编辑:程序博客网 时间:2024/04/29 15:43

本文转自:http://blog.csdn.net/hgy413/article/details/8490918

 

调试器用户经常会需要查看在启动调试目标时使用了哪些命令行参数,这个信息是保存在PEB中的,可以通过!peb来获取,这个命令将解析PEB并给出完整的命令行,所有已加载DLL的位置,以及环境变量等.

 


手工自己分析下:


 

直接分析ldr:

 

 


对比!peb的内容:

 

一样的~~~~,不一样就不正常了!

为什么有三个list:其实三个都一样,顺序不同而已.

 

_LIST_ENTRY的结构如下:

 


按MSDN解释是:

Each item in the list is a pointer to an LDR_DATA_TABLE_ENTRY structure,双向循环链表吧,从一个方向开始,不停的循环,就回到初始位了,就相当于遍历了一次

 

可以看到头部开始就是个_LIST_ENTRY

我们来做次循环查询吧:

 

对比上面的显示:

 

可以看出,windbg这里是在后面括号里显示Flink和Blink,那么我们向着Flink循环吧:

 


对比!peb的输出:

 

当然是一样的~~~

下一步是怎么直接得到进程的cmdline:我们注意到PEB0x10处的偏移

 

dt一下试试:

 


都出来了~~~~~~~~~

 

0 0
原创粉丝点击