首页
社区
课程
招聘
[原创] 《软件调试》分页机制windbg例子分析(各种填坑)
发表于: 2018-9-11 03:04 9793

[原创] 《软件调试》分页机制windbg例子分析(各种填坑)

2018-9-11 03:04
9793
1. PAE问题,按照文章内容一步一步来,一直测试一直错,开始怀疑人生。继续读文章n遍,发现书中例子为“非PAE模式”,参考文章https://blog.csdn.net/lixiangminghate/article/details/54836188,将系统改为非PAE模式!!!
2. 文中关于物理内存访问相关内容使用的是ldk模式(本地内核调试),由于真机使用的win10,设置起来麻烦,直接双机调试,虚拟机程序为VBOX,虚拟机用的 winxp-sp3。这里需要对windbg有一定的了解!!!
3. 到了最后一步,通过PTE+offset访问物理内存的时候,发现内容全部为0。查看了PTE的flag,发现Present(是否在物理内存)标记为0,即不在内存中。感觉是放到文件系统了。解决方法是,让程序执行一些命令,再看 PTE,发现指向内存变更了,查看相应的内存,找到目标。

以上为奋斗n天的一点认识,希望大家互相讨论,如有纰漏,请指出,谢谢。

ps:
逻辑地址、虚拟地址 、线性地址和物理地址。关于这四个地址,发现有些资料不太一样。逻辑地址究竟是虚拟地址还是线性地址,求大神指教。
不过可以肯定的是:虚拟地址+段机制 ==> 线性地址; 线性地址+页机制 ==>物理地址。写代码只涉及到虚拟地址!!!其它为系统和CPU自动转换的。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (11)
雪    币: 1604
活跃值: (640)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
2
ldk 调试方法有一定的局限性,比如无法实时追踪一些内核内存的状态,Win10 已经支持双物理机通过以太网线调试了,速度比那蛋疼的命名管道模拟串口的波特率快得多,是当前推荐的调试法
最后于 2018-9-11 21:08 被shayi编辑 ,原因:
2018-9-11 21:05
0
雪    币: 4128
活跃值: (869)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
3
shayi ldk 调试方法有一定的局限性,比如无法实时追踪一些内核内存的状态,Win10 已经支持双物理机通过以太网线调试了,速度比那蛋疼的命名管道模拟串口的波特率快得多,是 ...
受教了,一直都是r3层开发,驱动知道的很少,多多交流。
2018-9-12 10:03
0
雪    币: 1604
活跃值: (640)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
4
kinghzking 受教了,一直都是r3层开发,驱动知道的很少,多多交流。[em_28]
我 r3 层刚好比较生疏,多多交流
2018-9-12 11:06
0
雪    币: 1706
活跃值: (9630)
能力值: ( LV13,RANK:385 )
在线值:
发帖
回帖
粉丝
5
逻辑地址就是逻辑上的地址. 要转为线性地址  需要查询GDT表.  但是因为微软没有使用GDT表. 所以逻辑地址就可以看做是线性地址. 32位下. 高10位是PDE目录索引. 中间10位是 PTE表索引. 以前学的高版本不知道改没改.不过依照微软的蛋疼尿性. 改了整个系统得重写. 
2018-9-12 20:53
0
雪    币: 4128
活跃值: (869)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
张新琪 逻辑地址就是逻辑上的地址. 要转为线性地址 需要查询GDT表. 但是因为微软没有使用GDT表. 所以逻辑地址就可以看做是线性地址. 32位下. 高10位是PDE目录索引. 中间10位是 PTE表索 ...
windows有GDT表,只是32位的程序,值都一样。所以逻辑地址和线性地址的值“恰好”相等。不知道有没有特例。。。
2018-9-12 22:22
0
雪    币: 1706
活跃值: (9630)
能力值: ( LV13,RANK:385 )
在线值:
发帖
回帖
粉丝
7
kinghzking windows有GDT表,只是32位的程序,值都一样。所以逻辑地址和线性地址的值“恰好”相等。不知道有没有特例。。。
有GDT表.没使用. 64的没研究.
2018-9-12 23:10
0
雪    币: 36
活跃值: (102)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
感谢楼主分享
2018-9-13 10:29
0
雪    币: 14
活跃值: (324)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
是的,PAE开启的情况下那个方法已经不适用了,之前一直没注意,不过现在我还是不怎么明白PAE的原理..
2018-9-13 17:17
0
雪    币: 1604
活跃值: (640)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
10
ZwTrojan 是的,PAE开启的情况下那个方法已经不适用了,之前一直没注意,不过现在我还是不怎么明白PAE的原理..
PAE 启用时,在内核空间中多了一个最顶层的数据结构 “索引”,一般叫做 “PDPT”(页目录指针表),PAE 下的虚拟->物理地址转换,可以参考这篇:https://bbs.pediy.com/thread-218170.htm
实践中用得最多的还是虚拟和物理地址,逻辑与线性地址在概念上的意义大于实战的
最后于 2018-9-13 22:42 被shayi编辑 ,原因:
2018-9-13 22:39
0
雪    币: 4128
活跃值: (869)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
11
shayi ZwTrojan 是的,PAE开启的情况下那个方法已经不适用了,之前一直没注意,不过现在我还是不怎么明白PAE的原理.. PAE 启用 ...
遇到高人了,看到PAE的时候,也有这个疑惑,谢谢大神。
2018-9-14 11:05
0
雪    币: 60
活跃值: (252)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
2018-9-18 10:40
1
游客
登录 | 注册 方可回帖
返回
//