项目简介
本项目借助C++和Windows API构建动态代码加密系统,运用自修改代码(SMC)技术达成代码的动态加密与解密。项目结合DLL和EXE文件,借助Windows API修改内存页面权限,实现代码段的加解密操作。具备普通DLL调用、基于DLL的SMC实现、多次SMC实现以及基于链接脚本和自定义section的SMC实现等功能。
项目的主要特性和功能
- 普通DLL调用:提供简单DLL调用示例,展示DLL文件的编译与调用方法。
- 基于DLL的SMC实现:借助外部Python脚本对DLL文件代码段加密,运行时解密并执行。
- 多次SMC实现:给出多次SMC示例,体现解密代码后发现其仍需进一步解密的情况。
- 基于链接脚本和自定义section的SMC实现:利用链接脚本和自定义section实现动态调用函数方案,增加逆向工程难度。
- 简洁的SMC方案:通过修改函数体变量初值控制函数执行路径。
安装使用步骤
假设用户已下载本项目的源码文件,可按以下步骤操作:
1. 编译DLL和EXE文件
进入项目目录,使用g++编译器编译DLL和EXE文件:
bash
cd self-modify-code-hello
g++ enc.cpp -g -shared -o enc.dll
g++ main.cpp -g -o main.exe
2. 运行加密脚本
使用Python脚本对生成的DLL文件进行加密:
bash
python enc_dll.py
3. 运行程序
运行生成的EXE文件,输入标志(flag)进行验证:
bash
./main.exe
4. 多次SMC实现
- 编译
enc.cpp
生成enc.dll
。 - 运行
enc_dll.py
生成enc_e.dll
。 - 编译
main.cpp
生成main.exe
。 - 运行
main.exe
进行验证。
5. 基于链接脚本和自定义section的SMC实现
使用链接脚本进行编译:
bash
g++ main.cpp -g -T main.lds -o main.exe
然后运行加密脚本对生成的EXE文件进行加密:
bash
python enc_exe.py
6. 简洁的SMC方案
编译并运行程序:
bash
g++ smc_branch_control.cpp -g -o smc_branch_control.exe
./smc_branch_control.exe
通过以上步骤,可成功运行并测试本项目的各项功能。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】