Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

概要

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で書いてる場合に関してもノータッチです。
自己責任で活用しておくれやす。

GeneralD
フリーランス。現在は傭兵エンジニア。某IQ集団の会員。 毎日サラリーマンの軍勢と汽車に乗ってIT戦地へ出兵する。 コモンスキルは「スキルインストール」
https://zyxw.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした