前言
由于之前电脑重装了系统,后面由于CPU短路又更换了主板,导致我电脑中例如frida等环境都没了,正好有很长一段时间都没有学习忘记了很多东西,借此机会重新学习的同时配置正常的环境,顺便写下学习过程中的笔记
教程地址:《安卓逆向这档事》二、初识APK文件结构、双开、汉化、基础修 - 吾爱破解 - 52pojie.cn
文件结构
apk的本质其实是一个压缩包,事实上,你用010打开后缀为zip的文件与后缀为apk的文件,能够发现它们的文件头其实是一样的,在我之前的CTF生涯中也遇到过一些对于apk压缩包做文章的题目,我们使用解压软件(例如winrar)就能看见apk里面具体的内容了
下面是视频中所给的示例apk

由于这个apk只是个示例demo,很多市面上的apk有的东西它都没有,所以我多截了一个apk来综合看它的文件结构

其中
- assets文件夹存放静态资源文件
- lib文件夹存放一些.so文件,通常为C/C++编译的动态链接库文件
- META-INF文件夹存放apk签名信息
- res文件夹存放如图片字符串等资源文件
- AndroidManifest.xml存放apk的应用清单信息
- 这些.dex文件是java编译后形成的字节码文件,apk运行的主要逻辑就在其中,我们可以使用JEB、jadx等对其进行反编译
- resources.arsc文件是编译后的二进制文件,它是一个映射表,映射着资源和id
- okhttp3以及kotlin说明此软件使用了kontlin进行开发,而非仅使用java
应用双开
我们在使用手机的过程中,比如需要同时登陆两个QQ或微信,有时候会对应用进行双开,其中双开的某一种方式就是对app包名进行修改,这样系统就会生成两个应用数据的存储目录,从而实现双开的效果
我们可以通过MT管理器提取已安装app的安装包

将示例demo的安装包提取出来

能看见软件的很多信息,其中包名能看见是com.zj.wuaipojie,我们点击功能再点击apk共存就能修改包名了


点击确认之后就可以了,我们能看见出现了两个apk

并且一样能够安装,安装之后桌面上就出现两个一样的软件了
由于修改包名动了应用的签名信息,若开发者启用了签名校验,则会出现问题
软件汉化
跟着视频一步步走的话就可以到汉化示例demo那一步了

我们去MT管理器搜索第一句"hello"

就能看见此文字是写在哪一个.xml里面的,我们可以点进去到这个.xml文件所在的文件目录,然后右击此.xml进行反编译

能看见Hello 52pojie,我们对其进行修改之后保存就可以了,关闭文件之后它会自动进行签名,所以后面会出现和已安装应用签名不一致的问题,但是无伤大雅
后面就可以跟着视频去汉化下面那两行俄文以及英文了,实际上不需要跟着视频应该也能完成文本替换
AndroidMainfest
本质字符串,用于描述文件,我们在jadx中就能很直观得看见

| 属性 | 定义 |
|---|---|
| versionCode | 版本号 |
| versionName | 版本名 |
| package | 包名 |
| uses-permission android:name="" | 应用权限 |
| android:label="@string/app_name" | 应用名称 |
| android:icon="@mipmap/ic_launcher" | 应用图标路径 |
| android:debuggable="true" | 是否开启调试权限 |
成果
可以修改字符串以及软件图标和名称了(没有签名校验的话



