以下の内容はhttps://cysec148.hatenablog.com/entry/2025/09/08/080338より取得しました。


第63回:App Integrity Checkを突破できる理由

Hello there, ('ω')ノ

✅ App Integrity Checkとは?

✔ 目的:

  • 改ざんアプリの実行を防ぐ
  • 無断で再パッケージされたアプリをブロックする
  • セキュリティ機能の無効化を検知する(rootやdebuggerなど)

🔍 よく使われるチェック手法

チェック内容 説明
アプリの署名検証 getPackageManager().getPackageInfo() などで署名ハッシュを確認
APKのハッシュ比較 ファイルを読み込み、SHA256で整合性を確認
root検知 /su の存在チェックや which su の結果を調べる
Debugger検知 Debug.isDebuggerConnected()TracerPid をチェック
エミュレータ検知 特定のデバイス名・MACアドレス・センサーの有無など

💥 では、なぜバイパスできてしまうのか?

① 検知ロジックがアプリ内にあるから

多くの整合性チェックはJavaコード内に実装されており、jadx や Frida などで内容が丸見えになります。

if (!signature.equals(REAL_SIGNATURE_HASH)) {
    throw new SecurityException("改ざん検出");
}

→ このようなコードは、Frida で動的に if の結果を上書きできます。


② FridaやXposedによるランタイム書き換え

Java.perform(function () {
    var targetClass = Java.use("com.example.security.Checker");
    targetClass.isTampered.implementation = function () {
        return false; // 無理やり改ざん検知を無効にする
    };
});

→ 上記のように、実行中に結果を書き換えてチェックを通すことが可能です。


③ ネイティブコードでも“読まれる”

この続きはcodocで購入



以上の内容はhttps://cysec148.hatenablog.com/entry/2025/09/08/080338より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14