APK文件的解包打包和修改

APK⽂件的解包打包修改
APK⽂件的解包打包和修改
相信每位玩机的⼈对APK⽂件都不陌⽣。你可能每天都与APK⽂件打交道,⽆论是安装和卸载有⽤的应⽤⼯具、插件、好玩的游戏等等。。。你可曾知道这些每天都伴随着你的APK⽂件是什么吗?怎样对它们作些修改呢?⽐如说:对英⽂版进⾏、修改功能、修改⽂字描述、去掉⼴告等等。本⽂介绍APK的基本知识、结构、APK⽂件的解包、打包及签名,以及对APK⽂件的常规修改。
1.APK⽂件简介
APK是Android Package的缩写,即即Android application package ⽂件或Android安装包。每个要安装到Android平台的应⽤都要被编译打包为⼀个单独的⽂件,后缀名为.apk。APK⽂件是⽤专业软件eclipse编译⽣成的⽂件包,其中包含了应⽤的⼆进制代码、资源、配置⽂件等。通过将APK⽂件直接传到Android⼿机中执⾏即可安装。APK⽂件其实就是zip格式,但其扩展名被改为apk,⽤解压软件可以直接打开。通过WinRAR或UnZip解压后,你会看到有⼏个⽂件和⽂件夹。⼀个典型的APK⽂件通常有下列内容组成:l 程序全局配置⽂件
手摇甘蔗榨汁机
classes.dex Dalvik字节码
resources.arsc 编译后的⼆进制资源⽂件
META-INF\ 该⽬录下存放的是签名信息
res\ 该⽬录存放资源⽂件
assets\ 该⽬录可以存放⼀些配置⽂件
下⾯对这些⽂件和⽬录做些基本的注释和介绍。
该⽂件是每个应⽤程序都必须定义和包含的⽂件,它描述了应⽤程序的名字、版本、权限、引⽤的库⽂件等等信息。需要解包后才能加以阅读。
classes.dex⽂件
classes.dex是java源码编译后⽣成的java字节码⽂件。dex是Dalvik VM executes的全称,即Android Dalvik执⾏程序,并⾮Java ME的字节码⽽是Dalvik字节码。
resources.arsc
编译后的⼆进制资源⽂件。
META-INF⽬录
META-INF⽬录下存放的是签名信息,⽤来保证apk包的完整性和系统的安全。在eclipse编译⽣成⼀个apk包时,会对所有要打包的⽂件做⼀个校验计算,并把计算结果放在META-INF⽬录下。这就保证了apk包⾥的⽂件不能被随意替换。⽐如拿到⼀个apk包后,如果想要替换⾥⾯的⼀幅图⽚,⼀段代码,或⼀段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此⼀来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。
res⽬录
res⽬录存放资源⽂件。包括图⽚,字符串等等。
解包后,⼏乎所有可能的修改和编辑⼯作基本都在这⾥。
assets⽬录
assets⽬录可以存放⼀些配置⽂件,这些⽂件的内容在程序运⾏过程中可以通过相关的API获得。
2.APK⽂件的解包和打包
APK⽂件是⽤专业软件eclipse编译⽣成的⽂件包。在⽹上可以到许多软件来对APK的内容进⾏反编译,例如:可以通过AXMLPrinter2⼯具和命令:java -jar AXMLPrinter2.l 解开在apk中的l。最近,业界有⼀个功能强⼤的解包打包⼯具包apktool,可以在Windows下⽤来⽅便快速地对APK ⽂件进⾏解包和打包,给修改和编辑⼯作带来许多⽅便。下⾯来介绍它的使⽤。
1) APKtool软件包
APKtool软件包有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和联合⽤于打包。2) APK⽂件的解包
下⾯以解开Contacts.apk为例。⾸先把Contacts.apk复制到当前⼯作⽬录下(例:Test)。在DOS下打⼊命令
apktool d Contacts.apk ABC
这⾥“d”表⽰要解码。Contacts.apk是要解包的APK⽂件。ABC是⼦⽬录名。所有解包的⽂件都会放在这个⼦⽬录内。
3) APK⽂件的打包
在DOS下打⼊命令
apktool b ABC New-Contacts.apk
这⾥“b”表⽰要打包
ABC是⼦⽬录名,是解包时产⽣的⼦⽬录,⽤来存放所有解包后的和修改后的⽂件。
New-Contacts.apk是打包后产⽣的新的APK⽂件。
4) Framework框架⽂件
在解开APK⽂件时,apktool需要框架⽂件(framework-res.apk)来解码和打包。Apktool已经包含了标准的框架,所以在⼤多数APK ⽂件的解包时,不需要另外提供框架⽂件。但是,某些制造商使⽤了
他们⾃⼰的框架⽂件,为了解包,就不得不从⼿机中把框架⽂件(framework-res.apk)提取出来,然后安装到计算机。安装命令是:apktool if framework-res.apk
安装后就会得到:~\apktool\framework\1.apk
5) 解包、解包和签名批处理
在实际使⽤时,可能对多个APK⽂件进⾏处理。⽅便的做法是写成批处理⽂件。打包和签名可以⼀次完成。
解包批处理命令:
for %%i in (*.apk) do java -jar apktool.jar d %%i _%%i && move _%%i Modifying_Files && copy %%i Backuped_Raw_Files && @echo File [%%i] unpacking process is completed!
打包和签名批处理命令:
for /d %%i in (*) do cd.. && java -jar apktool.jar b Modifying_Files\%%i && java -jar signapk.jar testkey.x509.pem testkey.pk8 Modifying_Files\%%i\dist\*.apk %%i && ren %%i New%%i && move New%%i Modified_Signed_Files && @echo %%i Complete repacking and Signing! && cd Modifying_Files
3.应⽤实例:APK解包后的编辑和修改
为什么要对APK⽂件进⾏解包?当然要对其内容进⾏必要的修改。修改什么呢?通常,如果只是对图像进⾏替换,没有必要进⾏解包和打包。⽤WinRAR打开APK⽂件,直接做替换就可以了。但是,如果要对⽂字和其它⾮图像类内容进⾏修改,那只能通过解包解码了。下⾯⼏项任务需要对APK进⾏解包和打包。这⾥只作⼤概介绍,请⾃⼰去
详细的操作⽅法和教程。
1) APK软件
在res⽂件夹中,我们可以看到有很多values-***的⽂件夹,这就是语⾔包。values是英⽂语⾔包,values-zh是中国地区语⾔包(包含港澳台及内地),values-zh-rCN是中⽂简体语⾔包(只包含内地),values-zh-rTW是中⽂繁体语⾔包(港澳台)。除此以外,其它地区的语⾔包都是精简的对象,可以不过多了解。
在values⽂件夹⾥,通常有l、l等语⾔⽂件,要作就要对这些⽂件进⾏修改。有时也需要修改其它xml ⽂件,⼀个⼀个地认真查看。
2) 修改图标标签
每⼀个APK⽂件都有⼀个“图标标签”。将APK程序安装进⼿机后,在图标下⾯显⽰图标标签⽂字。这个图标标签的内容是可以修改的。在\res\values下到l,修改其中的⼀⾏:
图标标签
例如:静⾳启动
同理,如果是窗⼝⼩插件,要修改widget_name。
注意:system/app下的apk不宜修改,因为要同时修改对应的odex ⽂件。
3) 去掉APK中的⼴告
有很多APK应⽤都带有⼴告。为了去掉程序中的⼴告,要修改l⽂件与⼴告有关的内容。在\res⽬录下到⽂件l。通常在\layout⽬录下,有时也被放在其它⽬录下。甚⾄,有时不存在l⽂件,⼴告⾏被放在其它xml⽂件内。只能细⼼逐个⽂件进⾏查。⽆论哪⼀种情况,查看其内容,你会看到有⼀项类似的命令如下。这就是⼴告显⽰。android:layout_height=”wrap_content”
光立方制作ad mobsdk:backgroundColor=”#ff000000″
耳机绕线器
admobsdk:textColor=”#ffffffff”
admobsdk:keywords=”Android application” />
将其改为:
android:layout_height=”0.0dip”
admobsdk:backgroundColor=”#ff000000″
admobsdk:textColor=”#ffffffff”
admobsdk:keywords=”Android application” />
可以看到,关键是要把fill_parent改为0.0dip,把wrap_content 改为0.0dip,其它保持不变即可。这种改法就是不给⼴告显⽰空间,
当然你就看不到⼴告了。
4) 修改显⽰电池为1%精度
自动埋钉机
在XT502上,默认显⽰只有7档: 0%,10%,20%,40%,60%,80% 和100%。通过修改framework-res.apk,可以改变显⽰精度。但是在XT502上,实践证明最好可能达到的现实精度只有10%。修改⼯
作如下:
(1) 对framework-res.apk进⾏解包
2mc(2) 修改和增加电池状态图标
(3) 修改⽂件stat_l
(4) 修改⽂件stat_sys_l
(5) 打包
(6) 提取stat_l,stat_sys_l,resources.arsc和⼀个图标⽬录:drawable-mdpi
(7) 重新装配framework-res.apk
5) 状态栏信息通知⽂字颜⾊修改
状态栏信息通知⽂字颜⾊,是由framework-res.apk⽂件⾥res\values下的l⽂件控制的,所以我们只需修改l ⽂件就可以了。另外,此⽂件还控制下拉栏的⽂字颜⾊,可以修改。
⽤⽂本编辑器打开l⽂件,到
#ff000000
将这句修改为:#ffffffff
这状态栏信息通知⽂字颜⾊由⿊⾊改为⽩⾊。
屋顶融雪装置

本文发布于:2024-09-20 20:20:22,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/325376.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:解包   修改   打包   安装
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议