File Header (文件头)
本课我们将要研究 PE header 的 file header (文件头)部分。
至此,我们已经学到了哪些东东,先简要回顾一下 :
DOS MZ header 又命名为 IMAGE_DOS_HEADER . 。其中只有两个域比较重要 : e_magic 包含字符串 "MZ" , e_lfanew 包含 PE header 在文件中的偏移量。 比较 e_magic 是否为 IMAGE_DOS_SIGNATURE 以验证是否是有效的 DOS header 。比对符合则认为文件拥有一个有效的 DOS header 。 为了定位 PE header ,移动文件指针到 e_lfanew 所指向的偏移。 PE header 的第一个双字包含字符串 "PE" 。该双字与 IMAGE_NT_SIGNATURE 比对,符合则认为 PE header 有效。
本课我们继续探讨关于 PE header 的知识。 PE header 的正式命名是 IMAGE_NT_HEADERS 。再来回忆一下这个结构。
IMAGE_NT_HEADERS STRUCT
Signature dd ?
FileHeader IMAGE_FILE_HEADER <>
OptionalHeader IMAGE_OPTIONAL_HEADER32 <>
IMAGE_NT_HEADERS ENDS
Signature PE 标记,值为 50h, 45h, 00h, 00h ( PE )。
FileHeader 该结构域包含了关于 PE 文件物理分布的一般信息。
OptionalHeader 该结构域包含了关于 PE 文件逻辑分布的信息。
最有趣的东东在 OptionalHeader 里。不过, FileHeader 里的一些域也很重要。本课我们将学习 FileHeader , 下一课研究 OptionalHeader 。
IMAGE_FILE_HEADER STRUCT
Machine WORD ?
NumberOfSections WORD ?
TimeDateStamp dd ?
PointerToSymbolTable dd ?
NumberOfSymbols dd ?
SizeOfOptionalHeader WORD ?
Characteristics WORD ?
IMAGE_FILE_HEADER ENDS
简言之,只有三个域对我们有一些用 : Machine , NumberOfSections 和 Characteristics 。通常不会改变 Machine 和 Characteristics 的值,但如果要遍历节表就得使用 NumberOfSections 。
为了更好阐述 NumberOfSections 的用处,这里简要介绍一下节表。
节表是一个结构数组,每个结构包含一个节的信息。因此若有 3 个节,数组就有 3 个成员。 我们需要 NumberOfSections 值来了解该数组中到底有几个成员。 也许您会想检测结构中的全 0 成员起到同样效果。 Windows 确实采用了这种方法。为了证明这一点,可以增加 NumberOfSections 的值, Windows 仍然可以正常执行文件。据我们的观察, Windows 读取 NumberOfSections 的值然后检查节表里的每个结构,如果找到一个全 0 结构就结束搜索,否则一直处理完 NumberOfSections 指定数目的结构。 为什么我们不能忽略 NumberOfSections 的值 ? 有几个原因。 PE 说明中没有指定节表必须以全 0 结构结束。 Thus there may be a situation where the last array member is contiguous to the first section, without empty space at all. Another reason has to do with bound imports. The new-style binding puts the information immediately following the section table's last structure array member. 因此您仍然需要 NumberOfSections 。
- 大小: 63.9 KB
分享到:
相关推荐
### PE文件中脱壳技术的研究 #### 摘要与背景 随着信息技术的快速发展,软件保护成为了一个重要的议题。为了防止软件被非法复制或者逆向工程,开发人员常常采用一种称为“加壳”的技术来保护自己的软件产品。然而...
都会使计算机产生安全隐患或者使软件的核心技术被窃取,所以保护PE文件不被修改是一件很重要的工作,当前通常采用加壳的方法对PE文件进行保护,这其中UPX是具有代表性的压缩类外壳。 本文首先对PE文件格式进行了全面...
UPX是一个着名的压缩壳,主要功能是压缩PE文件(比如exe,dll等文件),有时候也可能被病毒用于免杀。壳upx是一种保护程序。 ........................ UPX是大家熟悉的EXE/Dll资源压缩工具,也称作可执行文件压缩...
PE文件格式是Windows操作系统中用于执行程序的标准格式,包括可执行文件(.exe)、动态链接库(.dll)等。PE脱壳工具能够识别并处理这些文件中的各种壳技术,例如UPX、ASPack、PECompact等。这些壳通常用于压缩程序...
UPX(UPX UnPacker eXtended)是一款广泛使用的可执行文件压缩工具,它能够将PE(Portable Executable,Windows平台上的可执行文件格式)文件进行压缩,从而减小程序的体积,提高分发效率。然而,这也为逆向工程和...
在计算机安全领域,PECompact是一款知名的可执行文件打包和压缩工具,它能够将Windows下的PE(Portable Executable)格式文件进行压缩,从而减小文件体积,提高分发效率。然而,这样的压缩过程也使得一些恶意软件...
总结以上内容,脱壳是逆向工程的重要组成部分,需要掌握PE文件格式、SEH机制、调试工具的使用,以及对各种加密算法和保护技术的理解。只有对这些基础知识和高级技术有了充分的认识,才能在软件安全和逆向工程的道路...
3. **修复PE头信息**:由于ASPack会修改PE头信息,Aspack stripper需要重新构造正确的PE头,以便恢复文件的正常运行环境。 4. **恢复原始代码顺序**:Aspack stripper会根据内部的解混淆规则,尝试恢复被重新排列的...
2. **脱壳机制**:脱壳工具的核心在于正确地解压UPX壳并恢复原始的未压缩PE文件。源码可能会包含解压算法,根据UPX的压缩格式进行还原。 3. **内存操作**:由于程序可能已经在内存中运行,脱壳工具可能需要在内存中...
对于想要深入理解脱壳技术的学习者来说,熟悉PE文件格式至关重要。 **PE文件格式简介** - **定义**:PE格式由微软开发,用于定义Windows平台上可执行文件(如.EXE、.DLL等)的结构。 - **关键特性**:PE文件包含了...
- **静态与动态分析的兼容性**:构建一个可以在静态分析时重建有效PE文件,并在动态分析时执行的PE文件。 - **防止恶意软件检测**:确保脱壳过程不会被恶意软件检测到,避免分析过程中的干扰。 - **兼容性问题**:...
这个过程涉及到对PE(Portable Executable)文件格式的理解,包括节区、导入表、导出表等关键结构。脱壳机通过识别和解析ASPack的特定标志和模式来实现这一目标。 在安全社区中,ASPack常被视为一种双刃剑。一方面...
ASPACK是一款著名的软件压缩和加壳工具,由Andrey Breslav开发,它能将可执行文件进行压缩,减小其体积,同时增加反调试和反静态分析的特性,使得程序更加难以逆向工程分析。ASPACK 2.1和2.2是该工具的两个较早版本...
你可以用它来压缩或解压缩PE(Windows)、ELF(Linux)或DOS格式的可执行文件。例如,将一个.exe文件压缩,可以使用以下命令: ``` upx -q your_program.exe ``` 如果想要脱壳,只需添加`-d`参数: ``` upx -qd your...
这个工具的工作原理,它的壳特征和编译器特征保存在HackFans.txt里面,能识别出来的壳,基本上都有对应的脱壳函数,用壳特征脱壳,可以脱壳,对于一些不好特殊的壳你可以用OEP侦测来脱壳,这要依赖编译器特征,你也可以自己...
有些模糊处理一个Win32 PE等包装.NET程序集里面的.NET反编译器无法读取该文件。 移除大多数/所有的垃圾类添加混淆。 修复了一些的peverify错误。许多混淆器是马车和创建无法验证的代码错误。 还原类型的方法的参数和...
但这需要深入理解PE文件格式和UPX壳的内部机制。 2. 自动脱壳工具:存在许多自动化工具如UPX-unpacker、PE-bear等,它们能识别并移除UPX壳,恢复原始可执行文件。例如,我们可以使用UPX-iT.EXE这个工具尝试对加壳...
dePacker具有自动化特性,但深入理解PE文件格式和逆向工程原理将有助于更有效地使用该工具。 五、学习与进阶 掌握RL!dePacker不仅需要熟悉工具本身,还需要了解相关的逆向工程知识,如汇编语言、调试技术、PE文件...