android逆向之frida安装与简单使用Crackmes/Android/Level_01
0x01 在电脑上安装adb
安装adb
我们要在电脑上通过adb与手机进行交互,所以要先安装adb
1.安装 adb
windows电脑安装adb
1 | 可以通过安装android sdk |
Mac安装命令
1 | brew cask install android-platform-tools |
2.将手机通过数据线连接到电脑上
- 要设置手机打开usb调试
- 一般就在 手机设置-关于-开发者选项-允许usb调试 (不同手机不一样,自己找找USB调试)
3.运行adb,在终端输入如下命令,查看连接的设备
运行adb命令,查看当前连接设备
1 | adb devices |
显示有device就是连接上了设备
0x02 在电脑上-安装python3
windows电脑去官网下载,自己百度安装吧
1 | 注意:高版本的frida 要配合高版本的python |
Mac版本
1 | brew install [email protected] |
0x03 在电脑上安装frida-tools
这个其实是python的一个模块,自动化编写hook脚本一定要引入的。
windows与Mac 的命令一样
1 | python -m pip install frida-tools |
0x04 在手机上安装frida-server
电脑上配置完后,手机端也需要配置
- 现在需要下载frida-server端到手机中
1 | 下载地址: |
版本很多
androids就是下面几个,对应去下载就好了
1 | frida-server-15.0.18-android-arm.xz ----真机32位 |
下载完android设备相对应的frida-server后
通过adb push将frida-server发送到android设备中
1
2
3adb push /Users/zy/Desktop/frida-server/frida-server-12.10.4-android-arm /data/local/tmp
adb push (本机frida-server地址)(手机要放的地址)
手机上启动frida-server
这样电脑上的frida客户端才能与手机中的frida服务端才可以进行交互
上述已经将frida-server放入 /data/local/tmp中
启动adb shell 进入手机的shell中
1
2
3
4#查看adb连接的设备
adb devices
#启动adb shell 进入手机的shell中
adb shell找到frida-server,给他执行权限,运行
1
2
3
4
5
6
7
8# 进入手机shell
adb shell
# 找到对应目录
cd /data/local/tmp/
# 给运行权限
chmod 775 frida-server-15-arm64
# 后台持久运行,如果运行一次就直接 ./frida-server-15-arm64
./frida-server-15-arm64 &下面是我的命令
0x05 frida的使用
安装完之后,就是怎么使用frida了
注意:
刚刚在手机端安装好frida-server的时候,发现frida命令有的可用有的不可用,比如frida-ps -U 可执行,而frida-ps -R 就会执行报错(Failed to enumerate processes: unable to connect to remote frida-server),原因发现需要在客户端开启端口转发才可以
1 | adb forward tcp:27042 tcp:27042 |
命令做了端口开启,才使得问题解决
frida tools主要有这几个常用的功能
- frida-ls-devices 查看设备信息,主要包括UDID、连接方式、iOS设备名称,如下所示
- frida-ps 查看通过USB连接的iOS设备上运行的程序
1 | 通常使用frida-ps -Ua 查看正在运行的应用 |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GDTyv1if-1631581506681)(https://gitee.com/godzeo/blogimg/raw/master/img/20210825220111.png\)\]
- frida-trace
1 | frida-ps -D <UDID> 通过UDID查看设备中应用程序中的pid、进程名 |
- **frida-kill ** 结束某个机子的进程
1 | frida-kill -D <UDID> <pid> |
0x06 通过python及JavaScript脚本自动化来hook
- 下面就是,frida还可以通过python及JavaScript脚本来hook android设备中的应用程序
- 这个python调用和注入脚本,基本上都是固定的,只需要修改准备hook的app的bundleId和javaScript脚本地址就好了
1 | # author: Zeo |
0x07 安装测试应用,简单使用
下载完以后通过adb 将apk安装到手机中
1 | adb install UnCrackable-Level1.apk |
下载地址:
https://github.com/OWASP/owasp-mstg/tree/master/Crackmes/Android/Level\_01
一个root检测的绕过
1、反编译静态分析app
我们常用的工具有jeb、jadx等工具进行分析
这里我推荐使用jadx反编译分析。
打开软件,直接打开要反编译的APK就可以了
2、分析app的检测android设备是否root的功能
根据提示的字符串找到这个检测函数
root检测主要靠三个函数
1 | c.a() c.b() c.c() |
基本上就是通过 环境变量 PATH检测、test-key文件、或者一下目录或者文件检测是否root
但其实不用这么麻烦,可以直接hook System.exit函数,app虽然检测到我们的设备已经root,但是不让它退出,继续运行也是一样的效果
3、编写hook js脚本
1 | Java.perform(function () { |
点击之后就成功绕过退出了