逆向调试入门-PE文件节表与区块03/07

网友投稿 245 2022-10-21


逆向调试入门-PE文件节表与区块03/07

节表:

PE⽂件中所有节的属性都被定义在节表中,节表由⼀系列的IMAGE_SECTION_HEADER结构排列⽽成,每个结构⽤来描述⼀个节,结构的排列顺序和它们描述的节在⽂件中的排列顺序是⼀致的。

全部有效结构的最后以⼀个空的IMAGE_SECTION_HEADER结构作为结束,所 以节表中总的IMAGE_SECTION_HEADER结构数量等于节的数量加⼀。节表总是被存放在紧接在PE⽂件头的地⽅。

另外,节表中 IMAGE_SECTION_HEADER 结构的总数总是由PE⽂件头 IMAGE_NT_HEADERS 结构中的 FileHeader.NumberOfSections 字段来指定的。

区块:

PE 文件一般至少都会有两个区块:一个是代码块,另一个是数据块。

每一个区块都需要有一个截然不同的名字,这个名字主要是用来表达区块的用途。

在PE文件中,一个典型的对齐值是200h ,这样,每个区块都将从200h 的倍数的文件偏移位置开始。

OD中的区块对齐方式

在OD中,PE头部的NumberOfSection的值为8

代表这个程序区块的数量

我们通过这个FileAlignment和SectionAlignment字段,可以得知

文件对齐方式为200H,区块的对齐方式为1000H

在往下就是导出表和导入表。

导出表:

导出表的主要作用是将PE中存在的函数引出到外部,以便其他人可以使用这些函数,实现代码的重用。

导入表:

目的:为实现代码重用而设置的。

一个PE文件调用了多少外来函数,以及这些外来函数都存在于那些动态链接库DLL里等信息。

在OD中,可以发现,在PE节表之后,紧接着就是区块了

一个一个区块紧挨着。

通过字段

Virtual Address:该区块装载到内存中的RVA 地址。这个地址是按照内存页来对齐的,因此它的数值总是 SectionAlignment 的值的整数倍。在Microsoft 工具中,第一个区块的默认 RVA 总为1000h。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java求解二叉树的最近公共祖先实例代码
下一篇:EasyCVR服务private.pem文件被清空,导致无法正常启动该如何处理?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~