Skip to content

Latest commit

 

History

History
117 lines (71 loc) · 2.82 KB

README-CN.md

File metadata and controls

117 lines (71 loc) · 2.82 KB

Windows PE Packer

C MASM CMake Windows License

翻译

简介

test-helloworld

PE-Packer是一款针对Windows PE文件的简单加壳程序,加壳后的可执行文件可以对逆向分析过程造成干扰。

PE文件加壳时,程序会进行如下工作:

  • 转换导入表结构。
  • 加密节区数据。
  • 清除节区名称。
  • 安装解密模块

加壳后的文件启动时,解密模块会加载原始数据及代码:

  • 解密节区数据。
  • 初始化导入表。
  • 重定位。

PE文件加壳前,使用一些反汇编工具可以自动分析其汇编代码及数据,例如IDA Pro

  • 反汇编代码。

    code

  • 搜索常量字符串。

    string

  • 分析导入表。

    import-table

加壳后,逆向分析过程会受到干扰。

  • 反汇编代码。

    packed-code

  • 搜索常量字符串。

    packed-string

  • 分析导入表。

    packed-import-table

警告

该项目目前仅用于初学者学习Windows PE格式汇编语言,其仍存在兼容性问题及其他Bug,尚不能用于实际生产环境。

开始

前置条件

该项目必须编译为Windows 32位版本,目前也只支持针对32位.exe文件的加壳处理。

  • 安装MASM32
  • 安装MinGW-w64,选择i686架构。
  • 安装CMake
  • 配置这三个工具的PATH环境变量。

构建

mkdir -p build
cd build
cmake .. -D CMAKE_C_COMPILER=gcc -G "MinGW Makefiles"
cmake --build .

或直接执行build.ps1文件:

PS> .\build.ps1

使用

对可执行文件加壳时,需要指定其输入路径输出路径

PE-Packer <input-file> <output-file>

例如:

PE-Packer hello.exe hello-pack.exe

文档

可以使用Doxygen生成项目文档。

参考

《加密与解密(第3版)》段钢

PE Format - Windows Dev Center

许可证

使用MIT协议,请参考LICENSE文件。