编译getaddrinfo钩子 LD_PRELOAD加载 钩Python程序 钩Go程序 GODEBUG=netdns=cgo
上一篇, 我们用钩子拦截系统接口调用的方法验证某个程序是否调用了getaddrinfo系统接口. 这样的钩子技术可以应用在很多其它情况下. 并不会因为钩子的源代码是C, 就只能钩C写的程序 (curl 是 C写的). 编译钩子请参考 上一篇 , 略. 钩子文件是 /root/ hook_getaddrinfo.so 钩 Python 程序 感谢 Debian中文群的群友的 python 代码 https://t.me/c/1039975886/766756 python3 -c 'import sys, socket; [print(res) for res in socket.getaddrinfo(sys.argv[1], int(sys.argv[2] if len(sys.argv) > 2 else 80))]' api.myip.la 上面的代码是python调用系统 getaddrinfo. 我们在开头加上钩子, 得到 LD_PRELOAD=/root/ hook_getaddrinfo.so python3 -c 'import sys, socket; [print(res) for res in socket.getaddrinfo(sys.argv[1], int(sys.argv[2] if len(sys.argv) > 2 else 80))]' api.myip.la 日志如下 钩 Go 程序 让GPT写一个Go程序, 实现简单的功能: 访问一个域名, 打印HTTP结果. 看起来就像curl 代码如下, gurl.go package main import ( "fmt" "io/ioutil" "log" "net/http" "os" "strings" // 导入 strings 包用于字符串操作 "time" ) func main() { // --- 1. 处理命令行参数 --- if len(os.Args) < 2 { log.Fatalf("❌ 缺少参数。用法: gur...