流水账笔记:PE文件格式(Dos Header)
2017-10-10 04:39
246 查看
PE 文件 格式种类:
严格的说,OBJ(对象)之外的所有文件都是可执行文件。DLL、SYS 虽然不能直接在 Shell (Explorer.exe) 中运行,但可以使用其他方法执行。
提示:根据 PE 正式规范,编译结果 OBJ 文件也视为 PE 文件。但是 OBJ 文件本身不能以任何形式执行,在代码逆向分析中几乎不需要关注它。
————《逆向工程核心原理》
有关文件格式,微软并没有完全公开,只在 windows 的头文件中,定义了有关文件格式的结构体。
学习文件格式,不仅仅要知道文件格式中各个字段的意义,还要懂得通过分析文件格式,来应对畸形文件格式
有时,通过修改文件格式,也可以达到反调试的目的
紫色框 开头的地址,才是真正的 32位(或64位)系统下的可执行文件格式
结构体中简要说明了各个字段的作用,但是除了e_magic以及e_lfanew,我们并不关心其他成员。
该字符串是如何出现的?代码的实现,即是在 Dos 文件头的下一段空间
如果我们 dos 环境下调试32位程序,查看汇编代码时:
可以看到将要执行的代码二进制即是那一段蓝框内的二进制数据,其中还调用了 int 中断
实际上,对于 32 位的应用程序,dos的文件头中只有 2 处信息是有效的,其余的信息即使全部填充为 0xff ,程序照样可以正常运行
其中,红框 处表示的是 Dos签名,紫框 处表示 NT头的偏移
种类 | 主扩展名 |
---|---|
可执行系列 | EXE、SCR |
库系列 | DLL、OCX、CPL、DRV |
驱动程序系列 | SYS、VXD |
对象文件系列 | OBJ |
提示:根据 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文件格式(FileHeader)
- 流水账笔记:PE文件格式(OptionalHeader 上)
- 流水账笔记:PE文件格式(OptionalHeader 下)
- 流水账笔记:PE文件格式(导出表)
- 流水账笔记:PE文件格式(手工增加节)
- PE文件格式详解(三)――DOS Header & PE Header
- 流水账笔记:PE文件格式(导入表注入---手动)
- PE文件格式详解(三)――DOS Header & PE Header
- 流水账笔记:PE文件格式(SectionHeaders)
- 流水账笔记:PE文件格式(RVA & FOA)
- 流水账笔记:PE文件格式(资源表)
- PE文件学习笔记(一):DOS头与PE头解析
- PE文件和COFF文件格式分析--MS-DOS 2.0兼容Exe文件段
- 软件安全学习笔记(7):PE文件总体格式
- PE文件格式--IMAGE_SECTION_HEADER
- PE格式之MS-DOS MZ header
- 《逆向工程核心原理》<02-13> PE文件格式 部分笔记
- 学破解 <一> PE格式之MS-DOS MZ header
- 学破解 <一> PE格式之MS-DOS MZ header
- 关于PE文件格式中IMAGE_OPTIONAL_HEADER.FileAlignment的一些说明