重学安卓逆向:安卓模拟器环境搭建及APK的基础修改

注:本次学习来源于:52pojie的正己的《安卓逆向这档事》,部分知识来源于查资料或者chatgpt等ai
https://www.52pojie.cn/thread-1695141-1-1.html
https://github.com/ZJ595/AndroidReverse
https://aliyundrive.com/s/TJoKMK6du6x

环境搭建

如果想要开始学习安卓安全,要么有个不用的手机,要么就是搞个模拟器(雷电模拟器)。

首先机子要root或者直接卡刷Magisk,最好模拟器,直接有root

还有新版Magisk可以在设置选在Zygote运行Magisk

之后可以在Magisk的模块中安装LSPosed

APK结构

文件 注释
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

针对第一种可以使用MT管理器或者NP管理器

假如用NP管理器的双开步骤:(NP管理器可能要求强制更新,断网即可)

  1. 提取安装包
  2. 定位
  3. 选择功能APK共存(NP管理器默认选项即可)

汉化APK

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

首先安装应用(1c7dbd17是设备id)

1
adb -s 1c7dbd17 install app-release.apk

比如下面图片的汉化


假如用MT管理器的汉化步骤:

  1. 点击apk包点击查看(当然先要提取已经安卓的apk或者你自己把apk上传到里面)
  2. 点击右上角搜索,勾选高级搜索
  3. 在文件中包含内容输入即可定位字符串
  4. 点击搜索到的文件,选择反编译
  5. 之后修改相应字符,右上角保存
  6. 返回,问你是否修改,勾选自动签名(建议还用自定义签名不然容易报毒),确定即可
  7. 安装的时候需要先卸载之前的,不然签名不一致

此外可以使用开发者助手辅助定位,使用它的界面资源分析,就可以复制一些不知道什么语言的东西

对于resource.arsc,可以使用翻译模式,默认之后打开修改

假如字符串在classes.dex里面,点击Dex编辑器++,之后点击搜索,之后选择搜索类型是字符串,完全匹配的✔去掉,之后修改完点击保存,退出,选择保存并退出。

修改应用名和图标

这个可以使用NP管理器,点击apk包-功能-通用编辑直接修改即可

打赏专区