APK应用程序的解包、修改、编辑、、打包及应用
前两讲主要讲玩机的最基本的知识,集中在如何刷机。本讲是进级的内容,来谈谈与apk应用程序有关的知识,内容包括akp文件的解包、打包、反编辑、解析、、修改等内容,也介绍几个常用的软件。最后要介绍对apk操作有哪些应用,学会了能干些什么。
这些内容实际上构成了一个很大的课题,用简短的文字无法描述清楚。我准备用三个部分来介绍如下内容:
第一部分:apk应用介绍,解包和打包,常用软件工具
第二部分:三星闭源系统apk文件的处理,和签名
第三部分:介绍apk文件打包解包的各种应用
第一部分是基础知识,第二部分进入实战修改apk应用程序,最后在第三部分来介绍APK应用程序的修改和编辑的各种各样实际应用。
-
前两讲主要讲玩机的最基本的知识,集中在如何刷机。本讲是进级的内容,来谈谈与apk应用程序有关的知识,内容包括akp文件的解包、打包、反编辑、解析、、修改等内容,也介绍几个常用的软件。最后要介绍对apk操作有哪些应用,学会了能干些什么。
这些内容实际上构成了一个很大的课题,用简短的文字无法描述清楚。我准备用三个部分来介绍如下内容:
第一部分:apk应用介绍,解包和打包,常用软件工具
第二部分:三星闭源系统apk文件的处理,和签名
第三部分:介绍apk文件打包解包的各种应用
第一部分是基础知识,第二部分进入实战修改apk应用程序,最后在第三部分来介绍APK应用程序的修改和编辑的各种各样实际应用。
-
---------------------------------------------------------------------------------
第一部分:apk应用介绍,解包和打包,常用软件
相信每为机友对APK文件都不陌生。你可能每天都与APK文件打交道,无论是安装和卸载有用的应用工具、插件、好玩的游戏等等。。。尤其是最近关于2.3.4 XXJVP ROM的,更成为论坛里的热门话题。你们可曾知道ROM是怎样的吗?说来容易做来难。这里要涉及很广泛的知识、手段,以及要花大量的时间。
1. APK文件简介
APK是Android Package的缩写,即Android application package文件或Android安装包。每个要安装到Android平台的应用都要被编译打包为一个单独的文件,扩展名为 .apk。APK文件是用专业软件eclipse编译生成的文件包,其中包含了应用的二进制代码、资源、配置文件等。通过将APK文件直接传到Android手机中执行即可安装。APK文件其实就是zip格式,
第一部分:apk应用介绍,解包和打包,常用软件
相信每为机友对APK文件都不陌生。你可能每天都与APK文件打交道,无论是安装和卸载有用的应用工具、插件、好玩的游戏等等。。。尤其是最近关于2.3.4 XXJVP ROM的,更成为论坛里的热门话题。你们可曾知道ROM是怎样的吗?说来容易做来难。这里要涉及很广泛的知识、手段,以及要花大量的时间。
1. APK文件简介
APK是Android Package的缩写,即Android application package文件或Android安装包。每个要安装到Android平台的应用都要被编译打包为一个单独的文件,扩展名为 .apk。APK文件是用专业软件eclipse编译生成的文件包,其中包含了应用的二进制代码、资源、配置文件等。通过将APK文件直接传到Android手机中执行即可安装。APK文件其实就是zip格式,
但其扩展名被改为apk,在Windows下用解压软件WinRAR/WinZIP/7-Zip可以直接打开。解压后,你会看到有几个文件和文件夹。一个典型的APK文件通常有下列内容组成:
l 程序全局配置文件
classes.dex Dalvik字节码
resources.arsc 编译后的二进制资源文件
META-INF\ 该目录下存放的是签名信息
res\ 该目录存放资源文件
assets\ 该目录可以存放一些配置文件
下面对这些文件和目录做些基本的注释和介绍:
• l
该文件是每个apk应用程序都必须包含的文件,它描述了应用程序的名字、版本、权限、引用的库文件等等信息。
• classes.dex文件
classes.dex是java源码编译后生成的java字节码文件。dex是Dalvik VM executes的全称,
l 程序全局配置文件
classes.dex Dalvik字节码
resources.arsc 编译后的二进制资源文件
META-INF\ 该目录下存放的是签名信息
res\ 该目录存放资源文件
assets\ 该目录可以存放一些配置文件
下面对这些文件和目录做些基本的注释和介绍:
• l
该文件是每个apk应用程序都必须包含的文件,它描述了应用程序的名字、版本、权限、引用的库文件等等信息。
• classes.dex文件
classes.dex是java源码编译后生成的java字节码文件。dex是Dalvik VM executes的全称,
即Android Dalvik执行程序。利用解析工具可以将其转换成java来加以阅读和理解。
• resources.arsc
编译后的二进制资源文件。在做主题美化时要常与这个文件打交道。
• META-INF目录
META-INF目录下存放的是签名信息,有三个签名文件,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码, 或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。
• res目录
res目录存放资源文件。包括图片,字符串等等。res下有若干个子目录,主要为drawable,layout,xml。
解包后,几乎所有可能的修改和编辑工作基本都在这里。ROM的主要工作就在这里。ROM实际上就是所有的apk应用程序的字符文件。
• resources.arsc
编译后的二进制资源文件。在做主题美化时要常与这个文件打交道。
• META-INF目录
META-INF目录下存放的是签名信息,有三个签名文件,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码, 或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。
• res目录
res目录存放资源文件。包括图片,字符串等等。res下有若干个子目录,主要为drawable,layout,xml。
解包后,几乎所有可能的修改和编辑工作基本都在这里。ROM的主要工作就在这里。ROM实际上就是所有的apk应用程序的字符文件。
• assets目录
assets目录可以存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得。
下面以“设置”应用程序Settings.apk为例。用WinRAR打开文件后,看到以上介绍的六项内容。现在,即使你已经对文件解压,你还是无法直接阅读每个文件的内容。为了读出这些文件的内容,从而进行进一步的修改和编辑,你就必须具有相应的工具了(请到第二节)。
2. APK应用程序的解包和打包工具
这一节主要介绍在Windows系统中常用的几个工具包,用来对apk应用程序进行解包、打包、反编译、解析。所有apk工具包都要求java环境(这个我就不介绍了,自己学习去吧)。这些工具可以从网上各个论坛获取。我在近一个月里收集了几个常用的工具包,我
assets目录可以存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得。
下面以“设置”应用程序Settings.apk为例。用WinRAR打开文件后,看到以上介绍的六项内容。现在,即使你已经对文件解压,你还是无法直接阅读每个文件的内容。为了读出这些文件的内容,从而进行进一步的修改和编辑,你就必须具有相应的工具了(请到第二节)。
2. APK应用程序的解包和打包工具
这一节主要介绍在Windows系统中常用的几个工具包,用来对apk应用程序进行解包、打包、反编译、解析。所有apk工具包都要求java环境(这个我就不介绍了,自己学习去吧)。这些工具可以从网上各个论坛获取。我在近一个月里收集了几个常用的工具包,我
会打包上传与有志于对apk进行操作的机友分享。主要推荐有三个工具包。
1) apktool
apktool可能是当今最为流行的apk工具包,由解包、打包、签名程序组成。被称之为“apk反编译利器”。去Google一下apktool,有非常多的资源,无论是软件下载,还是使用教程。对非三星的应用程序进行操作,很好用。
打开apktool工具包,看到如下内容:
Akp程序的解包和打包软件由2个程序来完成:apktool.jar 和 。
另外提供一个批处理文件:apktool.bat,其内容为:
java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
运行apktools.jar需要java环境(1.6.0版本以上)。apktool.jar用于解包,apktool.jar和联合用于打包。testkey.pk8和testkey.x509.pem是签名程序。
1) apktool
apktool可能是当今最为流行的apk工具包,由解包、打包、签名程序组成。被称之为“apk反编译利器”。去Google一下apktool,有非常多的资源,无论是软件下载,还是使用教程。对非三星的应用程序进行操作,很好用。
打开apktool工具包,看到如下内容:
Akp程序的解包和打包软件由2个程序来完成:apktool.jar 和 。
另外提供一个批处理文件:apktool.bat,其内容为:
java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
运行apktools.jar需要java环境(1.6.0版本以上)。apktool.jar用于解包,apktool.jar和联合用于打包。testkey.pk8和testkey.x509.pem是签名程序。
解包命令:
apktool d xxxxxx.apk ABC
这里“d”表示要解码。Xxxxx.apk是要解包的APK文件。ABC是子目录名。解包的文件会放在这个子目录内。
打包命令:
apktool b ABC yyyyy.apk
手机游戏源码论坛这里“b”表示要打包,ABC是子目录名,是解包时产生的子目录,用来存放所有解包后的和修改后的文件。yyyyy.apk是打包后产生的新的APK文件。
在上传的apk工具包里,已经另外加了两个批处理文件:Unpack-apk.bat和Repack-apt.bat。前者用于apk的解包过程,后者用于编辑后的文件的打包和签名。把待解包的apk文件放到Unpack-apk.bat的同一个目录里,双击Unpack-apk.bat,apk文件解包开始,产生3个子文件夹,解包后的文件被放在Working_APK文件夹内。详细内容将在第二部分描述。另外,批处理文件允许同时对多个apk文件顺序进行解包和打包。
apktool d xxxxxx.apk ABC
这里“d”表示要解码。Xxxxx.apk是要解包的APK文件。ABC是子目录名。解包的文件会放在这个子目录内。
打包命令:
apktool b ABC yyyyy.apk
手机游戏源码论坛这里“b”表示要打包,ABC是子目录名,是解包时产生的子目录,用来存放所有解包后的和修改后的文件。yyyyy.apk是打包后产生的新的APK文件。
在上传的apk工具包里,已经另外加了两个批处理文件:Unpack-apk.bat和Repack-apt.bat。前者用于apk的解包过程,后者用于编辑后的文件的打包和签名。把待解包的apk文件放到Unpack-apk.bat的同一个目录里,双击Unpack-apk.bat,apk文件解包开始,产生3个子文件夹,解包后的文件被放在Working_APK文件夹内。详细内容将在第二部分描述。另外,批处理文件允许同时对多个apk文件顺序进行解包和打包。
注意:文件名里不允许有空格,不能有中文。
2) apk manager
apk manager是另一个“apk反编译利器”。它比apktool工具包还要强大些。三星的许多apk系统应用程序用了三星的闭源系统,用apktool可以解包,但是打包不成功。这时,apk manager就好用了。
打开apk manager工具包,看到如下内容。软件都放在other子目录里。运行apk manager要求adb工具包(见下图中的3个adb文件)。把待解包的apk文件放到place-apk-here-for-modding子目录里,双击脚本批处理程序Script.bat,选择选项:9,产生一个子文件夹projects,解包后的文件被放在这个子文件夹内。详细内容将在第二部分描述。
在使用时,有时apktool和apk manager交替使用,一个不行就用另外一个。 所以,在编辑
apk应用程序时两者都要掌握。
3) Dex2jar和XJad
该方法不是直接对apk文件进行解包。它是首先提取apk文件内的classes.dex文件,然后使用dex2jar.jar工具包将classes.dex解包成jar文件,再通过XJad 或者其他class反编译工具进行java反编译,最后生成java源文件。
但是,使用这个工具包无法进行classes.dex的还原(当然也无法进行apk的打包)。尽管如此,这个工具包仍然很重要,因为它把classes.dex文件转换成了可以更容易阅读的java源文件。在修改apk应用程序时,必不可少,是一极强的辅助工具。相比之下,apktool和apk manager反编译后得到的是Dalvik 反编译码 (Dalvik opcodes),需要很专业的知识来阅读,很不直观。如果你读懂了java源文件,那修改相对应的Dalvik码不就容易多了吗。
4) 其它工具包简介
3) Dex2jar和XJad
该方法不是直接对apk文件进行解包。它是首先提取apk文件内的classes.dex文件,然后使用dex2jar.jar工具包将classes.dex解包成jar文件,再通过XJad 或者其他class反编译工具进行java反编译,最后生成java源文件。
但是,使用这个工具包无法进行classes.dex的还原(当然也无法进行apk的打包)。尽管如此,这个工具包仍然很重要,因为它把classes.dex文件转换成了可以更容易阅读的java源文件。在修改apk应用程序时,必不可少,是一极强的辅助工具。相比之下,apktool和apk manager反编译后得到的是Dalvik 反编译码 (Dalvik opcodes),需要很专业的知识来阅读,很不直观。如果你读懂了java源文件,那修改相对应的Dalvik码不就容易多了吗。
4) 其它工具包简介
此外,还有许多工具包可用。这些也容易在网上到。
a) DoAPK
DoAPK实际上就是apktool工具包。有人把apktool写成了带窗口界面的可执行文件。
b) Google Smali
有两个程序:baksmali.jar和smali.jar。baksmali.jar用来反解析dex和odex文件,得到Dalvik码。然后用smali.jar还原成dex文件。例如,在修改状态栏时间显示颜时,要用的这两个解析程序。
c) AXMLPrinter2.jar
AXMLPrinter2.jar对apk文件内的 l和l进行操作,将XML还原成文本文件,便于阅读。
d) Apkdb
是一个集成apktool,smali,Dex2jar,签名等功能的工具。
e) 其它工具
不再介绍。自己动手到网上去搜索吧。
我把这些收集到的apk工具包打包上传,供你们使用,免得你们来去。
a) DoAPK
DoAPK实际上就是apktool工具包。有人把apktool写成了带窗口界面的可执行文件。
b) Google Smali
有两个程序:baksmali.jar和smali.jar。baksmali.jar用来反解析dex和odex文件,得到Dalvik码。然后用smali.jar还原成dex文件。例如,在修改状态栏时间显示颜时,要用的这两个解析程序。
c) AXMLPrinter2.jar
AXMLPrinter2.jar对apk文件内的 l和l进行操作,将XML还原成文本文件,便于阅读。
d) Apkdb
是一个集成apktool,smali,Dex2jar,签名等功能的工具。
e) 其它工具
不再介绍。自己动手到网上去搜索吧。
我把这些收集到的apk工具包打包上传,供你们使用,免得你们来去。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论