基于python实现的针对C/C++源码工程混淆工具实现知识产权保护
处理C/C++工程下的源码,主要进行变量和函数替换
基于clang解析抽象语法树 提取变量和函数名
生成对应密文(随机字符串或相近字符串)
函数和变量对应的进行替换
首先"手动"删除所有文件中的系统头文件 #include <stdio.h> #include<windows.h>等
在myglobal.py中的rootPath指定工程根目录
运行 python main.py
最后需要手动在删除的部分原始文件中添加头文件
- 遍历目录下所有预处理C类型文件 .h .hpp .c .cpp .cc
- 对于所有文件 使用Clang进行解析 获得所有函数和变量名称,去除重复,去除白名单的内容
- 获得函数和变量,转换前后的对应关系 记录在dict中
- 对于每个文件进行内容替换
a) 移除空行 和 注释
b) 替换内容 逐行操作- 预处理语句 和 多行语句(‘\’结尾) 不做替换
- 替换数字 为 多个数的运算结果
- 替换字符串 转为16进制
- 替换函数
- 替换变量