Frida官方手册 - 消息发送
分类:
文章
•
2024-12-23 22:33:52
消息发送
- 在这篇教程里,我们来讲述如何从目标进程发送消息到主控端以及如何反向发消息。
环境准备
- 创建文件 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 结束。