软件漏洞分析技术(1)---一些基础知识

一.pe文件格式:

.text    :由编译器产生,存放着二进制的机器代码,也是我们反汇编和调试的对象

.data  :初始化的数据块,如宏定义,全局变量,静态变量等

.idata :可执行文件所使用的动态链接库等外来函数与文件的信息

.rsrc    :存放程序的资源,如图标,菜单等

二. 虚拟内存

内存管理器将虚拟内存和物理内存关联起来进行管理,虚拟内存为全地址空间,通过映射到物理内存实现。

三.pe文件与虚拟内存之间的映射

1.调试时需要的操作:

(1)静态反汇编工具看到的pe文件中某条指令的位置是相对于磁盘文件而言的,即所谓的文件偏移,我们可能还需要知道这条指令在内存中所处的位置,即虚拟内存地址(VA)。

(2)调试时看到的某条指令的地址是虚拟内存地址,我们也经常需要回到pe文件找到这条指令对应的机器码。

2.pe文件地址和虚拟内存的映射关系

(1)文件偏移地址:数据在pe文件中的地址叫文件偏移地址,个人认为叫做文件地址更加准确。这是文件在磁盘上存放时相对于文件开头的偏移。

(2)装载地址:pe装入内存时的基地址。默认情况下,exe文件在内存中的基地址是0x00400000,DLL文件是0x10000000。这些位置可以通过修改编译选项修改。

(3)虚拟内存地址:pe文件中的指令被装入内存后的地址。

(4)相对虚拟地址:相对虚拟地址是内存地址相对于映射基址的偏移量。

关系为:虚拟内存地址 = 装载地址 + 相对虚拟地址

3.pe中的存放

(1)pe文件中的数据按照磁盘数据标准存放,以0x200字节为基本单位进行组织。当一个数据节不足0x200时,不足的地方将被0x00填充;当一个数据节超过0x200时,下一个0x200块将分配给这个节使用。因此pe数据节的大小永远是0x200的整数倍。

(2)当代码装入内存后,将按照内存数据标准存放,并以0x1000字节为基本党委进行组织。类似的,不足将被补全,超出则分配下一个0x1000为其所用。因此内存中的节总是0x1000的整数倍。

关系为:文件偏移地址 = 虚拟内存地址 - 装载基址 - 节偏移 = 相对虚拟地址 - 节偏移

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值