Day01 1.2APP逆向的必备知识
【一】逆向原理
(1)安卓app逆向
- 正向:
- 安卓开发工程师 ->
- Java语法+安卓框架 ->
- 功能代码(Java+C) ->
- APK(资源文件/.dex/.so)
- 逆向:
- 安卓逆向工程师 ->
- APK ->
- 反编译 ->
- Java+C代码 + Hook ->
- Python代码还原
【二】什么是反编译,什么是HOOK
(2.1)什么是反编译
- 反编译是指将已编译的安卓应用程序(APK文件)转换回其源代码的过程。
- 通常,安卓应用程序在开发过程中会经过编译,将源代码转换为可执行的二进制代码,这使得源代码不可见和难以理解。
- 反编译的过程旨在还原应用程序的源代码,以便进行分析、理解和修改。
- 通过安卓反编译,你可以获取应用程序的源代码,了解其实现逻辑、算法、资源文件和其他关键信息。
- 这对于安卓应用程序的安全评估、漏洞分析、逆向工程、定制化和学习都有重要意义。
- 在安卓反编译过程中,常见的工具和技术包括:
- apktool:
- apktool是一款常用的开源工具,用于反编译和重新打包APK文件。
- 它可以将APK文件解压为资源文件和Smali代码,并提供了对Smali代码进行分析和编辑的功能。
- JADX:
- JADX是一款功能强大的开源工具,用于将APK文件转换为可读的Java源代码。
- 它能够还原大部分Java代码,并提供源代码分析和导航功能。
- JD-GUI:
- JD-GUI是一款免费的Java反编译工具,可以将已编译的Java类文件转换为可读的Java源代码。
- 尽管它主要用于Java反编译,但对于某些Smali代码的反编译也有一定的支持
- apktool:
安装 jadx
1 下载https://www.oracle.com/java/technologies/downloads/#java8
2 解压提供的压缩包:jadx-1.2.0.zip
3 运行/bin/jadx-gui
4 打开爱学生:app,搜索:patriarchLogin
(2.2)什么是HOOK
-
HOOK指的是通过修改或替换目标应用程序的函数或方法来改变其行为的技术。
- 这种技术允许开发者或黑客在不修改应用程序源代码的情况下,对其进行定制、调试、修改或篡改。
-
在安卓中,常见的HOOK技术有以下几种:
- 动态链接库(DLL)注入:
- 通过加载一个自定义的动态链接库来替换目标应用程序的某些函数或方法。
- 这种方式通常需要在ROOT权限下进行,并且需要一些额外的工具和技术,如Xposed Framework或Frida。
- Xposed框架:
- Xposed是一款强大的安卓框架,它提供了一种简单的方式来HOOK安卓应用程序。
- 通过Xposed框架,开发者可以编写模块,用于修改或替换目标应用程序的函数或方法。
- Frida框架:
- Frida是一款功能强大的动态分析工具,它提供了在运行时修改和HOOK应用程序的能力。
- 通过Frida,开发者可以使用JavaScript编写脚本,动态修改目标应用程序的行为
- 动态链接库(DLL)注入:
【三】设备选择
(1)mac或win系统均可
- 建议i5,16g以上内存
(2)安卓设备选择
(2.1)电脑安卓模拟器(网易mumu)
- win:
- 网易mumu、逍遥、夜神、雷电(推荐3版本,不要用4版,以后抓包会有问题)
- mac:
- 网易mumu(暂不支持m1)
- win同学安装模拟器时,开启vt-x:
https://mumu.163.com/include/16v1/2016/06/27/21967_625825.html
(2.2)安卓真机
- 推荐:
- Pixel谷歌手机【逆向+刷自定义安卓系统+脱壳机】
注意:购买时,必须要买解OEM锁的版本(欧版)
- 其他:
- 小米手机(官方支持解BL锁)
在逆向时,你的安卓设备必须获取ROOT权限,一般想要获取ROOT的权限,必须:
- 手机解BL锁或OEM锁
- 刷官方系统 + 基于Magisk面具对手机进行ROOT
【四】什么是OEM锁,BL锁
- "Pixel开启OEM锁"
- 通常指的是在Google Pixel设备上启用了OEM锁(也称为Bootloader锁)。
- OEM锁是一个安全机制,目的是保护设备免受未经授权的修改和潜在的安全威胁
- 如何开启OEM锁,详见资料
【五】什么是adb
-
「adb」即 Android Debug Bridge ,亦称安卓调试桥
- 是谷歌为安卓开发者提供的开发工具之一,可以让你的电脑以指令窗口的方式控制手机。
-
可以在安卓开发者网页中的 SDK 平台工具页面下直接下载对应系统的 adb 配置文件,大小只有几十MB
-
用电脑控制手机的工具,软件
【六】刷机的几种方式
-
线刷:(factory包)
-
adb 操作
-
fastboot模式操作手机
-
刷入系统
-
-
卡刷:(ota包)
- 把系统镜像放在sd卡上,刷入到手机里的方式
【七】补充谷歌系列手机
以下是Nexus和Pixel手机的一些常见型号、版本和发布时间的简要列表:
(1)Nexus手机系列:
- Nexus One - Android 2.1 Eclair - 2010年1月发布
- Nexus S - Android 2.3 Gingerbread - 2010年12月发布
- Galaxy Nexus - Android 4.0 Ice Cream Sandwich - 2011年11月发布
- Nexus 4 - Android 4.2 Jelly Bean - 2012年11月发布
- Nexus 5 - Android 4.4 KitKat - 2013年10月发布
- Nexus 6 - Android 5.0 Lollipop - 2014年10月发布
- Nexus 5X - Android 6.0 Marshmallow - 2015年9月发布
- Nexus 6P - Android 6.0 Marshmallow - 2015年9月发布
- Nexus 9 - Android 5.0 Lollipop - 2014年11月发布
- Nexus Player - Android 5.0 Lollipop - 2014年11月发布
(2)Pixel手机系列:
- Pixel - Android 7.1 Nougat - 2016年10月发布
- Pixel XL - Android 7.1 Nougat - 2016年10月发布
- Pixel 2 - Android 8.0 Oreo - 2017年10月发布
- Pixel 2 XL - Android 8.0 Oreo - 2017年10月发布
- Pixel 3 - Android 9 Pie - 2018年10月发布
- Pixel 3 XL - Android 9 Pie - 2018年10月发布
- Pixel 3a - Android 9 Pie - 2019年5月发布
- Pixel 3a XL - Android 9 Pie - 2019年5月发布
- Pixel 4 - Android 10 - 2019年10月发布
- Pixel 4 XL - Android 10 - 2019年10月发布
- Pixel 4a - Android 10 - 2020年8月发布
- Pixel 4a (5G) - Android 11 - 2020年9月发布
- Pixel 5 - Android 11 - 2020年9月发布
- Pixel 6和Pixel 6 Pro -2021年9月发布
- Pixel 7a、Pixel 7 -2023年5月发布