作为Android程序员,看到别人写了炫酷的APP,就会思考如果是我,我会怎么写呢,有时候没有思路,或者实现的略有缺陷,就会很难受,这时候怎么办。当我们对别人开发好的应用感兴趣时,利用反编译,看下别人到底是如何实现的。下面就介绍下我学习到的反编译的方法:
1.准备工具
巧妇难为无米之炊,反编译之前我们要将工具准备好。这里我们需要两个工具:
2.反编译过程
工具下载完成之后把这两个工具和你要反编译的apk放在一个目录下,我们就可以开始我们的反编译之路啦,哦这里还要说明一下,反编译APK是需要java的环境(这里就不介绍java的环境搭建了,不知道的请你面壁去!!)。
2.1使用apktool获取apk的资源文件
打开命令行,进入工具包和apk所在的目录,接下来就是运行apktool.jar 这个jar文件来将apk文件进行反编译,在java中运行可执行的jar包命令是:java -jar jar包名.jar
使用下面的命令运行apktool.jar来反编译apk:
java -jar apktool.jar d -f apk绝对路径 -o apkDex
这个命令是将你想想要反编译的apk,将反编译生成的文件放到当前目录下的【apkdex】文件夹下,这个参数可以自己取。如果在反编译过程中没有报错,就表示反编译成功了。这里我遇到了一个问题当我执行命令的时候命令行报错Error: Unable to access jarfile XXX.jar这时候你要看下你是否进入了工具包所在的目录下或者你运行的jar的文件名是否有打错。反编译成功,会在当前目录下生成一个apkDex文件夹,打开文件夹就会看到反编译生成的文件
打开res文件夹就能看到,apk里的资源文件了
res目录想要看查看哪个xml就用文本编辑器打开看到 ,到这里就是使用apktool将这个工具反编译得到图片,xml等资源文件的过程。
2.2使用dex2jar反编译apk得到java源代码
将你要反编译的apk后缀名改成zip,并解压,取出其中的classes.dex文件(这个文件就是java文件编译在通过dx工具打包生成的)。下载的dex2jar也解压,并把apk的classes.dex取出来放进去。
dex文件在命令行进到这个目录下,输入d2j-dex2jar classes.dex
执行过程中没有出错就表示反编译成功,在当前目录下就可以看到生成的classes.dex2jar.jar文件这就是java的源代码了,之后就可以使用jd-gui查看源代码了,但是混淆过得class,反编译的效果不是那么理想了。不过我么也能通过修改xml利用apktool重新生成apk,来对apk进行汉化或者去广告。这个就不在本文不细说了。
网友评论