一、基本概念
1.1 Magisk介绍
Magisk 是一套用于定制 Android 的开源软件,支持高于 Android 5.0 的设备。
以下是一些功能亮点:
- MagiskSU:为应用程序提供 root 访问权限
- Magisk 模块:通过安装模块修改只读分区
- MagiskHide:从根检测 / 系统完整性检查中隐藏 Magisk(Shamiko)
- MagiskBoot : 最完整的安卓启动镜像解包和重新打包工具
1.2 Apk结构
apk 全称 Android Package,它相当于一个压缩文件,只要在电脑上将apk后缀改为zip即可解压。
文件 | 注释 |
---|---|
assets目录 | 存放APK的静态资源文件,比如视频,音频,图片等 |
lib 目录 | armeabi-v7a基本通用所有android设备,arm64-v8a只适用于64位的android设备,x86常见用于android模拟器,其目录下的.so文件是c或c++编译的动态链接库文件 |
META-INF目录 | 保存应用的签名信息,签名信息可以验证APK文件的完整性,相当于APK的身份证(验证文件是否被修改) |
res目录 | res目录存放资源文件,包括图片,字符串等等,APK的脸蛋由他的layout文件设计 |
AndroidMainfest.xml文件 | APK的应用清单信息,它描述了应用的名字,版本,权限,引用的库文件等等信息 |
classes.dex文件 | classes.dex是java源码编译后生成的java字节码文件,APK运行的主要逻辑 |
resources.arsc文件 | resources.arsc是编译后的二进制资源文件,它是一个映射表,映射着资源和id,通过R文件中的id就可以找到对应的资源 |
二、 双开及原理
双开:简单来说,就是手机同时运行两个或多个相同的应用,例如同时运行两个微信
原理 | 解释 |
---|---|
修改包名 | 让手机系统认为这是2个APP,这样的话就能生成2个数据存储路径,此时的多开就等于你打开了两个互不干扰的APP |
修改Framework | 对于有系统修改权限的厂商,可以修改Framework来实现双开的目的,例如:小米自带多开 |
通过虚拟化技术实现 | 虚拟Framework层、虚拟文件系统、模拟Android对组件的管理、虚拟应用进程管理 等一整套虚拟技术,将APK复制一份到虚拟空间中运行,例如:平行空间 |
以插件机制运行 | 利用反射替换,动态代理,hook了系统的大部分与system—server进程通讯的函数,以此作为“欺上瞒下”的目的,欺骗系统“以为”只有一个apk在运行,瞒过插件让其“认为”自己已经安装。例如:VirtualApp |
2.1 修改包名
NT管理器安装包提取
点击提取的Apk,选择APK共存修改包名
简单情况下实现APK共存
2.2 修改Framework
2.3 通过虚拟化技术实现
2.4 以插件机制运行
三、 汉化APK
汉化:使用专门的工具对外文版的软件资源进行读取、翻译、修改、回写等一系列处理,使软件的菜单、对话框、提示等用户界面显示为中文,而程序的内核和功能保持不变,这个过程即为软件汉化
基本上字符串都是在arsc里,建议一键汉化,然后再润色。
少量没汉化到的字符串参考视频中的方法定位去逐个汉化。
3.1 流程图
这里还需要注意的是,如果要直装应用,那就应该先签名安装,看看是否有签名校验导致的闪退
简单的汉化有三个分支
- Arsc汉化
- Xml汉化
- Dex汉化
教程中还提到较为复杂的so层面的字符串资源
3.2 Xml汉化
汉化前:
1.全局搜索文件内容Hello 52pojie
2.字符常量池打开资源文件
3.字符串编辑
4.更新并自动签名
5.完成
3.3 Arsc汉化
接着替换下方的俄文,使用开发者助手
检索界面资源
复制文本后再次使用MT管理器进行搜索Я не могу поверить, что это работает, почему?
选择翻译模式
定位到要翻译的字符串后进行编辑
完成汉化
3.4 dex汉化
这次要替换掉 Reverse determines height, development determines depth.
这段文本
还是先搜索
再在Dex编辑器++
中搜索
直接进行替换即可
完成汉化
四、修改应用名称和图标
4.1 初识AndroidManifest.xml
AndroidManifest.xml文件是整个应用程序的信息描述文件,定义了应用程序中包含的Activity,Service,Content provider和BroadcastReceiver组件信息。每个应用程序在根目录下必须包含一个AndroidManifest.xml文件,且文件名不能修改。它描述了package中暴露的组件,他们各自的实现类,各种能被处理的数据和启动位置。
属性 | 定义 |
---|---|
versionCode | 版本号,主要用来更新,例如:12 |
versionName | 版本名,给用户看的,例如:1.2 |
package | 包名,例如:com.zj.52pj.demo |
uses-permission android:name="" | 应用权限,例如:android.permission.INTERNET 代表网络权限 |
android:label="@string/app_name" | 应用名称 |
android:icon="@mipmap/ic_launcher" | 应用图标路径 |
android:debuggable="true" | 应用是否开启debug权限 |
4.2 修改测试
切换到NT管理器
修改成功
五、修改应用内图标
对图中的表情包进行替换
首先找到对应的布局文件,查看ImageView
的资源ID:@7F0D000B
使用Arsc编辑
方式打开resources.arsc
,搜索资源ID
再去搜索first_img
定位图片
哦~原来first_img已经在对应资源图片了,那我直接修改它的映射关系改成D2.png
完成
引用
1.《安卓逆向这档事》一、模拟器环境搭建:https://www.52pojie.cn/thread-1695141-1-1.html
2.《安卓逆向这档事》二、初识APK文件结构、双开、汉化、基础修改:https://www.52pojie.cn/thread-1695796-1-1.html
3.吾爱破解安卓逆向入门教程《安卓逆向这档事》二、初识APK文件结构、双开、汉化、基础修改:https://www.bilibili.com/video/BV18G411j7gV/?spm_id_from=333.788&vd_source=33cfe7dc102c64b5cac16bcfaad7f2a8
4.[更新!]适用于几乎所有安卓模拟器(7+)安装magisk的教程-简单无脑向:https://www.52pojie.cn/thread-1583586-1-1.html
5.【VirtualAPP 双开系列08】如何实现多开 - UID:https://blog.csdn.net/u014294681/article/details/116270479
评论 (0)