ByteScope

APK Analyzer

Android APKのマニフェスト・権限・署名・シンボル・コードをローカルで検査。

ファイルはブラウザから送信されません — 処理はすべてローカルで行われます。

Drop APK files here

or click to browse — .apk / .xapk / .apks / .apkm · analyzed locally, never uploaded

このツールについて

このAPKアナライザーはAndroidの.apkファイルを展開し、その中身を表示します。パッケージ名とバージョン、危険な権限にフラグを付けた全権限リスト、すべてのアクティビティ・サービス・レシーバー・プロバイダー(エクスポートされたコンポーネントはハイライト表示)、v1/v2/v3署名の背後にある署名証明書、そしてファイルのバイトが何に使われているかの内訳が確認できます。自分のビルドをチェックする開発者、インストール前にAPKを検証したいセキュリティ意識の高いユーザー、アプリが実際に何を要求しているのか知りたいすべての人のために作られています。

マニフェストよりさらに深く掘り下げます。ネイティブライブラリのセクションでは、同梱された各.soを一覧し、それぞれがstripされているかを表示し、必要に応じてELFシンボルテーブルをパースしてC++の関数名を表示します —— .dynsymのエクスポートシンボルと、存在する場合は.symtabの完全なリストを、demangleした上で、JNI(Java_…)エントリポイントを最優先で表示します。コードブラウザはDEXバイトコードをSmaliに逆アセンブルするので、すべてのJava・Kotlinのクラスとメソッドを閲覧し、定義へジャンプし、アプリ自身のコードだけに絞り込めます。

すべてブラウザ内で動作します。APKはZIPアーカイブなので、ツールはそのセントラルディレクトリを読み取り、必要なエントリだけを解凍し、バイナリのAndroidManifest.xmlとresources.arscをパースし、ネイティブシンボルとDEXコードを抽出し、Web Crypto APIで証明書のフィンガープリントを計算します —— すべてローカルで、アップロードは一切ありません。ファイルをサーバーに渡すことなく、APKの権限確認、ネイティブライブラリのシンボル閲覧、APK署名の検証をオンラインで手早く行えます。

よくある質問

APKはサーバーにアップロードされますか?
いいえ。APKはJavaScriptとWeb Crypto APIを使ってすべてブラウザ内で展開・解析され、ファイルがお使いのデバイスから外に出ることはありません。アップロード工程はなく、ファイルサイズの制限もお使いのマシンのメモリ以外にはありません。
APKを逆コンパイルせずにAndroidManifest.xmlをどうやって読むのですか?
APK内のAndroidManifest.xmlはプレーンテキストではなく、Androidのバイナリ XML(AXML)形式で格納されています。本ツールには、文字列プールとチャンク構造を直接読み取る自前実装のAXMLパーサーに加え、アプリのラベルとアイコンを解決するresources.arscパーサーが含まれています。
危険(dangerous)と特別(special)の権限フラグは何を意味しますか?
危険な権限(マゼンタ表示)は、カメラ、位置情報、連絡先、SMSなど、ユーザーが明示的に許可する必要があるランタイム権限です。特別な権限(オレンジ表示)は、他のアプリの上に重ねて表示する、パッケージをインストールするなど、appopや署名で制限された機能です。通常(normal)の権限はインストール時に自動的に付与されます。
どの署名スキームに対応していますか?
v1(JAR署名、META-INFのPKCS#7ブロックから)、v2およびv3(APK Signing Blockから)に対応しています。どのスキームが存在するかを表示し、署名証明書のサブジェクト、発行者、有効期間、SHA-1 / SHA-256フィンガープリントを抽出します。APKが期待した発行元のものかを検証するのに役立ちます。
.xapk、.apks、.apkm、SAIバンドルには対応していますか?
はい。.xapk、.apks、APKMirrorの.apkm、SAIエクスポートのコンテナをドロップすると、ツールはその中のベース(またはuniversal)APKを見つけて解析し、コンテナ自身のメタデータ(manifest.json、toc.pb、info.json、meta.sai)を使って分割APKを分類します。旧式の暗号化された.apkmファイルはローカルでは読み取れません。分割構成APKのマージはMVPでは行いません。
一部のコンポーネントのexportedフラグが強調表示されるのはなぜですか?
android:exported="true" が指定されたコンポーネントは、デバイス上の他のアプリから起動できるため、セキュリティレビューでよく確認される箇所です。本ツールはエクスポートされたアクティビティ、サービス、レシーバー、プロバイダーをフラグ表示し、すぐに見つけられるようにしています。
APKのネイティブ.soライブラリのシンボルや関数名を一覧できますか?
はい。各ネイティブライブラリ(.so)について、ブラウザ内でELFシンボルテーブルをパースします。ライブラリがstripされているかを判定し、.dynsymのエクスポート関数と、存在する場合は.symtabの完全な関数リストを一覧し、C++名をdemangleし、JNI(Java_…)エントリポイントを最優先で表示します。コンパイラやSTLが生成したノイズはフィルタで隠せるので、意味のあるシンボルが際立ちます。分割バンドルにも対応し、.xapk/.apks/.apkm内のすべてのAPKからシンボルを集約します。
APK内のJava・Kotlinのクラスやメソッドを閲覧できますか?
はい。コードブラウザはDEXバイトコードをすべてブラウザ内でSmaliに逆アセンブルします。すべてのJava・Kotlinのクラスとメソッドを閲覧し、定義へジャンプし、検索し、フレームワークやサードパーティライブラリではなくアプリ自身のパッケージに絞り込めます。.xapk / .apks 分割バンドルのベースAPKからもクラスを読み取ります。