私はo-llvmで多くのGitHubプロジェクトを難読化しています。それはclangで実装されたコンパイル時リンカーです。 o-llvmでは、私はlibtoolを使用するGitHubプロジェクトをコンパイル/難読化しようとしていますが、難読化変換を指定するために必要なフラグがリンカーを混乱させます。 -bcf手段が、それは基本ブロックごとに実行され、-annに示し回数-boguscfループ制限、偽の制御フロー変換を適用Libtool/clang:リンカーではなくコンパイラーに引数を渡します
/path/to/obfuscator/clang -O0 -mllvm -bcf -mllvm -boguscf-loop=1 -mllvm -ann
:ように私は渡している
余分なフラグがありますprintfステートメントで基本ブロックに注釈を付けます。まず
、私が設定した後、メイクステップでこれをやってみました:
make CC=/path/to/obfuscator/clang CFLAGS="-O0 -mllvm -bcf -mllvm -boguscf-loop=1 -mllvm -ann
しかし、その後、GCCは、リンカであり、それは「-mllvm」オプションを知らなかったので、それが失敗しました。
./configure CC="/path/to/obfuscator/clang -O0 -mllvm -bcf -mllvm -boguscf-loop=1 -mllvm -ann"
この:libtoolはまた、自動的に働いCCに設定するには、バックドロップとCFLAGSを指定して、別のプロジェクトでは、 "-bcf" "-boguscf-ループ= 1" と "-ann" オプション
を削除しました
[...] -O0 -mllvm -mllvm -mllvm -Wl,-z -Wl,defs -Wl,-soname [...]
clang: warning: argument unused during compilation: '-mllvm -bcf'
clang: warning: argument unused during compilation: '-mllvm -boguscf-loop=1'
clang: warning: argument unused during compilation: '-mllvm -ann'
clang: warning: argument unused during compilation: '-mllvm -mllvm'
clang: warning: argument unused during compilation: '-mllvm -Wl,-z'
/usr/bin/ld: error: cannot open defs: No such file or directory
私は-Wcと私のコンパイラ引数のみ、フラグを付加しようとした:「リンカー」を「-mllvm」オプションを認識し、打ち鳴らすが、対応するフラグを取り除くlibtoolのまだ呼び出しを台無しにすることになりまたは-Xcompile buそれらのどちらも認識しない。
LibtoolまたはClangに、難読化の引数をコンパイルにのみ使用し、リンクしないように指示する他の方法はありますか?
ありがとうございます。