x86byte/sbox

GitHub: x86byte/sbox

sbox 在 C++ 编译期使用 AES-128 对字符串进行混淆,消除二进制中的明文痕迹以对抗静态分析。

Stars: 109 | Forks: 9

# sbox - 用于 C++ 的编译期 AES 字符混淆 标准解决方案依赖于 `length + "#" + string` 的形式。这种方式很容易被逆向。 **sbox** 利用 `constexpr` AES-128 分组密码将字符串转换为高熵的乱码。 ### 开发背景 在参与 Neetcode 的 "Encode and Decode Strings" 挑战时,我将 AES 引擎从我的混淆项目 **[Obfusk8](https://github.com/x86byte/Obfusk8)** 中移植了过来。 该实现首次提交时仅耗时 **7ms**。加密的安全性不应以牺牲性能为代价。 ### 功能特性 - **无分隔符:** 使用固定宽度的头部和块变异取代了可预测的分隔符。 - **二进制安全:** 能够轻松处理原始 payload 和 null 字节。 - **静态隐蔽:** 明文在编译期即被消除。使用提供的宏,`strings.exe`(或 Linux 下的 `strings`)将不会返回任何结果。 ### 如何使用 查看 [示例](https://github.com/x86byte/sbox/tree/main/EXAMPLES) 文件夹以了解实现细节: 1. **多字符串示例 (`sbox_test.cpp`):** 演示了如何使用 `_OBF(str)` 宏处理 `vector` 以进行批处理。适用于可直接传输的混淆。 2. **单字符串示例 (`sbox_test1.cpp`):** 演示了如何使用 `ObfStr(str)` 宏进行原子实体化。最适合单变量赋值: string s = ObfStr("ama obfuscation addicted"); ### 性能 **7ms 运行时间。** 证明了“杀鸡用牛刀”式的方案依然可以是最优的。 **作者:** [x86byte](https://github.com/x86byte)
标签:AES加密, C++, DNS 反向解析, 反取证, 字符串加密, 安全评估, 数据擦除, 编译期混淆