准备的工具除了jdk还有以下内容(在Google官网都有):把apktool-install-windows-2.1_r01-1.zip,dex2jar-0.0.7-SNAPSHOT.zip 解压到一个盘的根目录下(这里我选择H盘),同时把 AXMLPrinter2.jar,apktool.jar 和你想解包的apk软件也放在同一个目录下,然后“运行--cmd”打开控制台,输入 cd /d h : /进入H盘的根目录然后输入以下内容( 控制台不要关,为了后面方便):其中apktool.jar 是解包工具,d表示解包, memo.apk是我要解包的软件, memo表示解包后输出到这个文件夹,等待片刻,就会生成memo文件夹,打开里面会有res文件夹下的所有文件和 AndroidManifest.xml ,用记事本就可以查看了。 以上是获得.xml文件和图片,下面获得里面的.java源代码:用winRar或者好压打开memo.apk ,截图如下:把里面的classes.dex文件解压到H盘根目录下,然后重新打开控制台,输入 dex2jar.bat classes.dex 得到一个名为 classes.dex.dex2jar.jar 的文件,此时用jd-gui.exe打开classes.dex.dex2jar.jar 就可以看到所有源代码了! 如果想把反编译好的文件变回apk文件,只要在控制台输入 apktool.jar b memo就可以了其中b就是重新封包的意思, memo是你刚才解包出来的文件夹,前提是确保所有文件都在memo文件夹里!!
APK是AndroidPackage的缩写,即Android安装包(apk)。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。apk文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,格式为apk。 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是DalvikVM executes的简称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。
APK解压的目录:
1. META-INF\ (注:Jar文件中常可以看到);
2. res\ (注:存放资源文件的目录) ;
3. AndroidManifest.xml (注:程序全局配置文件) ;
4. classes.dex (注:Dalvik字节码);
5. resources.arsc (注:编译后的二进制资源文件)。
apk反编译就是通过使用apk编译工具将apk文件中的源文件和资源反编译出来,得到的源文件和资源文件可以进行处理后再进行编译,以达到个性化定制,汉化apk等目的。
apk反编译工具
1、最典型的apk编译工具的核心是apktool,但是因为操作需要调用cmd命令,所以出现了很多具有可视化界面的各种编译工具,像easyapk,apkdb,doapk
2、dex2jar.jar,将apk中的classes.dex转化成Jar文件,再通过jd-gui工具反编译jar文件。
apk编译方法,使用apkdb编译apk文件只需要在安装apkdb后直接右击反编译就可以将apk文件反编译出来
apk编译方法
使用apkdb编译apk文件只需要在安装apkdb后直接右击反编译就可以将apk文件反编译出来
1、使用原生apktool工具,需要将apktool的两个文件释放到window目录下,在cmd中使用 apktool d apk文件名 命令来编译apk文件,此时命令行的执行目录与apk文件所在目录必须一致。
2、首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex。
把apk文件当作zip文件打开,例如把a.apk文件名称变为a.apk.zip
打开压缩包,如果人家源代码没有混淆,或者没有其他加密办法,就可以看到*.dex文件,可以去找dex反编译工具来看源代码。
否则,得到源代码的可能性就比较小了