简谈PE文件和内存

关于PE文件(可执行文件,Portable Executale)结构的研究以前也看过,很久没回顾了。前两天看了本书又涉及到这方面的知识,在此分享一下个人心得,毕竟本人是还没出茅庐的菜鸟,可能有错误之处恳请大家指正。

我相信大家在接触PE听到的醉多的就是什么RVA,VA,Offset,Rsize,Vsize啥啥啥乱七八糟的名称,还有计算公式。网络上关于这个的解释都是粘过来,复制过去,很多描述这些概念的人我相信他们自己都搞不清楚这些。学习PE文件结构其实就是为了掌握磁盘文件和它在内从里的映射关系。这个说简单,其实还是挺麻烦。PE文件就是可执行文件,但不限于exe文件,还有dll,COM,sys都算是PE文件。在此我们只简单地说下exe文件。PE文件被加载到内存中运行的过程是我们关心的。PE文件是如何在内存中被管理的呢,它又被加载到内存的哪里呢?PE文件被加载到内存中的位置,也就是内存地址,是在PE文件中被设置好的,它会告诉系统,将自己加载到某个地址,而且,32位PE中,这个地址往往是0x00400000。我们往往是运行多个可执行文件,那么肯定会冲突。这个我们不用担心,操作系统会进行内存管理,每个文件在自己的虚拟空间里运行,互不影响。这个地址也就是VA(第一个概念,Virtual Address)。要明白VA不是一个地址,它是一段地址空间,我们很关心运行这个PE文件的内存首地址(Image Base,映像基址,第二个概念)。如果说想了解PE文件的内存结构,必须深入理解PE文件的结构。尤其是节区数据,因为节区数据中存储的是汇编指令和操作数,也就是执行的代码和代码使用的变量,常量等数据。ok,贴张图吧,PE文件结构回头再谈,今天只说下PE文件在内存运行的过程和地址转换的概念性东西,这些很枯燥但是相当重要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值