自分が作ったアプリを難読化した時に、どんな感じで難読化されるのか?というのを確認しないとちゃんと難読化出来てるのかわからないのでやってみる。
ぽちぽちコマンドもろもろ打って確認して。。というのをやるのめんどそうだなぁと思ったら、
コマンド一つでいい感じにやってるqiitaを見つけた。
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から入れた場合にコマンドが
dex2jar
→d2j-dex2jar
になってたので修正
Gson周りで難読化するとどうなるか調べてみたかったのでこれでやりやすい感じになった。
そんな今日この頃。