Shikata Ga Nai

Private? There is no such things.

第62回:逆コンパイルを防ぐ難読化(Obfuscation)とは?

Hello there, ('ω')ノ

🔍 難読化(Obfuscation)とは?

難読化とは、アプリの中のコードや文字列を“わかりにくくする”技術のことです。 人間が理解しにくくなるように変換することで、リバースエンジニアリングや解析を困難にします。


✅ 難読化の目的は?

対象 保護内容
変数名やクラス名 意味不明な名前に置換(例:LoginManagera.b.c
メソッドの構造 制御フローを入れ替えて読みにくくする
文字列 Base64や独自暗号で埋め込み
リフレクション 意図的に使って構造解析を困難に
デバッガ対策 isDebuggerConnected() などで実行環境を検知

🎯 実際に何が変わるの?

🔎 難読化前:

public class AuthManager {
    public String generateToken(String userId) {
        return "token_" + userId;
    }
}

🔐 難読化後(例):

public class a {
    public String a(String b) {
        return "token_" + b;
    }
}

AuthManagergenerateToken() のような意味のある名前が消えてしまうため、解析が難しくなる。


⚙️ よく使われる難読化ツール

この続きはcodocで購入