能力值:
( LV2,RANK:10 )
|
-
-
2 楼
建议楼主参考一下80386的内存分页机制的相关资料,GDT(全局描述符表)、LDT(局部描述符表)的相关概念。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
汇编学了一个月了,有几个关键性的问题你要搞明白一下:
1.win下不允许程序直接访问硬件资源,其中就包括物理内存,物理内存的访问管理一般通过虚拟内存管理器;
2.od是ring3级调试软件,只能破解大多数软件,其无法显示物理内存,所以用调试软件看到的地址是虚拟地址;od无法与softice相比(其可以破解一切软件);
3.分段的概念是根据cpu而提出的,段的划分有利于cpu更好的管理内存,进程内的分段是假想的分段;
4.指令执行是线性地址(只要其对应的数据,指令等资源已装入物理内存中,不管其放在物理地址中哪里,请注意我们不需要关注数据,指令的物理地址在哪(映射机制太复杂),因为指令执行的是线性地址)cpu只跟线性地址打交道;
以上是个人的理解,希望有所帮到
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
感谢你的回答,起码我现在清楚了OD内存窗口显示的不是物理内寸,只是第3个问题还是有点不清楚
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
3,一般的2次断点在code段下断后为什么执行的代码地址不是00401000?好像这个问题问的有点不清楚
个人觉得,断点后,一般是执行到断点处。或断点后单步走。od有个特点,它不是从基址开始执行的。PE装载器装入PE文件时,还要有一些初始化及其它步骤,od执行的入口是pe文件的初始化处。我记得好像是这样的。
“其实执行的代码地址不是00401000,你大可不必关心的。”PE文件默认image base是可以改变的。
以上个人理解
|
|
|