这是正己大佬发表于22年的安卓教程了,作为android入门课程对小白来说非常友好了,但也有些基础的概念看课程有些不懂,以此来记录学习的过程,并复现实践。(文章包含课程资料内容和课后作业内容)课程链接:https://www.52pojie.cn/thread-1695141-1-1.html
模拟器环境搭建
- 安装magisk Delta,再点安装,然后直接切后台退出,再进入安装到系统分区如果失败注意磁盘共享要改为可写入出现All done! 即安装成功。然后直接重启
- 安装Lsp Hook框架,把课件文件LSPosed复制到模拟器的共享文件夹
- 选择模块,从本地安装,本地名为Pictures就是共享文件夹。
初识APK文件结构、双开、汉化、基础修改
0x01 目标
0x02 APK结构
apk 全称 Android Package,它相当于一个压缩文件,只要在电脑上将apk后缀改为rar即可解压。
文件 | 注释 |
assets目录 | 存放APK的静态资源文件,比如视频,音频,图片等 |
ib目录 | armeabi-v7a基本通用所有android设备,arm64-v8a只适用于64位的android设备,x86常见用于android模拟器,其目录的.so文件是c或c++编译的动态链接库文件 |
META-INF目录 | 保存应用的签名信息,签名信息可以验证APK文件的完整性,相当于APK的身份证(验证文件是否又被修改) |
res目录 | res目录存放资源文件,包括图片,字符串等等,APK的脸蛋由他的layout文件设计 |
Android Mainfest.xml文件 | APK的应用清单信息,它描述了应用的名字,版本,权限,引用的库文件等等信息 |
classes.dex文件 | classes.dex是java源码编译后生成的java字节码文件,APK运行的主要逻辑 |
resources.arsc文件 | resources.arsc是编译后的二进制资源文件,它是一个映射表,映射着资源和id,通过R文件中的id就可以找到对应的资源 |
这个包是kotlin开发的并且用到了okhttp3这个组件
0x03 双开及原理
原理 | 解释 |
修改包名 | 让手机系统认为这是2个APP,这样的话就能生成2个数据存储路径,此时的躲开就等于你打开了两个互不干扰的APP |
修改Framework | 对于有系统修改权限的厂商,可以修改Framework来实现双开的目的,例如:小米自带多开 |
通过虚拟化技术实现 | 虚拟Framework层,虚拟文件系统、模拟Android对组件的管理,虚拟应用进程管理 等一整套虚拟技术,将APK复制一份到虚拟空间中运行,例如:平行空间 |
以插件机制运行 | 利用反射替换,动态代理,hook了系统的大部分与system-server进程通讯的函数,以此作为“欺上瞒下”的目的,欺骗系统“以为”只有一个apk在运行,瞒过插件让其“认为”自己已经安装了。例如VirtualApp |
改包名
通过NP管理器进行安装包提取,然后定位安装包,选择安装包,选择功能,点击“安装包共存”即可。




0x04 汉化
Demo第一关
第一关就是图片替换和文字汉化得关卡
- 第二行是俄语,正常无法打出来也就没法搜索,可以使用开发这助手进行识别;
- 再点击俄文字符串,即可显示控件属性,然后复制Text就可以了
- 然后跟上面的步骤一样,直接MT搜索安装包的字符串即可,会搜索到“resources.arsc”这个文件,这里可以选择“翻译模式”,选择“DEFAULT”。
0x05 初识AndroidMainfest.xml
AndroidMainfest.xml文件是整个应用程序的信息描述文件,定义了应用程序中包含了Activity,Service,Content provider和BroadcastReceiver组件信息。每个应用程序在根目录下必须包含一个AndroidMainfest.xml文件,且文件名不能修改。它描述了package中暴漏的组件,他们各自的实现类,各种能被处理的数据和启动位置。
属性 | 定义 |
versionCode | 版本号,主要用来更新,例如:12 |
versionName | 版本名,给用户看的,例如:1.2 |
package | 包名,例如:com.zj.52pj.demo |
users-permission android:name="" | 应用权限,例如:android.permission.INTERNET 代表网络权限 |
android:label="@string/app_name" | 应用名称 |
android:icon="@mipmap/ic_launcher" | 应用图标路径 |
android:debuggable="true" | 应用是否开启debug权限 |
如果一个软件必须需要某种权限才可以打开,就可以更改“应用权限”来进行绕过。
可以通过NP管理器来进行修改图标和应用名字。
修改APPname并保存安装即可。

0x06 课后作业
替换第一关挑战中的图片
- 通过NP管理器,打开APP的res目录,找到cf.jpg,替换即可。
- 这边遇到一个小问题,安装包校验不通过,点击功能重新签名即可;
【免责声明】
本文旨在进行安全技术交流与学习。所有内容仅代表个人观点与研究心得,仅供法律许可范围内的技术研究与防御参考。读者须承诺并保证:不将分享的任何知识、工具或方法用于任何未授权的测试、攻击或非法用途,并严格遵守您所在地及目标系统所在地的所有适用法律。所有基于本公众号内容进行的操作与决策,其产生的一切后果均由操作者自行独立承担全部责任。技术风险自控,法律红线勿越。