安卓逆向那点事(1)

什么是安卓逆向?

安卓逆向是对已经打包好的APP进行反编译、源码分析了解APP实现逻辑的一门技术

Magisk介绍

安卓逆向那点事(1)_第1张图片

Magisk 是一套用于定制 Android 的开源软件,支持高于 Android 5.0 的设备。以下是一些功能亮点: MagiskSU:为应用程序提供 root 访问权限

Magisk 模块:通过安装模块修改只读分区

MagiskHide:从根检测 / 系统完整性检查中隐藏 Magisk(Shamiko)

MagiskBoot : 最完整的安卓启动镜像解包和重新打包工具

安装步骤

1.到官网下载雷电模拟器9.0,并安装。https://www.ldmnq.com/

2.下载配置文件

3.安装面具

建议在模拟器中将分辨率进行如下调整,提升我们的体验:

安卓逆向那点事(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

我们这里介绍一款工具:MT管理器,它是手机端一个比较成熟的反编译工具,具备了很多功能。

安卓逆向那点事(1)_第3张图片

当然它有很多功能是需要开通VIP的,当然如果我们不开通VIP也是可以的。我们还有另一款致敬MT管理器的反编译工具,也就是下面这个NP管理器。如果没有开通会员的朋友,可以交替使用。

安卓逆向那点事(1)_第4张图片

手机进去后,所有的权限请求都点允许就可以了。

首先我们进行安装包提取:

安卓逆向那点事(1)_第5张图片

找到我们这个demo,然后提取安装包,接着点定位。

安卓逆向那点事(1)_第6张图片

我们点击功能,进去以后找到APK共存。

安卓逆向那点事(1)_第7张图片 安卓逆向那点事(1)_第8张图片

点击确认后,就会有一个新的安装包。

安卓逆向那点事(1)_第9张图片

我们点击这个新的安装包,进行安装。安装完成后,我们返回桌面这时就可以看到我们桌面上有两个一样的软件了。

安卓逆向那点事(1)_第10张图片

这就是一个简单的双开。

安卓逆向那点事(1)_第11张图片

双开是通过修改包名来实现的,所以说动用了包名的签名信息。如果这个时候开发者做了一个签名校验,那就很有可能出现安装后闪退奔溃的情况。

汉化APK

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

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

这里还需要注意的是,如果要直装应用,那就应该先签名安装,看看是否有签名校验导致的闪退。

安卓逆向那点事(1)_第12张图片

我们打开我们的demo,进入后查看汉化任务:

安卓逆向那点事(1)_第13张图片

我们返回MT管理器,然后查看安装包,点击右上角的三个点,选择搜索功能。

安卓逆向那点事(1)_第14张图片

我们按照如下进行搜索:

安卓逆向那点事(1)_第15张图片 安卓逆向那点事(1)_第16张图片

我们跳到文件位置,然后选择进行反编译:

安卓逆向那点事(1)_第17张图片 安卓逆向那点事(1)_第18张图片

我们把这里的Hello 52pojie换成中文,右上角保存

安卓逆向那点事(1)_第19张图片

然后我们出来对修改后的安装包进行安装

安卓逆向那点事(1)_第20张图片

安卓逆向那点事(1)_第21张图片

这里我们安装是不成功的,这是因为签名不一致的问题导致的。我们之后会用核心破解(专门用来解决签名不一致的问题的模块)去解决,我们暂时先用一个简单的方法——将原来的软件卸载掉。

安卓逆向那点事(1)_第22张图片

这样就安装成功了,我们进去看看是否汉化

安卓逆向那点事(1)_第23张图片

汉化成功!我们继续。

我们接下来使用开发者助手来进行,在这个页面点击开发者助手的界面资源分析。

安卓逆向那点事(1)_第24张图片

我们选择要查看的地方,然后查看,这个文本信息就出来了。我们复制。

安卓逆向那点事(1)_第25张图片

然后返回模拟器,方法同上:去安装包中搜索这句话。

安卓逆向那点事(1)_第26张图片

选择翻译模式

安卓逆向那点事(1)_第27张图片

点击第一个

安卓逆向那点事(1)_第28张图片

然后我们可以看到很多的字符串,我们在这里找一下刚才的第二句。

安卓逆向那点事(1)_第29张图片

我们可以点击对他进行修改,我们可以将查到的翻译写上。

安卓逆向那点事(1)_第30张图片

接着介绍一个一键汉化的功能,但是这是一个VIP的功能,所以我们只是简单说一下

安卓逆向那点事(1)_第31张图片 安卓逆向那点事(1)_第32张图片

但毕竟是机翻,所以有的句子会比较生硬,所以有的地方还是需要我们自己去给润色一下。

然后我们保存翻译,再安装一次。

安卓逆向那点事(1)_第33张图片 安卓逆向那点事(1)_第34张图片

汉化成功!最后还有一句,它在dex文件中,我们选择第一个

安卓逆向那点事(1)_第35张图片

我们还是使用开发者助手复制语段,进行搜索

安卓逆向那点事(1)_第36张图片 安卓逆向那点事(1)_第37张图片 安卓逆向那点事(1)_第38张图片

这样,我们就能搜索到了

安卓逆向那点事(1)_第39张图片 安卓逆向那点事(1)_第40张图片

我们翻译并修改它

安卓逆向那点事(1)_第41张图片

保存退出,再次安装

安卓逆向那点事(1)_第42张图片

汉化成功!

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

我们用NP管理器来反编译一下xml文件

我们用MT提取的一般都放在这个MT2的统一路径里

安卓逆向那点事(1)_第43张图片

找到这个xml文件,选择编辑

安卓逆向那点事(1)_第44张图片 安卓逆向那点事(1)_第45张图片

我们最后尝试替换一下demo的名字和图标

安卓逆向那点事(1)_第46张图片 安卓逆向那点事(1)_第47张图片 安卓逆向那点事(1)_第48张图片

我们在这里就可以对程序的一些信息进行修改了,改完上图:

安卓逆向那点事(1)_第49张图片

保存,安装

安卓逆向那点事(1)_第50张图片

修改成功!

你可能感兴趣的:(逆向汇编,android,安全)