以下の内容はhttps://cysec148.hatenablog.com/entry/2025/07/22/202135より取得しました。


第10回:APKファイルの分解と中身の見方

Hello there, ('ω')ノ

📦 APKって何のこと?

✅ APKとは?

Android Package(アンドロイド・パッケージ)の略で、アプリを配布・インストールするための「ひとつの箱(パッケージ)」です。

Windowsでいう .exe ファイル、iPhoneでいう .ipa ファイルのようなものです。

この中には、以下のようなものが詰め込まれています:

ファイル名・フォルダ 役割
AndroidManifest.xml アプリの設定・権限・構成
classes.dex アプリの動作ロジック(バイトコード)
res/ アイコンや画面の部品などのリソース
assets/ 任意のファイル(DB、HTML、設定ファイルなど)
lib/ ネイティブライブラリ(C/C++で書かれた処理)

🔧 APKを分解する方法(デコンパイル)

APKファイルは、適切なツールを使えば中身を見たり、分解(解析)したりすることが可能です。

よく使う2つのツール

ツール名 用途 備考
apktool APKの構造を分解(マニフェストやリソースを読む) コマンドライン
jadx バイトコード(.dex)をJava風に逆変換 GUIで見やすい

🧪 実践:apktoolで分解してみよう

① APKファイルを入手

まずは対象アプリの .apk ファイルを用意します。 実機から抜き出すには以下のADBコマンドを使います:

adb shell pm path com.example.app

出力例:

package:/data/app/com.example.app-1/base.apk

続いてファイルをPCにコピー:

adb pull /data/app/com.example.app-1/base.apk

② apktoolで分解

apktool d base.apk -o extracted_app

これで、extracted_app/ フォルダの中に以下のような構造が展開されます:

extracted_app/
├─ AndroidManifest.xml
├─ res/
├─ smali/
├─ assets/
├─ lib/

🔍 何を見る?診断の視点

✅ AndroidManifest.xml

このファイルはアプリの設計図とも言える存在。 以下のような重要情報が含まれます:

  • 要求している権限(permission)
  • 外部公開しているコンポーネント(exported)
  • デフォルト起動のアクティビティ(main)
  • コンテンツプロバイダの設定など

診断者としてはまずここをチェックし、「余計な権限がないか」「他アプリからアクセスできる機能がないか」を見極めます。


✅ assets/ や res/raw/

ここには、アプリ内で使っているデータファイルや設定ファイルが格納されていることがあります。

  • プレーンなJSONファイルにAPIキーが入っていた
  • SQLiteの初期データが暗号化されずにそのまま入っていた
  • 開発用の設定ファイルが誤って入ったままになっていた

という事例も珍しくありません。


✅ classes.dex → Javaコードを読む

ここがアプリの“頭脳”です。 classes.dex にある処理ロジックを読み解くことで、

  • パスワードの保存方法
  • 通信先のURLやAPIキー
  • 暗号化や認証のロジック

などを確認できます。

これは jadx を使ってGUIで読みやすくできます:

jadx-gui base.apk

GUIでJava風のコードが表示され、「こんな簡単に見えるの!?」と驚かれるかもしれません。


🕵️‍♀️ どう活かす?診断の観点

観点 チェック内容
権限設定 AndroidManifest.xml に過剰な権限がないか
Export設定 外部に公開されている機能が意図したものだけか
認証情報 APIキーや秘密のパスワードが埋め込まれていないか
通信先 固定IPや危険な外部サーバーへの接続がないか
データ保護 データファイルが平文で保存されていないか

✅ まとめ

  • APKはAndroidアプリの“箱”であり、中には設定・コード・データが詰め込まれている
  • apktooljadx を使うことで、中身を構造的に確認できる
  • 診断では、マニフェスト・コード・リソースファイルの3つを重点的にチェック
  • 中をのぞくことで、開発者も気づいていないリスクが見つかることがある

Best regards, (^^ゞ




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

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