Frida官方手册 - 消息发送

发布者:freakish
发布于:2017-10-19 16:29

消息发送

  • 在这篇教程里,我们来讲述如何从目标进程发送消息到主控端以及如何反向发消息。

环境准备

  • 创建文件 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 结束。

声明:该文观点仅代表作者本人,转载请注明来自看雪