Clang dump-ast功能学习
本文尚未完成
因为想要写一个逃过查重算法的混淆代码的工具,准备学习一下clang的AST dump功能,参考JS Obfuscator,对于这个工具的计划是1. 运算符提取成单独的函数,2. 所有字面量全部提取出来,3.尽可能做一些控制流展平之类的操作,4. 不能影响最后编译出来的代码。
Use it
1 | clang -Xclang -ast-dump -fsyntax-only test.c |
因为后续要把AST树扔给Python/Node.js处理,所以让它输出json格式:
1 | clang -Xclang -ast-dump=json -fsyntax-only test.c |
Parse it
现在要parse这个json文件。初步目标是重新获得源代码。
Tricks
CompoundAssignOperator 和 Operator = 不是同一个东西