正己 发表于 2022-10-5 11:21

《安卓逆向这档事》二、初识APK文件结构、双开、汉化、基础修

本帖最后由 正己 于 2024-8-25 21:42 编辑

https://www.bilibili.com/video/BV18G411j7gV/

# 一、课程目标
---

1.了解APK文件结构
2.双开APK,简单了解原理
3.汉化APK
4.简单修改APK名字、图标

# 二、工具
---
1.教程Demo
2.MT管理器/NP管理器
3.开发者助手
4.雷电模拟器

# 三、课程内容
---

## 1.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文件设计                                                                           |   
| AndroidManifest.xml文件 | APK的应用清单信息,它描述了应用的名字,版本,权限,引用的库文件等等信息                                                                         |   
| classes.dex文件   | classes.dex是java源码编译后生成的java字节码文件,APK运行的主要逻辑                                                                              |   
| resources.arsc文件| resources.arsc是编译后的二进制资源文件,它是一个映射表,映射着资源和id,通过R文件中的id就可以找到对应的资源                                                                                                                                                |   

## 2.双开及原理

双开:简单来说,就是手机同时运行两个或多个相同的应用,例如同时运行两个微信

| 原理               | 解释                                                                                                                                     |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| 修改包名         |让手机系统认为这是2个APP,这样的话就能生成2个数据存储路径,此时的多开就等于你打开了两个互不干扰的APP   |
| 修改Framework      | 对于有系统修改权限的厂商,可以修改Framework来实现双开的目的,例如:小米自带多开                                                            |
| 通过虚拟化技术实现 | 虚拟Framework层、虚拟文件系统、模拟Android对组件的管理、虚拟应用进程管理 等一整套虚拟技术,将APK复制一份到虚拟空间中运行,例如:平行空间 |
| 以插件机制运行|利用反射替换,动态代{过}{滤}理,hook了系统的大部分与system—server进程通讯的函数,以此作为“欺上瞒下”的目的,欺骗系统“以为”只有一个apk在运行,瞒过插件让其“认为”自己已经安装。例如:VirtualApp                                                                                                                                          |



## 3.汉化APK

汉化:使用专门的工具对外文版的软件资源进行读取、翻译、修改、回写等一系列处理,使软件的菜单、对话框、提示等用户界面显示为中文,而程序的内核和功能保持不变,这个过程即为软件汉化

**基本上字符串都是在arsc里,建议一键汉化,然后再润色。
少量没汉化到的字符串参考视频中的方法定位去逐个汉化。**

### 流程图
<font color=#ED7001>这里还需要注意的是,如果要直装应用,那就应该先签名安装,看看是否有签名校验导致的闪退</font>


## 4.初识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权限      |


#四、课后小作业
---
1.试着自己找个应用双开、修改名字、找个英文应用汉化
2.替换第一关挑战中的图片

# 五、答疑
---
待更新

# 六、视频及课件地址
---

[百度云](https://pan.baidu.com/s/1cFWTLn14jeWfpXxlx3syYw?pwd=nqu9)
[阿里云](https://www.aliyundrive.com/s/TJoKMK6du6x)
[哔哩哔哩](https://www.bilibili.com/video/BV1wT411N7sV)

# 七、其他章节
---
[《安卓逆向这档事》一、模拟器环境搭建](https://www.52pojie.cn/thread-1695141-1-1.html)
[《安卓逆向这档事》第三课、初识smail,vip终结者](https://www.52pojie.cn/thread-1701353-1-1.html)
[《安卓逆向这档事》四、恭喜你获得广告&弹窗静默卡](https://www.52pojie.cn/thread-1706691-1-1.html)

# 八、参考文档

---
[【VirtualAPP 双开系列08】如何实现多开 - UID](https://blog.csdn.net/u014294681/article/details/116270479)


PS:解压密码都是52pj,阿里云由于不能分享压缩包,所以下载exe文件,双击自解压

yjmb 发表于 2024-3-2 14:47

np管理器打开需要更新,更新后需要购买会员才能使用,解决办法是,可以把电脑断网,np管理器检测不到新版本,这时就可以不更新继续使用。

键盘上的舞者 发表于 2022-10-8 14:00

期待第三集

正己 发表于 2024-1-26 12:42

p9rsu9 发表于 2024-1-26 12:40
既然都能双开微信

1. 微信做不到检测双开/虚拟环境


他知道但不代表他会制止你

taichao 发表于 2022-10-6 07:50

已学完,等待第三课

yuanyxh 发表于 2022-10-5 11:38

预计54岁能看到手撕服务器那一集,65岁能看到逆向三百集完结{:301_1001:}

TR小米哥 发表于 2022-10-5 11:31

我仔细看了下,视频说的也是很细致了,对于新手很友好,明确得指出了逆向怎么开头,怎么深入。很不错的大佬{:301_997:}【模拟器好吃RAM的说】

zhangxu888 发表于 2022-10-5 11:51

{:1_927:}鼓励一下子!

正己 发表于 2022-11-25 12:20

本帖最后由 正己 于 2022-11-25 12:21 编辑

IVSpretender 发表于 2022-11-24 23:26
把图片换成gif图了,但是不会动,有办法让它动起来吗?
这个没办法,静态加载的图片动不起来
可以用Glide框架来加载gif

老gai上di凡 发表于 2022-10-5 13:06

视频不能上传B站吗?

正己 发表于 2022-10-5 11:22

这集居然有半小时{:301_973:}

wapj549 发表于 2022-10-5 11:31

谢谢分享

ludonghengsb 发表于 2022-10-5 11:38

第二课也非常精彩,干货十足

正己 发表于 2022-10-5 11:57

TR小米哥 发表于 2022-10-5 11:31
我仔细看了下,视频说的也是很细致了,对于新手很友好,明确得指出了逆向怎么开头,怎么深入。很不错的大佬 ...

该换电脑了{:301_973:}

正己 发表于 2022-10-5 12:21

yuanyxh 发表于 2022-10-5 11:38
预计54岁能看到手撕服务器那一集,65岁能看到逆向三百集完结

等你出教程{:301_1001:}
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 《安卓逆向这档事》二、初识APK文件结构、双开、汉化、基础修