>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
C-plus-plus

APK StudioでAndroidアプリの内部を覗いてみる

APK Studio

他人のAPKを逆アセンブルしようとしたことがある人なら、この儀式を知っているでしょう。まずターミナルにコマンドを入力し apktool d、同時に jadx-gui を開いてJavaコードを読み、VS CodeやSublime Textを使ってSmaliファイルの巨大なフォルダで必要なメソッドを探します。変更が終わると、第2ラウンドが始まります:コンソールでリビルド、 zipalign でzipアライメント、鍵で署名 apksigner または uber-apk-signer、ADBで手動インストール。

サードパーティ製アプリの1行を変更したり、サードパーティ製SDKの動作を調査したりする必要がある場合、5つのコンソールユーティリティのチェーンはすぐに面倒になります。APK Studioプロジェクトは、このバラバラなツール群を一つの統合開発環境にまとめます。

APK Studioのインターフェース

内部構造

本質的には、Android逆 Појединаエンジニアリングのための本格的なIDEです。プロジェクトはC++でQt6を使用して書かれているため、Linux、macOS、WindowsでElectronの重さや過剰なRAM消費なしで動作します。

アプリの主なアイデアはシンプルです:開発者とマルウェアアナリストにおなじみのIDEインターフェースを提供し、プロジェクトツリー、コードエディタ、Hexビューア、コマンド実行ターミナルを一つのウィンドウにまとめます。

初回起動時、APK Studioは定型作業を自動処理します。プログラムは必要なバイナリ(Java、Apktool、JADX、ADB、Uber APK Signer)を自らダウンロードして設定します。これらのユーティリティのローカルバージョンがすでに設定されている場合は、設定でバイナリのパスを上書きできます。

この環境が提供するもの

3つのターミナルウィンドウとテキストエディタの間で切り替えなくても、動作するパイプラインが手に入ります:

  1. 組み込みのSmali、Java、XMLエディタ。統合エディタは、Dalvikバイトコード( *.smali)、逆コンパイルされたJavaコード、マニフェスト AndroidManifest.xml、リソース *.yml の構文ハイライトをサポートしています。
  2. 組み込みのHexエディタとメディアビューア。アプリが暗号化されたバイナリブロブやカスタム画像を内部に持っている場合、プロジェクトツリー内で直接検査できます。バイナリにはQHexViewが、画像には組み込みビューアが使用されます。
  3. ベンダーフレームワークサポート。Samsung、LG、HTCのシステムアプリを調査している場合、元の framework-res.apk をロードする必要があることが多いです。APK Studioには、エラーなしのリソースコンパイラ逆コンパイルのためのフレームワークタグ管理のサポートが組み込まれています。
  4. 1クリックでビルド、署名、インストール。Smaliを編集した後、プロジェクトがリビルドされ、組み込みの uber-apk-signer で署名され、USBまたはWi-Fiで接続されたデバイスに即座に送信されます。

エクスプローラー統合もサポートされており、ファイルマネージャーで任意の .apk を右クリックして、逆コンパイル環境で直接開くことができます。

ソースからプロジェクトをビルドする方法

最新バージョンをリポジトリから自分でビルドしたい場合は、C++17コンパイラ、CMake 3.16+、Qt6ライブラリ(Core、Gui、Network、Widgetsモジュール)が必要です。

git clone --recursive https://github.com/vaibhavpandeyvpz/apkstudio.git
cd apkstudio

cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release

macOSでは、設定時にQtパスは -DCMAKE_PREFIX_PATH フラグで渡されます:

cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/path/to/Qt/6.10.1/clang_64

完成したバイナリは build/bin/ ディレクトリに生成されます。

どんなタスクに適しているか

このツールは、いくつかの明確な実用的なタスクを解決します:

  • クイックセキュリティ監査。アプリがリクエストする権限、ネットワーククライアントがアクセスしている場所、マニフェストにオープンなアクティビティや脆弱なContentProviderがあるかどうかを確認できます。
  • 放棄されたアプリのローカライズと改変。ソースコードは利用できないが、インターフェースを翻訳したり、新しいAndroidバージョンに合わせて動作を調整する必要がある場合。
  • 統合デバッグ。サードパーティのクローズドSDKが公式ドキュメントに記載されている内容と異なる動作をする理由を調べるのに便利です。

APK Studioは独自のバイトコード解析アルゴリズムを発明しようとしません—実績のある業界標準ツールをネイティブで高速なGUIで包み込みます。パッケージのアンパック、リソースのオプション変更、Smaliでのメソッドのパッチなどを定期的に必要としているなら、このプロジェクトは時間を節約し、ターミナルでの退屈な作業から解放されます。

関連プロジェクト