我正在为os x编写网络过滤器内核扩展。 我想在kext中调用类似回调的东西。 例如在data_in函数中,当我得到一个tcp包时,我想从用户应用程序调用这个回调。应用程序更改此数据包,我将其注入。 如何在kext和用户应用程序之间进行这种交互?
答案 0 :(得分:1)
首先,你不想阻止data_in回调 - 你应该"吞下"数据包,将其发送到用户空间,当它返回时,将其重新注入连接。
有几种方法可以与用户空间进程交换数据。交换网络数据包最方便的方法可能是kernel control机制,它实际上允许您在用户程序和kext之间打开套接字连接。
Apple过去常常提供示例源代码," tcplognke"这做了一些非常相似的事情,但它似乎从他们自己的网站上消失了。有人似乎保存了它并且是offering it for download - 现在看起来还不错,但显然对从随机网站下载内容持谨慎态度。