5

難読化を解除する必要のあるCコードがあります。トリッキーなマクロがたくさん含まれています。コードをCプリプロセッサとインデントで実行したところ、次のようになりました。

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

さらなる分析を単純化するために、コード内のすべての定数を折りたたむことができるツールを探しています。Cプリプロセッサはこれを実行できず、コンパイル段階で定数畳み込みの最適化が実行されることを私は知っています。しかし、ソースコードはどうですか?

シェルスクリプトも高く評価されています。これがこれを行う唯一の方法であると思われるからです。

4

1 に答える 1

4

clangを使用してコンパイルし、cバックエンドを使用してcコードを生成します。

このようなものが機能するはずです:

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