hmgle / graftcp

A flexible tool for redirecting a given program's TCP traffic to SOCKS5 or HTTP proxy.
GNU General Public License v3.0
2.1k stars 173 forks source link

怎么个理论上能实现 mac os 版的 graftcp,DTrace 貌似只是个探针。 #12

Closed fanpei91 closed 5 years ago

fanpei91 commented 5 years ago

正如你所说,mac os 的 ptrace 是个半残品,也提到了理论上参考 DTrace 那一套也能实现,但是我简单了解了下 DTrace, 它并不能修改操纵被跟踪的程序,纯粹就是个探针。

还请指教下,怎么个理论上能实现?我想躺这趟浑水。一直好奇 proxifier 是怎么在 mac os 里做到跟 graftcp 一样的效果。

感谢你写的如此好的程序。

hmgle commented 5 years ago

@fanpei91 你好。 今天我重新看了下 DTrace 相关资料,发现是我之前对 DTrace 理解有误,如你所说,它对标的是 strace,作为工具并没有提供修改被跟踪程序参数机制。

对于 ptroxifier 这方面的能力,从这个链接来看,应该是依赖了 Kernel Extension 这一套。对于 macOS 的 kext 这方面我没有太多的了解,期待你在这方面有所突破。

fanpei91 commented 5 years ago

好的,我试试看。

fanpei91 commented 5 years ago
$ kextstat | grep proxifier
177    0 0xffffff7f8363b000 0x2f000    0x2f000    com.initex.proxifier.macosx.kext (2.22.1) AE75CA1A-FC0E-37BD-9EDE-A4943360E6B6 <5 4 2 1>

proxifier 确实是用了 Kernel Extension 技术

yangchuansheng commented 3 years ago

@fanpei91 大哥,有进展了吗