forus TECH

IT系技術メモ&本まとめ、ライフハック etc

GooglePlayストアからapkファイルをダウンロード → デコンパイル → 解析までの流れ

f:id:yusukekuni:20130213184222j:plain
1. 解析したいアプリのapkファイルを入手

GooglePlayストアからapkファイルをダウンロードする大まかな手順は以下

Android端末での手順
GooglePlayから「Device ID」というアプリをインストールしIDをメモしておく

②PCでの手順

  • Google Chromeがインストールされていない場合はインストール
  • 「Click Here to install now」をクリックして .crx ファイルをダウンロード
  • 左下の「APK_Downloader_1.4.0.crx」隣の「▼」→「フォルダを開く」
  • 「新しい拡張機能の確認」画面 → 「追加」
  • 「Options」画面が開きます。
  • あなたのGoogleアカウントの「Email」と「パスワード」を入力
  • 「Device ID」で確認した、Android側の「Device ID」を「GSF ID KEY(Google Service Framework)」に入力→「Login」

※「Options」画面は、→「ツール」→「拡張機能」→ APK Downloader の「オプション」 からも出せます。
Google アカウントの2段階認証をオフにしないと、「ERROR: invaild email or password」エラーが出ます。

  • ログイン成功時は通信会社選択画面に。
  • 「国」と「携帯会社」を選択 → 「Save Settings」 → 「OK」

※ よく分からない場合は、「Japan」と、自分が使っている携帯電話会社を選択しておけばよいでしょう。

  • 「Save successfully!」と出れば設定完了です。

使い方

Chromeで、Google Playストアを開き、目当てのアプリのページに行って、URL欄右のドロイド君アイコンをクリックするだけ!

後始末

Google アカウントの2段階認証をオフにした場合は、再度、オンに戻しておきましょう。

エラーが出る場合

  • Options 画面が出ない

→ 「ツール」→「拡張機能」→ APK Downloader の「オプション」 からもう一度出せる

  • apkをダウンロードしようとすると、「ERROR: Cannot download this app!」が出る

→ 未購入の有料アプリは落とせません
→ ダウンロードできる国に制限がある場合など、一部、ダウンロードできないアプリがあります

  • apkをダウンロードしようとしても無反応(何もおきない)

Chromeを再起動してみる

詳しくはこちら(2013/3時点)

野良アプリとして配布されているものをダウンロードしてもOKです。


2. Java以外のファイル(AndroidManifest.xml、resフォルダ以下)を生成

apktoolのインストール

こちらから以下の2ファイルをダウンロード

apktool-install-macosx-r04-brut1.tar.bz2
apktoolx.x.x.tar.bz2

(mac/windows/linuxは適宜選択)

二つのファイルを解凍して、パスの通っている場所に配置します。
(/usr/local/bin/ か AndroidSDKのtoolsフォルダあたり)

使い方

ターミナル(Windowsの場合はコマンドプロンプト)から以下のコマンドを実行すればOK

$ apktool d xxx.apk

※xxx.apkはバラしたいapkファイル名を指定

そうすると実行したフォルダに新しいフォルダが作成されて、その中にデコードされたapkファイルの中身が入っています。
マニフェストファイルやリソースファイルが確認できます。

詳しくはこちら

3. Javaファイルの解析

以下の2つのツールを使うと簡単にapk内のソースをJavaソースコードに逆コンパイルすることができます。

  • dex2jar


①dex2jarのインストール

こちらから最新版のdex2jar-x.x.x.x.zipをダウンロードして適当な場所に解凍
以上!

Java Decompilerのインストール

こちらから最新版のjd-gui-x.x.x.osx.i686.dmgをダウンロードして適当な場所に解凍
(mac/windows/linuxは適宜選択)
以上!!

使い方

ターミナル(Windowsの場合はコマンドプロンプト)から以下のコマンドを実行

$ dex2jar.sh xxx.apk

※xxx.apkは解析したいapkファイル名を指定

問題がなければxxx_dex2jar.jarというファイルが生成されます。
この生成されたjarファイルをJava Decompilerで開けばOK

詳しくはこちら

かなり元に近い形で再現されます!