LoginSignup
85
84

More than 5 years have passed since last update.

一発でAndroidアプリをリバースエンジニアリングする

Last updated at Posted at 2014-05-19

概要

Androidアプリをコマンドラインで一発でリバースエンジニアリングする。これによって自分のアプリがどれだけ難読化されているかを手軽に確認できる。
難読化についてはProguardを利用すれば良い。
Proguardについては過去に記事を書きました。結構ハマりどころが多い気がしたので良かったら参考にしてください。
http://qiita.com/GeneralD/items/f12889c4ac9ddc22e41f

準備

jadとdex2jarを入れる。
Macユーザーはbrewで両方手に入る。

brew tap homebrew/binary
brew install jad
brew install dex2jar

スクリプト

お好みでスクリプトファイルにするなりシェル設定ファイルに関数として書くなりする。下記はzshell関数として書いた例。

# Decompile Java classes recursively keeping hierarchy
jadr() {
  jad -8 -s java -d $2 -r $1/**/*.class
}

# Decompile Android application
deapk() {
local dst=${${1##*/}%%.*}
dst+='.depackaged'
unzip $1 -d $dst
dex2jar ${dst}/classes.dex
unzip ${dst}/classes_dex2jar.jar -d ${dst}/Classes
jadr ${dst} ${dst}/src
}

使用方法

上の例をshellの設定ファイルに関数として定義した場合

deapk アプリケーションファイル名.apk

で実行すると

作業ディレクトリに、アプリケーションファイル名.depackagedというディレクトリ名で出力します。

もっと面倒臭がる

もっと面倒臭がるなら

alias -s apk=deapk

とかしておくといいのではないでしょうか。

注意事項

JNI使っているアプリの場合ネイティブ部分のリバースエンジニアリングに関しては今回はノータッチです。
Scalaで書いてる場合に関してもノータッチです。
自己責任で活用しておくれやす。

85
84
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
85
84