玩转安卓黑科技:APK文件结构剖析与定制修改
1.APK结构
apk 全称 Android Package,它相当于一个压缩文件,只要在电脑上将apk后缀改为zip即可解压。
| 文件 | 注释 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-
APK 文件是一个压缩文件,可通过解压工具对其进行解压缩以查看其内部结构,但解压缩后的文件不能直接运行,必须重新打包并签名后才能安装到设备上。
1. 文件结构
2. APK的加载过程
当用户安装 APK 文件时,Android 系统会解析 APK 文件的结构,提取其中的 AndroidManifest.xml 文件和 resources.arsc 文件,识别出应用程序的组件、资源、权限等信息。之后,系统会将 classes.dex 文件中的字节码加载到内存中,并解释执行,完成应用程序的启动和运行。在运行过程中,系统会根据需要动态加载并使用其他资源文件(如 res 文件夹中的资源文件和 assets 文件夹中的文件)。
-
/META-INF文件夹 :包含应用程序的签名信息等元数据,如MANIFEST.MF(应用的清单文件)、CERT.SF(包含签名信息,用于校验应用包的完整性)、CERT.RSA(应用的数字证书,存储了证书信息)。 -
/res文件夹 :存储应用程序的各种资源文件,如界面布局(布局文件,如 activity_main.xml)、图形图像(放在\drawable- [配置]文件夹中,不同的屏幕密度有不同的目录)、字符串(strings.xml)、样式(styles.xml)、颜色(colors.xml)、动画(如animated.xml)等。 -
/assets文件夹 :存放应用程序的任意资源,如配置文件、图片、视频等,这些文件会在编译时保留在原样,不会被处理。 -
/lib文件夹 :用于存储应用程序的原生代码库( .so文件),针对不同的处理器架构有不同的文件夹(如/lib/armeabi- v7a/、/lib/arm64- v8a/、/lib/x86/等)。 -
/AndroidManifest.xml :是应用程序的配置文件,声明了应用程序的组件(如活动、服务、广播接收器、内容提供者)、权限、图标、标签、版本等重要信息。 -
/classes.dex文件 :是应用程序的 Java 或 Kotlin 编译生成的字节码文件,包含应用程序的执行逻辑。 -
/resources.arsc文件 :是 Android 资源文件,包含了应用程序中的各种资源(如字符串、样式、颜色等)的索引信息。 -
其他文件 :如证书文件(如 /META-INF/CERT.SF和/META-INF/CERT.RSA)、应用图标、应用启动屏文件等。
2.双开及原理
【VirtualAPP 双开系列08】如何实现多开 – UID_virtualapp 使用-CSDN博客
双开:简单来说,就是手机同时运行两个或多个相同的应用,例如同时运行两个微信
| 原理 | 解释 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
(1)通过MT管理器修改包名实现双开
1.使用MT管理器提取应用的安装包

2.找到我们要提取的apk,提取定位


3.通过APK共存功能修改包名实现apk双开



4.实现双开

(2)通过NP管理器修改包名实现双开
流程与MT大致相同





打开修改报名后的apk安装

就可以在手机上完成双开。因为修改报名实现双开动了应用的签名信息,如果开发者做了签名校验可能会出现安装后闪退崩溃等情况。
3.汉化APK
使用专门的工具对外文版的软件资源进行读取,翻译,修改,回写等一系列处理,使用软件的菜单,对话框,提示等用户界面显示为中文,而程序的内核和功能保持不变,这个过程即为软件汉化。
(需要注意,如果要直接装应用就应该先签名安装,看石否有签名校验导致的闪退。)
基本上字符串都是在arsc里,建议一键汉化,然后再润色。少量没汉化到的字符串参考视频中的方法定位去逐个汉化。

(1)简单的英语字句修改
-
1.我们在管理器中点击查看

-
2.利用MT自带的搜索功能

-
3.点击高级搜索相当使用全局搜索(搜索应用中的全部文件)

-
4.对查询到的结果进行反编译


-
5.对内容进行修改后保


-
6.发现我们对内容进行了重新签名,应用与最开始安装已经是不一样的了。


-
7.对于卸载提示可以直接关闭处理,在设置里的APK安装检验证关闭就不会再提示


-
8.关闭后还会出现签名不一致安装失败的现象。(可以卸载原应用或利用XP的模块核心破解来解决这类问题)


-
9.完成后我们会发现修改部分已经变为中文模式

(2)利用开发者助手搜索
-
1.下载安装后会有一个小图标

-
2.我们到需要修改的app页面点击图标,点击开始资源分析

-
3.点击需要查看的亮条部分,点击复制我们需要的文本信息,再回到MT管理器中重复上述步骤即可

也可以直接再MT浏览器中开通汉化翻译插件
我们发现第二次签名后软件可以直接安装成功,原因是MT自带的签名信息一致,不会出现签名信息冲突的情况,可以直接覆盖安装
(3)放在dex文件中
-
1.选择dex编辑器++


-
2.同样来搜索我们修改的字符,搜索类型可以自行选择。


-
3.很快就能的得到搜索结果

-
4.修改后保存退出重复上述步骤
4.初识AndroidManifest.xml
AndroidManifest.xml文件是整个应用程序的信息描述文件,定义了应用程序中包含的Activity,Service,Content provider和BroadcastReceiver组件信息。每个应用程序在根目录下必须包含一个AndroidManifest.xml文件,且文件名不能修改。它描述了package中暴露的组件,他们各自的实现类,各种能被处理的数据和启动位置。
| 属性 | 定义 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
使用NT浏览器修改AndroidManifest.xml文件
-
1.直接进入查看编译


-
2.修改apk图标和名字,在NP管理器中使用通用编辑进行修改


-
3.保存安装发现又出现签名信息不一致因为上边用的MT管理器签名,和现在NP签名不一致,按上述方法解决即可,安装后可以观察到修改成功。



文章内容总结来自:【吾爱破解安卓逆向入门教程《安卓逆向这档事》二、初识APK文件结构、双开、汉化、基础修改】https://www.bilibili.com/video/BV18G411j7gV?vd_source=38577cb0d478387758f5a5f8b533c009

夜雨聆风