
アンチウイルス回避のためのC/C++ソース難読化ツール

実装はかなり複雑であり、ソフトウェア開発におけるこの分野は一般向けに文書化されることは稀です。そのため、各設計上の選択を詳細に説明し、LLVM APIを扱う際の注意点を解説したブログ記事が用意されています。
docker build . -t avcleaner
docker run -v ~/dev/scrt/avcleaner:/home/toto -it avcleaner bash #adapt ~/dev/scrt/avcleaner to the path where you cloned avcleaner
sudo pacman -Syu
mkdir CMakeBuild && cd CMakeBuild
cmake ..
make -j 2
./avcleaner.bin --help
単純なプログラムであれば、次のように簡単です:
avcleaner.bin test/strings_simplest.c --strings=true --
ただし、コンパイラフロントエンドを使用していることを認識しておく必要があります。これは、プロジェクトのビルドに必要なすべてのインクルードへのパスを指定した場合にのみ正しく動作します。例として、test/string_simplest.c はWinSDKのヘッダをインクルードしており、スクリプト run_example.sh でそのようなシナリオを処理する方法を示しています。
CommandLine Error: Option 'non-global-value-max-name-size' registered more than once! LLVM ERROR: inconsistency in registered CommandLine options
このエラーが発生した場合は、CMakeLists.txt の代わりに CMakeLists_archlinux.txt を使用すると解決するはずです。
バグ修正を提供してくれた @gituser5555 に感謝します。