流水账笔记:PE文件格式(Dos Header)
来源:互联网 发布:2016成都程序员工资 编辑:程序博客网 时间:2024/05/16 07:25
PE 文件 格式种类:
种类 主扩展名 可执行系列 EXE、SCR 库系列 DLL、OCX、CPL、DRV 驱动程序系列 SYS、VXD 对象文件系列 OBJ严格的说,OBJ(对象)之外的所有文件都是可执行文件。DLL、SYS 虽然不能直接在 Shell (Explorer.exe) 中运行,但可以使用其他方法执行。
提示:根据 PE 正式规范,编译结果 OBJ 文件也视为 PE 文件。但是 OBJ 文件本身不能以任何形式执行,在代码逆向分析中几乎不需要关注它。
————《逆向工程核心原理》
有关文件格式,微软并没有完全公开,只在 windows 的头文件中,定义了有关文件格式的结构体。
学习文件格式,不仅仅要知道文件格式中各个字段的意义,还要懂得通过分析文件格式,来应对畸形文件格式
有时,通过修改文件格式,也可以达到反调试的目的
Dos文件头
所以最初的 60 个字节是dos系统下 可执行文件 的格式。
紫色框 开头的地址,才是真正的 32位(或64位)系统下的可执行文件格式
Dos文件头的结构体
我们在VS2013中,通过定义结构体 IMAGE_DOS_HEADER ,可以找到有有关文件格式的结构体。结构体大小为 64 个字节。
结构体中简要说明了各个字段的作用,但是除了e_magic以及e_lfanew,我们并不关心其他成员。
文件头中的 Dos 代码段
如果我们在Dos环境下运行 32 位的应用程序,则会提示:
该字符串是如何出现的?代码的实现,即是在 Dos 文件头的下一段空间
如果我们 dos 环境下调试32位程序,查看汇编代码时:
可以看到将要执行的代码二进制即是那一段蓝框内的二进制数据,其中还调用了 int 中断
实际上,对于 32 位的应用程序,dos的文件头中只有 2 处信息是有效的,其余的信息即使全部填充为 0xff ,程序照样可以正常运行
其中,红框 处表示的是 Dos签名,紫框 处表示 NT头的偏移
- 流水账笔记:PE文件格式(Dos Header)
- 流水账笔记:PE文件格式(FileHeader)
- 流水账笔记:PE文件格式(OptionalHeader 上)
- 流水账笔记:PE文件格式(IAT)
- 流水账笔记:PE文件格式(OptionalHeader 下)
- 流水账笔记:PE文件格式(SectionHeaders)
- 流水账笔记:PE文件格式(RVA & FOA)
- 流水账笔记:PE文件格式(关于dump)
- 流水账笔记:PE文件格式(导出表)
- 流水账笔记:PE文件格式(TLS)
- 流水账笔记:PE文件格式(资源表)
- 流水账笔记:PE文件格式(手工增加节)
- 流水账笔记:PE文件格式(导入表注入---手动)
- 流水账笔记:PE文件格式(重定位表)
- 流水账笔记:PE文件格式(TLS手动注入)
- PE文件格式详解(三)――DOS Header & PE Header
- PE文件格式笔记
- PE文件格式学习笔记
- Java 数组中负数判定
- dubbo注册中心zookeeper的安装与配置
- 振兴中华
- C#--WinForm项目核心模块--编写成绩查询数据访问方法
- 【Leetcode】【python】Spiral Matrix/Spiral Matrix II
- 流水账笔记:PE文件格式(Dos Header)
- 同余性质
- KNN
- 693. Binary Number with Alternating Bits
- JSP--Java server Pages
- 695. Max Area of Island
- ubuntu下安装pcl
- Leetcode#1-Two Sum
- Java并发编程:volatile关键字解析