返回介绍

消息发送

发布于 2025-01-02 22:31:48 字数 3201 浏览 0 评论 0 收藏 0

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

环境准备

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文