提问:在 Linux 环境中运行的 go 二进制文件, 可以用什么工具 hook 呢

2023-10-18 19:30:51 +08:00
 lzy250

已经通过 IDA 反编译拿到了函数名,但实在不知道还后续该如何 hook ,有哪位师傅能给点提示吗?

2408 次点击
所在节点    信息安全
13 条回复
yuan1028
2023-10-18 19:54:41 +08:00
dlv
lzy250
2023-10-18 20:09:02 +08:00
@yuan1028 我试下。
virusdefender
2023-10-18 23:32:52 +08:00
gdb 或者 dlv 之类的调试器,其他的就是偏代码注入的,可以参考下 https://github.com/bytedance/Elkeid/tree/main/rasp/golang
ysc3839
2023-10-19 00:40:39 +08:00
inline hook
moooonb
2023-10-19 00:56:36 +08:00
frida ,ebpf (bcc)
learningman
2023-10-19 02:32:57 +08:00
ptrace 呗,go 除了默认静态链接没啥不同的,就是一堆 runtime 调用比较乱,还有内置的 strip 不掉的符号
lzy250
2023-10-19 09:41:14 +08:00
感谢,我再去试下上面的方式,有结论了 append 。
smartdone
2023-10-19 15:54:13 +08:00
frida
lzy250
2023-10-19 17:27:06 +08:00
打断点已经找到了这个 locals 对应的值,但是通过 set 无法修改这个结构体中变量的值, 请教下 dlv 是不能修改某个变量的值吗?
@yuan1028
lzy250
2023-10-19 18:11:12 +08:00
修改 int 类型的可以成功,但是修改字符串类型时就报错了。
Command failed: literal string can not be allocated because function calls are not allowed without using 'call'
lzy250
2023-10-19 18:37:12 +08:00
@lzy250 Delve 的 Set 仅允许数字类型和指针。。。https://pkg.go.dev/github.com/go-delve/delve/service/rpc2#RPCServer.Set
yuan1028
2023-10-19 19:22:57 +08:00
@lzy250 是的… dlv 我也是 debug 用的多,没用过 set 修改变量
lzy250
2023-10-19 19:30:44 +08:00
@yuan1028 我明天再试下 ptrace 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/983252

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX