5

我有一段需要去混淆的 C 代码。它包含一堆棘手的宏。我通过 C 预处理器和缩进运行代码,现在它看起来类似于:

switch (9263 + 1505) {
case 1505 + 41131 + 6729 + 2347:
            ...
case 1505 + 41131 + 6729 + 2347 + 1:
            ...
case 1505 + 41131 + 6729 + 2347 + 2:
            ...

为了简化进一步的分析,我正在寻找一些可以折叠代码中所有常量的工具。我知道 C 预处理器无法做到这一点,并且将在编译阶段执行常量折叠优化。但是源代码呢?

Shell 脚本也很受欢迎,因为我怀疑这可能是唯一的方法。

4

1 回答 1

4

使用 clang 编译它,并使用它的 c 后端生成 c 代码。

像这样的东西应该工作:

clang -emit-llvm source.cpp -o - | llc -march=c
于 2013-03-02T10:24:25.483 回答