Androidアプリを解析する方法が気になって調べてみると、とても簡単に解析できてしまうことに驚きます。
もちろん難読化といった処置をしてあるアプリも多数ありますが、ソースコードは読めてしまいます。
パズドラのソースコード解析やモンストのソースコード解析を行っているサイトもあったりと、Androidのapkの逆コンパイルの簡単さが際立つ印象ですね。
今回はサクっとapk解析のやり方を見ていきますが、Android SDKのインストールは終わらせておきましょう。
目次
apkファイルの入手
もしまだAndroid SDKをインストールしていない場合には「Flashtoolの使い方は簡単!Xperia Tablet Z SO-03EをAndroid 5.0 Lollipopにアップデート!」にある「Android SDKをインストールする」の項目をご覧下さい。
さて、端末にインストールしてあるapkをパソコンに転送しなくてはいけません。
Androidの設定を「開発者向けオプション」から「USBデバッグ」を有効にしてUSBケーブルで接続します。
そしてAndroid SDKのadbを利用してインストール済みのアプリ一覧を取得します。
PCにコピーするコマンドは以下です。
$ adb pull /data/app/jp.hogehoge.apk
apkのソースコードを解析する
拡張子apkをそのままzipに変更し7-zip対応の解凍ソフトで展開します。
「[Application].dex」というファイルがあることを確認します。
このdexファイルがアプリの本体ファイルです。
本来はDalvikVMで動作するファイルですが、jarファイルに変換することでソースコードを表示できます。
dex2jarでdexファイルを変換する
dexファイルをjarファイルに変換する為のツールを用意します。
pxb1988/dex2jar · GitHub
dex2jarの使い方となる変換コマンドです。
$ dex2jar jp.hogehoge/[Application].dex
[Application]_dex2jar.jarが作成されます。
Java Decompiler/jd-guiで逆コンパイルする
javaファイルへのデコンパイルするツールを利用して、逆コンパイルします。
Java Decompiler
jd-guiを開いてjarファイルを開くだけで逆コンパイルした状態でソースコードを見ることができます。
難読化している場合にはクラス名は簡略化されますがソースコードは表示できてしまいます。
プログラミング学習に革命を。
プログラミング学習のカリキュラムが一律で全員一緒って不自然ですよね。自分にあったレベルでガシガシカリキュラムを組んでどんどんスキルアップさせてもらえるプログラミングスクールを選んで下さい。
そういった優良なプログラミングスクールは運営コストがかかるので、多くはないですが、「コーチング主体のプログラミングスクール【CODEGYM Monthly(コードジムマンスリー)】」のコーチング型が学習革命です。かならず思い出したくなる日がくるのでブクマしておいて下さい。
はっきり言うと最効率学習曲線を作れるので、サクっと多言語スキルを身に着けたい時はガシガシ使い倒すのがおすすめです。
HTML5 / CSS3 / JavaScript / TypeScript / PHP / swift / Python / Django / CakePHP / Laravel / COBOL / VBA / シェル / C言語 / C# / C++ / VB6 / VB.net / Ruby / Ruby on Rails / Java / Java8 / JavaEE7 / JSP / Servlet / RedHat / シェル / AWK / Oracle / TypeScript / MySQL / Symfoware / Next.js / Nuxt.js / Flutter / Firebase / GraphQL / Blockchain / Typescript / Dart / Go / Perl / Selenium / AngularJs / ReactNative /React / Vue.js / Node.js 他
ちょっと良い教科書を用意しているだけで、独学で学ぶのと同じようなスクールも多いので注意して下さい。そんな所に入ってしまうと、入会金や月額費用をだけでなく貴重な時間も失います。経験者談
まとめ
このようにAndroidアプリの解析は本当に簡単にできてしまいます。
もしも今後Androidアプリの公開を検討しているならば難読化などのセキュリティ対策は必須と言えますね。
自分の公開しているアプリの解析をしてみて背筋が凍りついた!なんて思いはしたくはありませんね。
今日も知識欲は止まらない。