設定¶
Kagura は -kagura-config=<path> で JSON ポリシーファイルを受け取り、すべてのパス設定を一箇所で制御できます。実プロジェクトで難読化を運用する推奨方法です。
JSON DSL¶
{
"profile": "BALANCED",
"passes": {
"str": true,
"fla": true,
"bcf": true,
"honey": true,
"mvo": false
},
"tuning": {
"bcf_prob": 40,
"seed": 12345
}
}
ポリシーファイルはパイプライン先頭の kagura-config パスで読み込まれ、後続パスのデフォルト値を設定します。関数単位の __attribute__((annotate("kagura_*"))) オーバーライドは関数ごとに優先されます。
強度プロファイル¶
"profile" キーで選択する組み込みプロファイル:
| プロファイル | パス | 用途 |
|---|---|---|
FAST |
STR のみ | デバッグ / CI ビルド、最小オーバーヘッド |
BALANCED |
STR + BCF + BBR + BBS + GENC + MVO | 標準リリースビルド |
STRONG |
全パス、BCF 確率60、2 イテレーション | セキュリティクリティカルな出荷ビルド |
プロファイルはデフォルトを設定するだけ。"passes" や "tuning" で個別キーをオーバーライドできます。
実例 — 銀行 / FinTech リリース¶
STRONG プロファイル + per-build AES 鍵ローテーションで、あるバージョンから抽出された鍵が次バージョンで無効になるようにします:
kagura-bank.json
{
"profile": "STRONG",
"passes": {
"str-aes": true,
"mvo": true,
"pe": true,
"bbcheck": true,
"tamper": true
},
"tuning": {
"bcf_prob": 60,
"seed": 0
}
}
clang -fpass-plugin=KaguraObfuscator.dylib \
-mllvm -kagura-config=kagura-bank.json \
-mllvm -kagura-build-id=$(git rev-parse HEAD) \
-O2 -c bank_core.c -o bank_core.o
関連¶
- チューニングパラメータ — すべての CLI フラグ、シンボルフィルタと
-kagura-build-idper-build 鍵シードを含む。 - パス順序 — プラグインがこれらのパスを適用する決定論的な順序。
- ゲーム保護 — 実行時値保護のための
Protected<T>(mvo/peを補完)。