コンテンツにスキップ

プラットフォーム固有パス

ソース: lib/Transforms/Platform/

フラグ パス ターゲット
-kagura-objc ObjCObfuscation iOS — ObjC のセレクタ / クラス名を IR メタデータ内で難読化
-kagura-jni JNIObfuscation Android — 静的 Java_* を動的 RegisterNatives に変換
-kagura-vm VMObfuscation 関数本体をカスタムスタックベース VM バイトコードに仮想化

kagura-vm

VM パスは選択された関数をカスタムスタックベース VM バイトコードにコンパイルし、実行時に kagura_vm_execute (libkagura_runtime.a 内) で解釈実行します。元のネイティブコードはバイナリから完全に削除されます。

仮想化したい関数にアノテーションを付けます:

__attribute__((annotate("kagura_vm")))
int verify_license(const char *key) {
    // VM バイトコードにコンパイル — バイナリ内に可読な IR やマシンコードは無い
    ...
}

VM 仮想化された関数はネイティブの10〜50倍遅くなるため、ライセンスチェック・鍵導出・暗号初期化のような 小さく・呼び出し頻度の低い 関数に限定して使用してください。