啊菜
写本篇文章的目的是为了总结,而反编译APK的主要目的在于学习,通过反编译,我们可以养眼下一些优秀的Android应用程序代码。 啊菜 在这儿热情提示下:还是尽量不要利用反编译进行汉化或修改,毕竟程序员写个程序不容易啊,多少个奋斗的星夜里才出炉这么个优秀的产品! 网络上有很多反编译android APK的方法,先从反编译的原理讲起: 目前Google Android平台选择Java Dalvik VM的方式编译打包APK的方式是很容易破解和被修改。 首先APK文件的本质就是一个MIME为ZIP的压缩包,我们修改ZIP或RAR后缀名方式就可以看到内部的文件结构,类似 Sun JavaMe的Jar压缩格式一样,不同的是Android上的二进制代码被编译成为Dex的字节码,所有的Java文件最终会编译进DEX文件中,作为托管代码让Android 虚拟机可以识别,同时我们也可以很轻松的进行反编译。所有的类调用、涉及到的方法都在里面体现到,至于逻辑的执行可以通过实时调试的方法来查看,当然这需要借助一些跟踪工具。 开始 反编译之旅 一、用winrar或zip软件打开apk文件 ,得到文档结构图 ![]() 1.在cmd下进入dex2jar.bat(http://dex2jar.googlecode.com/files/dex2jar-0.0.7.3-SNAPSHOT.zip)所在路径,然后输入“dex2jar.bat XXX”,XXX指的是你要反编译的apk中的classes.dex文件所在路径及名称. 比如: 我的dex2jar.bat路径为D:/Android/apk_decode/dex2jar/dex2jar.bat, classes.dex路径为D:/Android/apk_decode/dex2jar/apk/classes.dex, 命令为:你进入dex2jar.bat路径下后,输入dex2jar.bat apk/classes.dex,这样会生成一个jar文件。 ![]() 3.不解压出jar中的class文件,直接用JD GUI工具打开jar文件 ![]() 4.步骤2和3选择其中一个即可,建议用步骤2,步骤3可能出现乱码 三、上面操作只能得到class文件,下面利用Google提供的apktool得到xml文件 1.下载apktool,可以去Google官方下载apktool-1.3.2.tar.bz2和apktool-install-windows-2.2_r01-3.zip.解压apktool-install-windows.zip到任意文件夹(例如D盘根目录),解压apktool.jar到apktool-install-windows同目录下。 2. Win+R运行CMD,用cd命令转到apktool-install-windows所在文件夹,输入apktool看看 apktool d XXX.apk ABC反编译XXX.apk到文件夹ABC ![]() 3.在解压后的文件夹中可以得到apk的xml配置文件 四、将“二”中得到的class文件和“三”中得到的xml文件组合成一个android工程,即可得到完整的apk源码。 专业名词解释: 原文地址:http://hi.baidu.com/spiderjun/blog/item/ae795a5994f0233d2934f02d.html |