android应用程序打包发布为.apk文件,此文件中可以在 android系统中进行安装。

在android中提供了方便的打包工具:

android-sdk-windows\platform-tools目录下,包括有aapt、dx、dexdump指令。

每个.apk文件中都包含以下目录结构

Android svc含义 android.sc是什么软件_移动开发

其中assets和res目录包含了我们的资源文件的内容,classes.dex文件是由src目录编译生成的.dex文件,resources.arsc主要是资源文件的索引

注:apk文件经过解压后,这里的xml文件都是加密后压缩的文件,我们并不能直接查看这类文件。classes.dex文件是在java源文件生成class文件后,经过dx指令编译生成的.dex文件,以便在android的虚拟机上运行的文件。因此,我们需要经过反编译还原它的本来面目。

经下来进行本文重点, android反编译。

android反编译是有多种工具可以进行反编译,本人习惯用apktool+dex2jar+jd-gui这三个工具进行android的反编译。

apktool的下载地址:http://code.google.com/p/android-apktool/downloads/list

dex2jar的下载地址:http://code.google.com/p/dex2jar/downloads/list

jd-gui的下载地址:http://java.decompiler.free.fr/?q=jdgui

注:google的网站有时总会被和谐,请多次尝试。。。。

用法如下:

1.首先通过apktool这个开源的工具进行解压缩,这样就会把加密的xml文件反编译成正常的文件。

  将apktool.jar,apktool.bat,aapt.exe放到同一个文件夹下

Android svc含义 android.sc是什么软件_jar_02

在当前目录下就生成了一个与apk文件同名的目录,此目录结构如下:

Android svc含义 android.sc是什么软件_Android svc含义_03

此时res文件夹下的资源文件都已反编译成功,dex文件反编译成smali文件,但此文件与java文件还相差太远,所以我们需要单独反编译dex文件。

2.通过dex2jar将dex文件反编译成jar文件

 

Android svc含义 android.sc是什么软件_反编译_04

将解压的classes.dex文件与dex2jar.bat放在同一目录下,在当前目录生成了classes_dex2jar.jar文件,此文件就是我们熟悉的jar文件,包含了所有的反编译后的class文件。

3.通过jd-gui打开此jar文件

Android svc含义 android.sc是什么软件_移动开发_05

至此,一个apk文件就反编译完成了。

 

我认为反编译工作还是很有必要的,能够学习到别人的长处,不断提升自己的水平。