GooglePlayストアからapkファイルをダウンロード → デコンパイル → 解析までの流れ
1. 解析したいアプリのapkファイルを入手
GooglePlayストアからapkファイルをダウンロードする大まかな手順は以下
①Android端末での手順
GooglePlayから「Device ID」というアプリをインストールしIDをメモしておく
②PCでの手順
- Google Chromeがインストールされていない場合はインストール
- 「Click Here to install now」をクリックして .crx ファイルをダウンロード
- 左下の「APK_Downloader_1.4.0.crx」隣の「▼」→「フォルダを開く」
- Chrome 右上の→「ツール」→「拡張機能」を開き、先の「APK_Downloader_1.4.0.crx」を直接ドラッグアンドドロップ
- 「新しい拡張機能の確認」画面 → 「追加」
- 「Options」画面が開きます。
- あなたのGoogleアカウントの「Email」と「パスワード」を入力
※「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
- Java Decompiler
①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
詳しくはこちら
かなり元に近い形で再現されます!