Huan 是我为了学习 PE 文件结构和 PE 加载过程而开发的一款加密 PE 加载器生成器。它每次使用不同的密钥对要运行的 PE 文件进行加密,并将其嵌入加载器二进制文件的新节中。目前,它适用于 64 位 PE 文件。
首先,Huan 读取给定的 PE 文件,并使用 CBC 模式 AES-128 加密算法对其进行加密。加密方面,我使用了 Tiny AES in C,并为该库的需求准备了填充代码。加密完成后,它使用 Visual Studio 编译器(MsBuild.exe)编译加载器,生成可执行文件。之后,它在该可执行文件上创建一个节(名为 .huan),并将加密内容、大小信息、IV 和对称密钥嵌入其中。两个密钥均为每个副本随机生成。该节的布局如下所示。
当执行加载器时,它首先通过读取 进程环境块 获取自己的镜像基址。在获知镜像基址后,它解析自身的加载副本以找到 .huan 节。然后,解密整个内容,将其缓冲,并加载依赖内存的二进制文件。
仅限授权的安全测试。未经明确许可,将此工具用于任何系统均属违法行为。