一个功能强大的 Shellcode 编码工具,支持多种编码算法,用于绕过反病毒软件检测和网络过滤。
- Base64 编码 - 标准 Base64 编码算法
- IPv4 编码 - 将二进制数据编码为 IPv4 地址格式
- MAC 地址编码 - 将数据编码为 MAC 地址格式
- XOR 编码 - 使用随机密钥进行 XOR 加密
- 字节反转编码 - 简单的字节序反转
- AES 加密 - 高级加密标准,支持 CBC 模式,自动生成密钥和 IV
- SM4 加密 - 国密 SM4 分组密码算法,支持 CBC 模式,自动生成密钥和 IV
- AES + Base64 混合编码 - 先进行 AES 加密,再进行 Base64 编码
- SM4 + IPv4 混合编码 - 先进行 SM4 加密,再进行 IPv4 编码
- AES + XOR + MAC 混合编码 - 先进行 AES 加密,再进行 XOR 加密,最后进行 MAC 编码
- SM4 + ReverseByte + Base64 混合编码 - 先进行 SM4 加密,再进行字节反转,最后进行 Base64 编码
- 组合编码 - 支持多种编码算法的组合使用:
- XOR + IPv4
- XOR + 字节反转 + IPv4
- XOR + 字节反转 + MAC
- C 字符串格式 - 适用于直接嵌入 C/C++ 代码
- C 字节数组格式 - 十六进制字节数组格式
- 特殊格式 - IPv4 和 MAC 地址专用格式
ProcessSc/
├── ProcessSc.cpp # 主程序文件
├── ProcessSc.sln # Visual Studio 解决方案文件
├── ProcessSc.vcxproj # Visual Studio 项目文件
├── encode/ # 编码算法模块
│ ├── base64.h # Base64 编码/解码
│ ├── ipv4.h # IPv4 地址编码/解码
│ ├── mac.h # MAC 地址编码/解码
│ ├── reversebyte.h # 字节反转编码/解码
│ └── xor.h # XOR 加密/解密
├── crypto/ # 加密算法模块
│ ├── aes-Ttable.h # AES 加密算法
│ └── sm4.h # SM4 国密算法
└── x64/Release/ # 编译输出目录
├── beacon.bin # 输入的 shellcode 文件
└── encoded_*.txt # 各种编码后的输出文件
- 操作系统: Windows
- 编译器: Visual Studio 2022 (v143 工具集)
- 平台: x64
- Windows SDK: 10.0
将你的 shellcode 保存为 beacon.bin 文件,放置在可执行文件同目录下。
# 使用 Visual Studio
# 打开 ProcessSc.sln
# 选择 Release x64 配置
# 生成解决方案ProcessSc.exe程序会自动生成以下编码文件:
encoded_base64.txt- Base64 编码结果encoded_ipv4.txt- IPv4 地址编码结果encoded_mac.txt- MAC 地址编码结果encoded_xor.txt- XOR 加密结果encoded_reversebyte.txt- 字节反转编码结果encoded_aes.txt- AES 加密结果encoded_sm4.txt- SM4 加密结果encoded_aes-base64.txt- AES + Base64 混合编码结果encoded_sm4-ipv4.txt- SM4 + IPv4 混合编码结果encoded_aes-xor-mac.txt- AES + XOR + MAC 混合编码结果encoded_sm4-rev-base64.txt- SM4 + ReverseByte + Base64 混合编码结果encoded_xor-ipv4.txt- XOR + IPv4 组合编码encoded_xor-rev-ipv4.txt- XOR + 字节反转 + IPv4 组合编码encoded_xor-rev-mac.txt- XOR + 字节反转 + MAC 组合编码
使用标准的 Base64 算法,将二进制数据转换为 ASCII 字符串。
将每 4 个字节的数据转换为一个 IPv4 地址格式(如 192.168.1.1),多个地址用逗号分隔。
将每 6 个字节的数据转换为 MAC 地址格式(如 AA:BB:CC:DD:EE:FF)。
- 生成 16 字节随机密钥
- 使用密钥对数据进行 XOR 加密
- 输出格式:密钥(16字节) + 加密数据
简单地将数据的字节序进行反转。
- 使用 AES-128 算法进行加密
- 采用 CBC 模式,提供更强的安全性
- 自动生成 16 字节随机密钥和初始化向量 (IV)
- 输出格式:IV(16字节) + 密文 + 密钥(16字节)
- 支持 PKCS7 填充
- 使用国密 SM4 分组密码算法
- 采用 CBC 模式,符合国家密码标准
- 自动生成 16 字节随机密钥和初始化向量 (IV)
- 输出格式:IV(16字节) + 密文 + 密钥(16字节)
- 支持 PKCS7 填充
- 流程: 原始数据 → AES 加密 → Base64 编码
- 特点: 结合了 AES 的安全性和 Base64 的可读性
- 输出格式: C 字符串格式
- 用途: 适用于需要文本传输的加密场景
- 流程: 原始数据 → SM4 加密 → IPv4 编码
- 特点: 使用国密算法加密后伪装成 IPv4 地址
- 输出格式: IPv4 地址数组格式
- 用途: 适用于网络流量伪装场景
- 流程: 原始数据 → AES 加密 → XOR 加密 → MAC 编码
- 特点: 多层加密保护,最终伪装成 MAC 地址
- 输出格式: MAC 地址数组格式
- 用途: 适用于需要多重保护的高安全场景
- 流程: 原始数据 → SM4 加密 → 字节反转 → Base64 编码
- 特点: 国密加密 + 字节混淆 + 文本编码
- 输出格式: C 字符串格式
- 用途: 适用于需要额外混淆的文本传输场景
支持多种算法的链式组合,提供更强的混淆效果。
在 main() 函数中修改 inputFile 变量:
const std::string inputFile = "your_shellcode.bin";- 仅用于合法用途 - 本工具仅供安全研究和合法的渗透测试使用
- 文件路径 - 确保 shellcode 文件路径正确
- 内存管理 - 编码函数使用动态内存分配,注意内存释放
- 平台兼容性 - 当前版本仅支持 Windows 平台
欢迎提交 Issue 和 Pull Request 来改进这个项目。
本项目仅供学习和研究使用,请遵守相关法律法规。
免责声明: 本工具仅供安全研究和教育目的使用,使用者需自行承担使用风险和法律责任。