啊菜写本篇文章的目的是为了总结,而反编译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文件,得到文档结构图
二、将classes.dex文件解压出来,然后使用工具反编译成.jar文件,再进一步反编译出java文件
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文件。
2.用WinRAR软件解压出jar文件中的class文件,然后用jad或DJ Java Decompiler反编译工具将.class文件反编译成.java文件
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看看
会列出一些帮助的话就成功了(解释d为加压第一个路径为你的apk所在的位置。第二个是要输出的位置)
apktool d XXX.apk ABC反编译XXX.apk到文件夹ABC
3.在解压后的文件夹中可以得到apk的xml配置文件
四、将“二”中得到的class文件和“三”中得到的xml文件组合成一个android工程,即可得到完整的apk源码。
转载请注明来源:啊菜's BLOGhttp://hi.baidu.com/edgarcai
专业名词解释:
APK
APK是AndroidPackage的缩写,即Android安装包。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。
apk文件和sis一样最终把android sdk编译的工程打包成一个安装程序文件格式为apk。 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。一个APK文件结构为: META-INF/ Jar文件中常可以看到 res/ 存放资源文件的目录 AndroidManifest.xml 程序全局配置文件 classes.dex Dalvik字节码 resources.arsc 编译后的二进制资源文件总结下我们发现Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接,和Windows Mobile中的PE文件有区别,这样做对于程序的保密性和可靠性不是很高,通过dexdump命令可以反编译,但这样做符合发展规律,微软的 Windows Gadgets或者说WPF也采用了这种构架方式。在Android平台中dalvik vm的执行文件被打包为apk格式,最终运行时加载器会解压然后获取编译后的androidmanifest.xml文件中的permission分支相关的安全访问,但仍然存在很多安全限制,如果你将apk文件传到/system/app文件夹下会发现执行是不受限制的。最终我们平时安装的文件可能不是这个文件夹,而在android rom中系统的apk文件默认会放入这个文件夹,它们拥有着root权限。
原文地址:http://hi.baidu.com/spiderjun/blog/item/ae795a5994f0233d2934f02d.html
相关推荐
APK反编译APK反编译APK反编译APK反编译APK反编译APK反编译APK反编译APK反编译
反编译apk所需的工具,包含apktool,dex2jar-0.0.9.15,jd-gui-0.3.5.windows
1. 下载成功后解压 2. 将apk文件放到onekey-decompile-apk目录下 3. 将apk文件拖拽到_onekey-decompile-apk.bat上 ... 会在onekey-decompile-apk目录下生成和apk同名的jar文件(dex2jar反编译出来的class)
看到网上apk反编译文档很多,但很零散,本人将其一起打包,方便大家。 apk反编译说明 1. 将aapt,apktool,apktool.jar拷贝到/usr/local/bin下(在root权限下才可以,修改属性chmod)。 2. dex2jar目录下的dex2jar.sh 是...
android安卓app开发之用AndroidStudio反编译apk.zip
android 反编译apk 工具 反编译方法
反编译Apk得到Java源代码 反编译Apk得到Java源代码
通过Bat文件一次可以反编译多个 apk文件,已经内置apktool readme.txt 1、安装好jdk 1.6并配置好java环境 ; 2、将要反编译的APK 放到apk 文件夹中;...3、双击 反编译apk.bat; 4、反编译后的apk就会显示在newapk文件夹下;
反编译需要的工具 apktool dex2jar jd-gui.exe
快速获得反编译apk的代码和里面的布局资源
反编译APK工具apktool apktool d apk文件 目标目录
可帮您批量反编译Android的apk程序
jadx-0.6.1-dev-build226,Android反编译apk工具,你值得拥有!
Android_反编译apk_到java源码的方法
Android APK反编译工具,用于反编译APK 反编译zip包使用: 1. 解压zip包 2. cmd进入到文件夹目录 3. 将要反编译的Apk拷贝到该目录下 4. 输入命令>winhackapk.bat xx.apk outfolder
Android反编译apk到java源码的方法[收集].pdf
《apk+dex文件反编译及回编译工具》 简称 apkdb 是一款针对android os系统的apk程序,直接反编译修改的工具。apkdb集合了当今最强悍,最犀利的apk及dex文件编译工具;正常安装后,它直接在【鼠标右键】创建快捷菜单...
反编译Apk得到Java源代码 转载自:http://hi.baidu.com/%CB%BF%D4%B5%CC%EC%CF%C2/blog/item/2284e2debafc541e495403ec.html 工具下载:需用到dex2jar和JD-GUI这2个工具 dex2jar下载地址:...
Android 反编译APK到Java源码的方法