1、Android 反编译 apk 到 java 源码的方法 分类: Android 2010-12-31 15:46 1931 人阅读 评论(1) 收藏 举报 Apk 文件破解可见源码 获取 apk 的 资源 图片 直接用 WinRAR 打开,res/drawable 直接拖拽出来即可。 获取 xml 文件信息 虽然能用 WinRAR 看到里面的 xml 文件,但是 xml 是经过优化的,无法直接查看,需要使用 apktool 工具 , 下载 地址: https:/ 。 下载 apktool-1.3.1.tar.bz2 和 apktool-install-windows-2.2_r01-2.ta
2、r.bz2 解压到同一个目录,然后把待破解的 apk 文件拷贝到同一目录,DOS 在 cmd 下进入apktool 所在路径,然后输入 apktool d “XXX1“ “XXX2“,XXX1 指的是你要反编译的apk 文件,XXX2 指的是反编译后文件存放的路径, 如:apktool d “C:/taobao.apk“ “C:/taobao“ 3 反 编译 dex 获取 Java 源代码 Apktool 工具只能反编译成 smali 的中间代码文件,这里需要借助另外一个 开源 工具:dex2jar,下载地址: http:/ 。这个工具不能直接翻译成 java 文件,但是可以把 dex 文件转
3、换成 jar 文件,然后可以通过 jad工具把 jar 文件反编译成 Java 源文件,jd-gui 下载地址: http:/java.decompiler.free.fr/jd-gui/downloads/jd-gui-0.3.3.windows.zip 。 详细步骤:解压 apk 文件,直接拖拽 (rar 解压软件),找到 classes.dex 文件 在 cmd 下进入 dex2jar.bat 所在路径, 然后输入“dex2jar.bat XXX”,XXX 指的是你要反编译的 apk 中的 classes.dex文件所在路径及名称(classes 上面解压得到), 如:dex2jar.b
4、at D:/classes.dex; 这样会生成一个 classes.dex.dex2jar.jar 文件,然后用 jd-gui 工具将 jar 文件反编译成 java 文件,选择保存所有,它会生成一个压缩文件,所有的源码都在这个压缩文件中,解压了就可以看到详细的代码了。很强大吧。 from:http:/ -一、获得 APK 源代码: 工具下载 :需用到 dex2ja r 和 JD-GUI 这 2 个工具 dex2jar 下载地址 : http:/ JD-GUI 下载地址: windows 版 JD-GUI : http:/ Linux 版 JD-GUI : http:/ 步骤: 1. 把 a
5、pk 文件改名为 .zip ,然后解压缩 , 得到其中的 classes.dex 文件,它就是 java 文件编译后再通过 dx 工具打包成的 , 所以现在我们就用上述提到的 2 个工具来逆方向导出 java 源文件 2. 把 classes.dex 拷贝到 dex2jar.bat 所在目录。 在命令行模式下定位到 dex2jar.bat 所在目录,运行 dex2jar.batclasses.dex ,生成 classes.dex.dex2jar.jar 3. 运行 JD-GUI 工具(它是绿色无须安装的) 打开上面的 jar 文件,即可看到源代码 - 二 . 反编译 apk 生成程序的源代码
6、和图片、 XML 配置、语言资源等文件。 工具下载: 在 http:/ 下 载获得, apktool-1.0.0.tar.bz2 和 apktool-install-windows-2.1_r01-1.zip 两个包 。 1. 解压缩下载的两个文件包, apktool-install-windows-2.1_r01-1.zip 解压缩后得到的包里有 aapt.exe 和 apktool.bat. (注意要把 apktool-1.0.0.tar.bz2 解压后的一个 .jar 文件 copy 进来) 2. 打开命令窗口 (开始 运行,输入 cmd ,回车。)进入到 apktool.bat 的文件
7、夹里。 输入: apktool dC:/*.apk C:/* 文件夹 (命令行解释: apktool d 要反编译的文件 输出文件夹) 特别注意:你要反编译的文件一定要放在 C 盘的根目录里, 3. 打开 C:/* 文件夹 就可以得到我们学院的各种资源了。 from:http:/ -本文主要介绍如何逆向一个 Android 的 APK 应用程序,本文提供的方法仅供研究学习之用。本文需要用到的工具有jdk 这个用于搭建 java 运行环境AXMLPrinter2.jar 这个用于逆向.xml 文件baksmali.jar 这个用于逆向 classex.dex 文件由于 Android 的 .ap
8、k 文件实际上就是一个 zip 文件 可以直接用 winrar 打开 如下图所示: 用 rar 打开之后 我们可以看到该文件实际上是一个 zip 包 里面包含了 META-INF 文件夹,这个文件夹是用于保存签名文件,确保包的完整性的res 文件夹下就是 apk 所要用的资源文件,都是原封不动地保存,我们可以直接提取出来,做汉化时就可以直接阅读 string 文件然后进行修改AndroidManifest.xml 文件则是编译过后的一个配置文件,用于声明程序中所包含的 activity,service 以及程序所具有的能力,也就是权限。resources.arsc 则是编译过后的一个资源说明文
9、件,而我们要关注的主要是classes.dex 。我们编写的 Android 程序,在源程序里的所有.java 的文件,最终都编译到这样 1 个.dex 文件当中,在 Android 手机上的 dalvik 虚拟机上执行。首先,我们介绍如何逆向一个.xml 文件由于 apk 包里的 xml 文件我们直接用记事本打开还是有一些乱码所以需要我们还原才能更好的看出这里需要用到 AXMLPrinter2.jar 工具具体的则是打开命令行 我们以 AndroidManifest.xml 为例,输入如下命令java -jar AXMLPrinter2.jar AndroidManifest.xml And
10、roidManifest.txt有兴趣的也可以写成一个.bat 的脚本,方便执行我们可以看看 执行的结果执行前的 AndroidManifest.xml 文件执行之后 我们可以再看看view plain copy to clipboard print ? 1. 2. 8. 12. 16. 18. 21. 22. 25. 26. 27. 28. 31. 32. 36. 37. 38. 41. 42. 45. 46. 49. 50. 53. 54. 57. 58. 61. 62. 65. 66. view plaincopy to clipboardprint?1. 3. 9. 13. 17. 1
11、9. 22. 23. 26. 27. 28. 29. 32. 33. 37. 38. 39. 42. 43. 46. 47. 50. 51. 54. 55. 58. 59. 62. 63. 66. 67. 基本能还原的跟源程序大致相同这里我是拿的 eoe 出的一个墙纸程序为例接下来,大家肯定更加关心 classes.dex 的逆向这个其实跟之前那个也很相似采用 baksmali.jar 这个工具,国外一个对 Android 研究的很深入的大牛做的执行代码java -jar baksmali.jar -o classout/ classes.dex讲 classes.dex 能逆向成一个文件夹这里我可以截个图给大家看看点开其中一个文件 我们继续来看大家是不是觉得这个代码很亲切对 从这个代码我们基本能大致推断出源程序的一些结构流程从中借鉴本文仅供研究学习之用欢迎与我讨论交流本文地址如下 转载请注明此句