学逆向论坛

找回密码
立即注册

只需一步,快速开始

发新帖

2万

积分

41

好友

1171

主题
发表于 2019-8-17 22:13:20 | 查看: 6406| 回复: 0
上一节课中我写好了_IMAGE_OPTIONAL_HEADER头的前10个成员,今天我接着来完善这个结构中最重要的两个成员,在学习第11个第12个成员之前我们先来认识一下PE磁盘文件与内存映像结构图。
264835d580b0c1c123.png
做一个RVAtoRAW的转换练习(根据上节课讲的转换公式)
896435d580b165980a.png
RVA: (Relative Virtual Address 简称RVA),RVA只是内存中的一个简单的相对于PE文件装入地址的偏移位置,或称为偏移量。公式:  目标地址 401000h ---装入地址(Imagebase) 400000h=RVA 1000h
VA:PE用语里,实际的内存地址被称作虚拟地址(Virtual Address )简称VA。即OD里面能看到的地址   公式: 虚拟地址 VA =装入地址(Imagebase) + 相对虚拟地址(RVA)
File Offset:PE文件存储在磁盘上时,某个数据的位置相对于文件头的偏移量,称为文件地址。即C32里面能看到的地址  公式:
文件偏移-文件中节区的起始位置=内存偏移-内存中节区的起始位置

文件偏移=内存偏移-内存中节区的起始位置+文件中节区的起始位置
894175d580b2628ce7.png

8185d580b2bf1e9e.png
PELord也提供了偏移转换的专用计算器(非常强大)
952315d580b37f2eb5.png
进入正题:
407665d580b43851cd.png
上一节课中我们讲解了_IMAGE_OPTIONAL_HEADER 头的前10个成员,有了刚才的基础后,我们来看一下接下来的第11个第12个成员。
       成员114个字节,表示段加载后在内存中的对齐方式。内存中节对齐的粒度。例如,如果该值是4096 (1000h),那么每节的起始地址必须是4096的倍数。若第一节从401000h开始且大小是10个字节,则下一节必定从402000h开始,
  即使401000h402000h之间还有很多空间没被使用。因为Windows管理内存采用分页管理的方式,而每页的大小为4k,也就是1000h,所以我们这个值为”00100000
      成员124个字节,表示段在文件中的对齐方式。文件中节对齐的粒度。例如,如果该值是(200h),,那么每节的起始地址必须是512的倍数。若第一节从文件偏移量200h开始且大小是10个字节,则下一节必定位于偏移量400h: 即使偏移
  5121024之间还有很多空间没被使用。此值最好设为200h,所以该成员的值为“00020000

在文件中把这两个成员完善
771815d580b53a7fd5.png

课件打包:
第三课 完善可选头.zip (601.09 KB, 下载次数: 2)


温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046

小黑屋|手机版|站务邮箱|学逆向论坛 ( 粤ICP备2021023307号 )|网站地图

GMT+8, 2024-12-22 10:31 , Processed in 0.122868 second(s), 42 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表