Android中apk包的反汇编

来源:互联网 发布:全文期刊数据库 编辑:程序博客网 时间:2024/06/15 03:27

原文地址:http://blog.csdn.net/ariesjzj/article/details/7311340

这里介绍比较流行的两种方法。

方法一的优点是可将byte code反汇编成代码形式,但毕竟是逆向工程,有时还是会插些byte code,我还碰到过反汇编完打开到某些文件直接crash掉的,但毕竟少数。另外就是对xml和资源文件的反汇编貌似不给力。这方面方法二反汇编出来的好多了。方法二反汇编出来的东西比较规整,缺点是java的代码都是smali的byte code。一般情况下我是先用第一种,不行了用第二种。其实大多数情况要两个结合起来看。

方法一:jd-gui + dex2jar

先把apk用unzip解压。windows上改成.zip后解压即可,其实用7-zip的话不用改强行解压就行了,Linux下unzip就行。解压完了目录下有个classes.dex文件,用dex2jar工具里的dex2jar.sh将之转成jar文件(windows下用dex2jar.bat):

$dex2jar.sh classes.dex

最后用jd-gui将jar打开。



第二种:apktool,这个方法的另一好处是解压完了还可以再打包回去。虽然打包回去的功能我还没用过。

apk解包:

$ apktool d abc.apk <directory>

apk打包:

apktool b <directory>


最后解压完了后在lib目录下可能会有jni调用的.so文件,那就老老实实拿objdump和readelf看吧