Frida使用方法

下面内容均已Android为主,环境搭建参考

框架

普通

import frida
import sys


def on_message(message, data):
    print(message)


dev = frida.get_remote_device()
# 需要hook的应用包名
session = dev.attach('com.gotokeep.keep')

# hook代码的核心部分
jscode = """
Java.perform(function () {
	// hook的类
    var b0 = Java.use('l.q.a.y.p.b0');
    // hook的方法
    b0.a.overload("java.lang.String").implementation = function(){
    	// 获取方法入参
        var args = arguments[0];
        // 打印log
        send("字符串转MD5 b0.a args:"+args);
        // 根据需要返回结果,这里使用this调用原方法
        return this.a(args);
    }
});
"""
script = session.create_script(jscode)
script.on('message', on_message)
script.load()
sys.stdin.read()

在python文件中写入上面文件,执行该文件即可。
运行时如果报错,建议检查下手机端frida-server是否运行,是否进行了端口映射,详见Frida环境搭建

人性化

对于上面的方法,hook代码部分需要是字符串的形式,对于我这种习惯了用ide提示的人,简直太不友好了,大大降低了ide的作用。不过不要慌,frida-agent-example了解一下?
这是一个能让你使用TypeScript语法编写hook代码的脚手架,工程结构并不复杂,clone到本地之后,先使用npm命令安装下依赖

npm install

会有一个如下的工程目录结构
在这里插入图片描述
其中index.ts文件便是编写hook代码的地方
在这里插入图片描述
如果想自定义文件名称或者路径,可以在package.json中修改目录指向
在这里插入图片描述
然后执行如下命令就可以进行hook了

# 将ts代码转换为js
npm run build
# 将代码注入
frida -U -f android应用包名 --no-pause -l _agent.js

为了方便起见可以在终端执行如下命令,检查代码有变更后自动build并注入

npm run watch

常用方法

方法hook

Java.perform(function () {
	// hook的类
    var b0 = Java.use('l.q.a.y.p.b0');
    // hook的方法,如果有重载方法也通过overload中的参数区分
    b0.a.overload("java.lang.String").implementation = function(){
    	// 获取方法入参
        var args = arguments[0];
        // 打印log
        send("b0.a args:"+args);
        // 根据需要返回结果,这里使用this调用原方法
        return this.a(args);
    }
});

构造方法hook

变量hook

静态变量hook

Java.perform(function () {
    var CrypLib = Java.use('com.gotokeep.keep.common.utils.CrypLib');
    CrypLib.a.overload("java.lang.String").implementation = function(){
        var arg = arguments[0];
        send("静态变量a:"+CrypLib.a.value);
        return this.a(arg);
    }
});

native方法hook

持续更新中

### 回答1: 这个错误提示是因为 Python 没有找到名为 'frida' 的模块。你需要先安装 `frida` 模块,可以在命令行中执行以下命令来安装: ``` pip install frida ``` 如果你使用的是 Python3,则需要使用 `pip3` 命令来安装: ``` pip3 install frida ``` 如果你已经安装了 `frida` 模块,但仍然出现该错误,可能是因为模块路径没有添加到 Python 的搜索路径中。你可以尝试在代码中添加以下语句: ``` import sys sys.path.append('/path/to/frida/') ``` 将 `/path/to/frida/` 替换为 `frida` 模块的实际安装路径。 ### 回答2: 这个错误的原因是在Python脚本"CVE-2022-39197_REC\cve-2022-39197.py"的第一行中,导入了一个名为"frida"的模块,但是当前环境中找不到这个模块,所以抛出了ModuleNotFoundError异常。 "frida"是一个用于动态分析、调试和跟踪应用程序的工具。要解决这个错误,需要确保在执行脚本之前已经安装了"frida"模块。 以下是解决步骤的参考: 1. 确认已经安装了Python解释器。可以在命令行中输入"python --version"来检查。 2. 确认已经安装了Python包管理器"pip"。可以在命令行中输入"pip --version"来检查。 3. 在命令行中输入"pip install frida"来安装"frida"模块。请确保处于联网状态,这样pip才能从互联网上下载并安装模块。 4. 安装完成后,重新运行"CVE-2022-39197_REC\cve-2022-39197.py"脚本,应该就不会再出现找不到"frida"模块的错误了。 如果以上步骤没有解决问题,请确保按照正确的步骤安装了"frida"模块,并检查是否存在其他可能的环境配置问题。可以尝试在搜索引擎上搜索类似的错误信息,以获取更多解决方案。 ### 回答3: 这个错误是由于找不到名为'frida'的Python模块所引起的。模块NotFoundError表示Python解释器无法找到所需的模块。 首先,我们需要确保已经正确安装了所需的'frida'模块。您可以使用pip来安装它,打开终端或命令提示符窗口,并输入以下命令: pip install frida 这将下载并安装'frida'模块。如果您已经安装了'frida'模块,可以尝试更新它到最新版本: pip install --upgrade frida 如果您使用的是Python 3,可能需要使用pip3命令来安装: pip3 install frida 如果仍然无法解决问题,可能是因为在您的环境中'frida'模块没有正确安装或找不到。请确保您正在使用正确的Python环境,并且'frida'模块位于Python解释器可以找到的路径中。 如果问题仍然存在,您可以尝试检查frida模块文档或与frida社区联系,以获得更详细的支持和解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值