Frida环境搭建

前言:

Frida 是一个强大的动态代码插桩工具,主要用于在运行时对应用程序进行调试、分析和修改。它支持多种平台(如 Android、iOS、Windows、macOS、Linux 等),并且可以用于多种编程语言(如 JavaScript、Python、C 等)。Frida 的核心思想是通过注入代码到目标进程中,动态地监控和修改其行为。使用 JavaScript 编写脚本,快速实现动态分析功能。使用 JavaScript 编写脚本,快速实现动态分析功能。

常用于逆向分析,动态调试和脱壳场景

安装步奏:

获取手机系统架构

getprop ro.product.cpu.abi

windows平台安装Frida

pip install firda 
pip install frida-tools

下载frida-server-16.7.0-android-arm64.xz

https://github.com/frida/frida/releases/tag/16.7.0

将下载的frida-server放到手机中,并且修改其为可执行权限并执行:

adb push frida-server-16.7.0-android-arm64 /data/local/tmp/frida-server
adb shell 
su
cd /data/local/tmp
chmod 777 /data/local/tmp/frida-server
./data/local/tmp/frida-server

手机端查看下firda对应端口号 

这里看到端口号为27042,如果使用无线调试则需要端口转发到window本地的27042端口: 

adb forward tcp:27042 tcp:27042

windows端使用frida-ps测试连接

frida-ps -R

常用命令如下:

# 列出所有设备
frida-ls-devices 
# 列出usb设备的进程
frida-ps -U
# 列出正在跑的应用
frida-ps -Ua 
# 列出所有安装的应用
frida-ps -Uai 
# 连接指定的设备,设备id可以从第一条命令获得
frida-ps -D xxxxx 
# 启动应用并注入脚本 
frida -U -l exploit.js -f com.xxx.yyy 
# 应用已经在运行,注入脚本
frida -U -l exploit.js "XXXX" 
# 动态跟踪函数调用
frida-trace -U -i "open" com.example.app
frida-trace -U -i "open" -i "read" com.example.app

报错修复:

当运行的时候出现spawn报错,比如如下报错的时候

Failed to spawn: the connection is closed

当出现如此报错,需要排查如下几个

1.设备或系统限制

设备可能启用了某些安全机制(如 SELinux),阻止 Frida 启动目标应用程序。需要关闭SELinux

adb shell getenforce

如果 SELinux 处于 Enforcing 模式,尝试将其设置为 Permissive 模式: 

adb shell setenforce 0

2. Frida 客户端与服务器版本不匹配

 检查本地 Frida 客户端版本:

frida --version

adb shell /data/local/tmp/frida-server --version 

3. Frida 脚本问题

编写个测试脚本test.js

console.log("Frida is working!");

 frida -H 127.0.0.1:27042 -f com.oneplus.camera -l test.js

脱壳工具使用: 

frida-dexdump

https://github.com/hluwa/frida-dexdump

pip3 install frida-dexdump

frida-dexdump -H 127.0.0.1:27042  -f com.oneplus.camera

frida_dump

https://github.com/lasting-yang/frida_dump

frida -H 127.0.0.1:27042  -f com.oneplus.camera -l dump_dex.js

frida-unpack

https://github.com/dstmath/frida-unpack

frida -H 127.0.0.1:27042 -f com.oneplus.camera -l OpenMemory.js

三个运行完成后都会生成多个dex文件,下面就是要在生成的大量dex文件中分辨哪些是公共库文件,哪些是程序本身的dex文件

总结

Frida作为一个非常优秀的动态代码插桩工具,灵活性很高,我们可以根据自己的理解去hook任意的函数,进而可以对任意值的获取和修改,在脱壳和函数分析如key分析非常的方便,脚本编写简单使用js代码,但是需要我们对系统和原理有很深的理解,不然再好的工具也不行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值