本项目提出了一种基于Python的方法,用于C++项目的代码混淆。通过转换源代码以增加逆向工程难度,同时保持程序功能不变,提升软件安全性和版权保护。
C++项目的代码混淆基于Python实现的工具针对C/C++继承工程提供版权保护功能。
0x00 功能介绍:处理C/C++工程下的源码,主要进行变量和函数替换。
0x01 工作原理:利用Clang解析抽象语法树,提取变量和函数名,并生成对应的密文(随机字符串或相近的字符串),然后将这些替换后的名称应用于原始代码中。
0x02 使用方法:
- 首先手动删除所有文件中的系统头文件,例如`#include `、`#include`等。
- 在myglobal.py中指定工程根目录。
- 运行 `python main.py`
- 最后需要手动在删除的部分原始文件中添加回所需的头文件。
0x03 工作流程:遍历目录下所有临时C类型的文件(如.h, .hpp, .c, .cpp, .cc);对于每个文件,使用Clang进行解析以获取其中的所有函数和变量名称,并从列表中删除重复项以及白名单中的内容。记录转换前后的对应关系,在此过程中完成代码的重写工作。