Frida官方手册 - 消息发送

本文介绍如何在Python主控端与目标进程间双向发送消息,包括环境搭建、消息发送及接收、异常处理等内容。
Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

消息发送

  • 在这篇教程里,我们来讲述如何从目标进程发送消息到主控端以及如何反向发消息。
环境准备
  • 创建文件 hello.c
  • 使用如下命令编译:
  • 然后启动程序,并记录下函数 f() 的地址(在这个例子中是0x400544):
从目标进程中发消息
  • 在下面的这个例子中,脚本从目标进程中给Python主控端发回了一条消息,理论上你可以发送任何可以序列化成JSON的任何JavaScript值。
  • 创建文件 send.py,大致内容如下:
  • 使用如下命令执行脚本:
  • 正常情况下,应该能看到如下的输出:
  • 从上面的结果可以知道,send(1337) 这段JavaScript代码已经在 hello 这个进程中执行了,可以使用 Ctrl + D 来终止脚本执行。
处理JavaScript中的运行时错误
  • 如果我们写的JavaScript脚本抛出了异常,这个异常就会被从目标进程发送到Python主控端。比如,我们把 send(1337) 改成 send(a) (未定义变量a),Python主控端就会收到下面的错误信息:
  • {u’type’: u’error’, u’description’: u’ReferenceError: a is not defined’, u’lineNumber’: 1}
  • 请注意 错误信息的字段变成了 error 而不是上面的 send
在目标进程中接收消息
  • 也可以从Python主控端往目标进程中的JavaScript代码发消息,比如下面的这个脚本 pingpong.py:
  • 使用如下命令执行脚本:
  • 脚本会输出如下内容:
在目标进程中以阻塞方式接收消息
  • 在目标进程中的JavaScript代码可以用阻塞的方式接收来自主控端的消息,下面给一个例子 rpc.py
  • 先把 hello 这个程序执行起来,然后记录下打印出来的函数地址(比如:0x400544
  • 然后使用如下命令执行脚本:
  • 然后观察 hello 命令行输出,大致应该如下:
  • hello这个程序界面应该一直输出你输入的数据的2倍的值,直到你按下 Ctrl+D 结束。

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值