Android 进阶之 反编译
之前听到反编译一直以为反编译只能获取到资源以及AndroidManifest文件,但是在有次工作中分析问题的时候涉及到第三方的Apk,和我合作的工程师居然通过反编译获取到代码,但是刚刚工作不久感到很吃惊所以回去查找了一些资料后终于掌握了反编译技术,在后面的工作中也陆陆续续用到。今天将通过这篇博客来将自己学到的分享出来:
这篇文章将只介绍Linux系统下的反编译过程,至于Window系统和Mac系统,只是工具不同而已:
反编译源码
反编译源码涉及到如下工具:
dex2jar 将apk中的classes.dex转化成jar文件
jdgui 将apk中的classes.dex转化成jar文件
- 将apk文件后缀改为zip并解压,得到其中的classes.dex,将classes.dex复制到d2j-dex2jar.sh所在目录dex2jar-0.0.9.15文件夹。
- 运行转换结束之后将会出现如下提示:
./d2j-dex2jar.sh classes.dex
dex2jar classes.dex -> classes-dex2jar.jar
- http://jd.benow.ca/ 下载jdgui
使用jdgui打开上述生成的classes-dex2jar.jar就可以看到代码了。
反编译资源
一般apktool用于反编译提取apk资源,提取apk资源可以使用如下命令
apktool.jar d app-signed.apk
如果要将反编译完的文件重新打包成apk,只要在命令行中输入apktool.jar b ./apkunpackfolder