Android 逆向工具 dex2jar, enjarify 和 AXMLPrinter2

dex2jar

存储路径在 “~/dev/ApkTOOL/dex-tools-2.1-SNAPSHOT”

使用方法

1
2
3
unzip crackme.apk -d ~/crackme
./d2j-dex2jar.sh classes.dex
unzip classes-dex2jar.jar -d ~/crackme-jar

enjarify

github: https://github.com/google/enjarify
参考: https://segmentfault.com/a/1190000004996344

Enjarify 是一个将Dalvik字节码转化为等价的Java字节码,然后可以用一系列的Java分析工具去分析Android应用。之前我们一直使用Dex2jar来完成这个工作,不过Dex2jar已经算是一个非常老的工具咯。Dex2jar在绝大部分情况下都挺不错的,但是如果碰到了些模糊的特性或者特殊案例就会出错或者默默地吐出一些错误的结果。相比之下,Enjarify在设计的时候就考虑到了尽可能多的情况,特别是对于那些Dex2jar不起作用的情况下。另外,Enjarify能够有效地处理Unicode编码的类名、常量,隐式类型转换、正常处理流程中的移除处理啊等等。

使用方法

更详细参考 Readme

1
2
3
4
python3 -O -m enjarify.main yourapp.apk
或者建立软链接
ln -s "$PWD/enjarify.sh" ~/bin/enjarify
enjarify yourapp.apk

目录结构分析

1
2
3
4
5
python3 -O -m enjarify.main ../13.apk
mv 13-enjarify.jar ../
cd ..
unzip 13-enjarify.jar -d 13-enjarify
tree -f 13-enjarify

AXMLPrinter2.jar

存储路径在 “~/dev/ApkTOOL/AXMLPrinter2.jar”

1
java -jar ~/dev/ApkTOOL/AXMLPrinter2.jar AndroidManifest.xml > main.xml

目录对比工具 meld

1
sudo apt-get install meld