Hello there, ('ω')ノ
🧱 スマホの中には「分業チーム」がいる?
スマホの中身は大きく4つの層(レイヤー)に分かれています。これはまるで会社の組織のようなものです。
💡 Androidの構成(ざっくり)
──────────────── アプリ層 ← 私たちが操作するアプリ ──────────────── フレームワーク層 ← アプリを支えるサービス ──────────────── ライブラリ/ランタイム層 ← プログラムの部品たち ──────────────── Linuxカーネル層 ← スマホの司令塔 ────────────────
では、それぞれどんな役割があるのか、1つずつ見ていきましょう。
① アプリ層(Application Layer):私たちが見る世界
これは最も身近な部分です。 ホーム画面、LINE、地図アプリ、業務アプリなど、ユーザーが操作する部分です。
これらのアプリは、裏でいろいろなAPIやサービスとやり取りをしています。 例えるなら、カウンターの店員さん。お客さん(ユーザー)からの注文を受けて、キッチン(下の層)に依頼している状態です。
② フレームワーク層(Application Framework):アプリの裏方
ここは、アプリが「地図を表示して!」「カメラを起動して!」といった命令を送る先です。
- 電話やSMSの制御
- 通知の管理
- 位置情報の取得
- インターネット通信
- UI(ボタンや画面遷移など)
これらはすべて、Androidフレームワークという「便利セット」が用意してくれています。 アプリはこの層に「API経由で命令」して、スマホを操作します。
③ ライブラリ/ランタイム層:部品とエンジン
ここには、アプリの動作に必要なライブラリ(機能部品)や、ランタイム(実行エンジン)があります。
特に重要なのが以下の2つ:
- Nativeライブラリ:C/C++などで書かれた高速な処理部品
- ART(Android Runtime):アプリを動かす仮想マシン(昔はDalvik)
アプリがJavaやKotlinで書かれていても、ここで実際に「動く形」に変換されています。 いわばエンジンや変速機のような存在ですね。
④ Linuxカーネル層:スマホの“司令官”
スマホの最下層は、実はLinuxというOSが動いています。 これはサーバーやパソコンにも使われている、信頼性の高いOSです。
ここでは以下のような機能を提供しています:
- メモリ管理
- CPUやバッテリーの制御
- ファイルアクセス
- アプリごとの分離(サンドボックス)
つまり、「誰がどこまで何をしていいか?」を決めている司令官のような存在です。
🛡 セキュリティ的に重要なポイント
脆弱性診断の観点から、この構造で特に注目すべきは次の3点です。
アプリが触れる範囲は上2層まで → フレームワークやランタイム経由で、間接的にハードを使っている。
それぞれの層は“壁”で守られている → だから、アプリが勝手に他のアプリの中身を見たりできない。
この壁に“すき間”ができていると、それが脆弱性になる → 例えば、アプリが誤って他アプリから呼び出される設定にしているなど。
👀 どう活かすのか?
脆弱性診断では、
- アプリが「どこまでアクセスできるのか」
- アプリの命令が「どの層を経由しているのか」
- 「ユーザー入力→フレームワーク→ライブラリ→カーネル」までの流れ
を理解しておくことで、どこにセキュリティの抜け道ができるか予想できるようになります。
✅ まとめ
- Androidは4層構造(アプリ/フレームワーク/ライブラリ/カーネル)で動いている
- 各層は役割分担されていて、アプリは直接ハードウェアに触れない
- 各層の“連携部分”に脆弱性が生まれることがある
- 診断ではこの構造を意識することで「どこを調べるか」が明確になる
Best regards, (^^ゞ