APP逆向之Frida基础教程
入门
安装
1 | Frida 代码自动补全 |
安装Frida
1 | pip install frida-tools |
找到相应版本的Frida 推送到设备中
https://github.com/frida/frida/releases/tag/16.5.1
命令
1 | adb push frida-server16.5.1 /data/local/frida-server16.5.1 |
基础命令
frida-tools里面还提供了五个实用工具
frida-discover、
frida-kill、
frida-ls-devices、
frida-ps以及
frida-trace
在 shims下面
获取可用设备列表
1 | frida-ls-devices |
获取设备进程列表
frida-ps [options]
● -U:连接到USB设备。
● -D:如果有多个USB设备,可以用该选项指定设备的UDID。
● -R/-H:连接到远程frida-server,主要用于远程调试。
● -a:仅显示正在运行的应用。
● -i:显示所有已安装的应用(包括App Store应用和系统应用)。
具体demo:
- 连接到USB设备查看进程列表 frida-ps -U
- 连接到USB设备查看正在运行的应用 frida-ps -U -a
- 连接到USB设备查看所有安装的应用 frida-ps -U -a -i
- 指定查看某个设备 frida-ps -D xxxx -a
遇到的坑:
- windows上frida环境配置出现Waiting for USB device to appear…
解决:
运行下面代码1
2adb forward tcp:27042 tcp:27042
frida-ps -H 127.0.0.1:27042
结束设备的某个进程
frida-kill工具用来结束设备上的某个进程,它的使用规则如下:
- frida-kill -U
/ - frida-kill -D
/
例如用frida-ps获取了微信的PID为1815,
则可以用如下命令结束它:
1 | frida-kill -U 1815 |
frida 追踪
frida-trace工具用于跟踪函数或方法的调用,其功能非常强大,使用“-h”选项来查看帮助信息。
1 | // 设备相关 |
附加的两种方式
1.Attach模式
前台打开APP:
frida -UF -l 脚本.js
2.Spwan模式
frida -U -f 包名 %resume 可以加 --no-pause 但是在 16的版本已经取消 --no-pause 具体命令自行研究
另外需要一点JS和python语法基础
Hook 构造函数
常用API:
是一个非常重要的对象,在里面有许多的API。在对Java层进行hook时,是必须要写Java.perform的。
Java.perform
Java.perform(fn)
主要用于当前线程附加到Java VM
并且调用fn
方法
Java.available
该函数一般用来判断当前进程是否加载了
JavaVM,Dalvik
或ART
虚拟机 通俗一点讲是否在Java代码空间
Java.androidVersion
显示android系统版本号
Java.use
Java.use(className),
动态获取className
的类定义 类似于xposed里面的获取Class 可以直接点到源代码看他的定义
Java.use(类名).方法名.implementation
获取方法的实现
overload
重载参数
.$init()
拦截构造函数时候使用
立即注入或者延迟注入
setImmediate(test);
setInterval(test,1000);
1 | function main() { |
- 标题: APP逆向之Frida基础教程
- 作者: 流转
- 创建于 : 2024-09-18 22:38:36
- 更新于 : 2024-10-23 12:45:18
- 链接: http://hybpjx.github.io/2024/09/18/APP逆向之Frida基础教程/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。