既然安卓是用java写的,应该还是可以反编译得到源代码的。下面是我的实践:
反编译前准备:下载反编译工具包[url]http://pan.baidu.com/s/1qWFcueC[/url]或者[url]http://download.csdn.net/detail/sunboy_2050/4633436[/url]
介绍一下工具包下的各个文件夹及其功能:
[color=red] 在apk2java目录下的dex2jar-0.0.9.9文件夹下,内含apk反编译工具dex2jar,将apk中的classes.dex转化成jar文件,以及源码查看工具jdgui,直接查看反编译后的jar包源代码。[/color]
dex2jar 和 jdgui 最新版本下载:
dex2jar[url]http://code.google.com/p/dex2jar/downloads/list[/url]
jdgui[url]http://code.google.com/p/innlab/downloads/list[/url]
[b]一:通过反编译得到java源代码[/b]
[b]1[/b]:将测试的apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.9文件夹。
在命令行下定位到dex2jar.bat所在目录,运行
dex2jar.bat classes.dex
结果生成
classes_dex2jar.jar
[img]http://dl2.iteye.com/upload/attachment/0099/6593/a04bd6fb-abf9-334b-8d85-08f4051439e1.png[/img]
[b]2[/b]:进入jdgui文件夹双击jd-gui.exe,打开上面生成的jar包classes_dex2jar.jar,即可看到源代码了,如下图:
[img]http://dl2.iteye.com/upload/attachment/0099/6590/63f31db1-e7a7-3cbe-9c2e-af8225d4bc74.png[/img]
[b]二:apk反编译生成程序的源代码和图片、XML配置、语言资源等文件[/b]
在工具包apk2java\apktool1.4.1下面有一个apktool.jar,大家最好下载最新版本的然后覆盖,下载地址:[url]https://code.google.com/p/android-apktool/downloads/list[/url]
[b]1[/b]:在命令行下定位到apktool.bat文件夹,输入以下命令:apktool.bat d [apk文件路径 ] [输出文件夹路径] 如下图:
[img]http://dl2.iteye.com/upload/attachment/0099/6597/89b0afcf-6ec6-30e3-844f-fae66afb2068.png[/img]
反编译的文件如下(AndroidManifest.xml为例):
[img]http://dl2.iteye.com/upload/attachment/0099/6595/c0de8a08-a471-365c-9d97-96c640a1c32f.png[/img]
将反编译完的文件重新打包成apk,很简单,输入apktool.bat b [输出文件夹路径] 即可,然后生成了两个文件夹build和dist。其中,打包生成的apk,在上面的dist文件夹下,Ok!
当然,对于那些经过加密处理混淆代码后的apk,我们即使反编译出来也是看不懂的。想要防止自己的apk被反编译用于非法用途可以借助[url]http://www.ijiami.cn/[/url]。
反编译前准备:下载反编译工具包[url]http://pan.baidu.com/s/1qWFcueC[/url]或者[url]http://download.csdn.net/detail/sunboy_2050/4633436[/url]
介绍一下工具包下的各个文件夹及其功能:
[color=red] 在apk2java目录下的dex2jar-0.0.9.9文件夹下,内含apk反编译工具dex2jar,将apk中的classes.dex转化成jar文件,以及源码查看工具jdgui,直接查看反编译后的jar包源代码。[/color]
dex2jar 和 jdgui 最新版本下载:
dex2jar[url]http://code.google.com/p/dex2jar/downloads/list[/url]
jdgui[url]http://code.google.com/p/innlab/downloads/list[/url]
[b]一:通过反编译得到java源代码[/b]
[b]1[/b]:将测试的apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.9文件夹。
在命令行下定位到dex2jar.bat所在目录,运行
dex2jar.bat classes.dex
结果生成
classes_dex2jar.jar
[img]http://dl2.iteye.com/upload/attachment/0099/6593/a04bd6fb-abf9-334b-8d85-08f4051439e1.png[/img]
[b]2[/b]:进入jdgui文件夹双击jd-gui.exe,打开上面生成的jar包classes_dex2jar.jar,即可看到源代码了,如下图:
[img]http://dl2.iteye.com/upload/attachment/0099/6590/63f31db1-e7a7-3cbe-9c2e-af8225d4bc74.png[/img]
[b]二:apk反编译生成程序的源代码和图片、XML配置、语言资源等文件[/b]
在工具包apk2java\apktool1.4.1下面有一个apktool.jar,大家最好下载最新版本的然后覆盖,下载地址:[url]https://code.google.com/p/android-apktool/downloads/list[/url]
[b]1[/b]:在命令行下定位到apktool.bat文件夹,输入以下命令:apktool.bat d [apk文件路径 ] [输出文件夹路径] 如下图:
[img]http://dl2.iteye.com/upload/attachment/0099/6597/89b0afcf-6ec6-30e3-844f-fae66afb2068.png[/img]
反编译的文件如下(AndroidManifest.xml为例):
[img]http://dl2.iteye.com/upload/attachment/0099/6595/c0de8a08-a471-365c-9d97-96c640a1c32f.png[/img]
将反编译完的文件重新打包成apk,很简单,输入apktool.bat b [输出文件夹路径] 即可,然后生成了两个文件夹build和dist。其中,打包生成的apk,在上面的dist文件夹下,Ok!
当然,对于那些经过加密处理混淆代码后的apk,我们即使反编译出来也是看不懂的。想要防止自己的apk被反编译用于非法用途可以借助[url]http://www.ijiami.cn/[/url]。