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

apkをコマンド一つでjavaにデコンパイルする

More than 1 year has passed since last update.

自分が作ったアプリを難読化した時に、どんな感じで難読化されるのか?というのを確認しないとちゃんと難読化出来てるのかわからないのでやってみる。

ぽちぽちコマンドもろもろ打って確認して。。というのをやるのめんどそうだなぁと思ったら、
コマンド一つでいい感じにやってるqiitaを見つけた。

http://qiita.com/GeneralD/items/a4af8d1ac2b13a8c0bc8

brew周りとか違ってたり、コマンド周りとか改善ポイントがあったのでちょっと手順をまとめてみる

brewでインストール

dex2jar(名前の通りdexファイルからjarファイルを生成する)とjad(Javaにでコンパイルする)が必要なのでbrewで入れる

brew install dex2jar
brew cask install Caskroom/cask/jad

※ちょっとガチャガチャやりながら入れたので、他にもbrew周りで必要かもしれない

スクリプト作る

.zshrcとかに以下のように追加する。bashは普段使ってないのでわかりません。。。

# 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.`date +"%Y%m%d%H%M"`"
  unzip $1 -d $dst
  d2j-dex2jar -o ${dst}/classes-dex2jar.jar ${dst}/classes.dex
  mkdir -p ${dst}/classes
  unzip ${dst}/classes-dex2jar.jar -d ${dst}/classes
  jadr ${dst} ${dst}/src
}

以下のコマンドで実行できるようになる

deapk app-release.apk

これを実行すると

app-release.depackaged.201704022234

このフォルダが出来て、srcフォルダ配下にjavaにデコンパイルされたコードが入ってる。
普段kotlinで書いてるのでkotlinバージョンとかあるのかなぁ。

参考元のqiitaとの変更点は以下の2つ

  • コマンド実行する度にフォルダの最後に日付が入るようにした
  • brewから入れた場合にコマンドがdex2jard2j-dex2jarになってたので修正

Gson周りで難読化するとどうなるか調べてみたかったのでこれでやりやすい感じになった。
そんな今日この頃。

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
ユーザーは見つかりませんでした