实验室让交周报了 写一写吧·
都是前人的总结的总结
#浅谈实模式与保护模式对于最开始的8086cpu,数据总线16位,而地址总线20位,实模式都是16位寄存器。
疑问就产生了16与20 如何相互对应呢,其实这时候就产生所谓的分段机制,段地址+偏移地址
段地址 有寄存器的16位寄存器左移四位表示,就能更好扩大寻址能力2^20=64kb。
将1mb存储空间,分为多个逻辑段,任意分割大小,最大为64kb。起始地址为16的倍数,2^16
从80286开始多了一个保护模式 [,简单的区别段地址变成了段选择符,这时候要通过段选符+段内偏移
去找到最终的线性地址核物理地址,-------不存在分页管理的话线性地址就是最终的物理地址。
逻辑地址: 应该只能在所规定的4个g内能操作的地址,在实模式下逻辑地址和物理地址是相同的,应用层程序员仅需跟逻辑地址打交道,在系统中会自动进行重定位(?大概)。逻辑地址是段偏移地址。
线性地址:是逻辑地址到物理地址变换之间的中间层, 段地址+偏移地址其实就构成了线性地址。
如果存在分页机制 线性地址在进行一层转换变成物理地址。 如果没有的话。线性地址等于其物理地址。
物理地址:“ 是指出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址”
线性地址能通过分页机制,使用页目录表,页表进行查找 最后确定物理地址。
若需了解分页机制,需要先去了解段描述符、~表, 段选择符。等等,
去了解GDT,GDTR,LDT,LDTR. 自己还无法像他们讲的那么仔细。
TI用来指明寻找GDT(全局描述符)还是LDT(局部描述符,}。RPL表示请求特权级,在王爽老师那本汇编语言中
讲到过。
索引 TI RPL
15 3 2 1 0 2^13=8192个段描述符 同时分LDT GDT 再乘以二16384个段描述符
16384*32(32位偏移地址)=64TB 最大寻址能力
32位偏移地址 + 索引12位 +LDT/GDT
取出段基址 段界限 属性
若存在分页机制 在PAE内 4kb是一页。
PAE:PAE,物理地址扩展,是基于x86 的服务器的一种功能,它使运行 Windows Server 2003, Enterprise Edition 和 Windows Server 2003,Datacenter Edition 的计算机可以支持4GB 以上物理内存。物理地址扩展 (PAE) 允许将最多64GB 的物理内存用作常规的4 KB 页面,并扩展内核能使用的位数以将物理内存地址从32扩展到36。
这个图可以想象为一本书 通过三维模型去理解 10 10 12
类似于指针 高十位 -->页目录项-->页表基址
其他都是
最后通过页基址 + 偏移量 = 物理地址
这周跟着《逆向工程核心原理》将前两大节中的实践程序 跟着做了
VB程序主要从ollydbg中的 这个函数 可知
寄存器断点
api断点等等....
循环跳出。。
这些还是太浅。。各种捷径。。意义并不大
参考资料: http://blog.youkuaiyun.com/yeruby/article/details/39718119
http://www.cnblogs.com/liuconggang/archive/2013/01/22/2871972.html
http://blog.youkuaiyun.com/rosetta/article/details/8933200