Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
fanpei91 opened this issue Jan 2, 2019 · 4 comments

Comments

@fanpei91
Copy link

fanpei91 commented Jan 2, 2019

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

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

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

@hmgle
Copy link
Owner

hmgle commented Jan 2, 2019

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

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

@fanpei91
Copy link
Author

fanpei91 commented Jan 2, 2019

好的,我试试看。

@fanpei91
Copy link
Author

fanpei91 commented Jan 2, 2019

$ 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
Copy link

@fanpei91 大哥,有进展了吗

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants