【问题标题】:Hooking syscalls in Go在 Go 中挂钩系统调用
【发布时间】:2015-11-17 17:28:20
【问题描述】:

我正在尝试使用 Go 在 linux 中挂钩 fopen 系统调用。

通常我会使用 C 来完成类似的事情(例如:https://stackoverflow.com/a/880278/5572976),但 CTF 声明解决方案需要用 Go 编写。

我查看了 syscall 包,基本上我正在寻找的是在 Go 中使用以下内容。

dlsym(RTLD_NEXT, "open");

编辑:那是 open,而不是 fopen。

【问题讨论】:

  • 这听起来很像那种需要更多细节的问题,因为我几乎可以肯定有更好的方法可以实现您实际想要完成的任务。跨度>
  • @ZanLynx 我想要完成的是使用 LD_PRELOAD 全局挂钩 fopen 系统调用并更改具有特定名称的文件的输出。只要提交的代码是 Go,就可以使用混合 C 和 Go 的库。
  • 您只是在很大程度上重申了您的问题。唯一的新位是“更改具有特定名称的文件的输出”。看起来更像是inotify 的工作。
  • 你也不能在 Go 中挂钩 fopen,因为 Go 甚至不使用 C 库。当 Go 进行系统调用时,它会直接调用操作系统内核。
  • 为了帮助可能对您的问题感到困惑的人,(就像我一样),请始终更正您的问题;我认为它应该到处都说 open,而不是 fopenopen 的混合。对吗?

标签: linux go system-calls


【解决方案1】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-28
  • 2016-06-23
  • 1970-01-01
相关资源
最近更新 更多