可以通过Mac系统的内核扩展做很多事情,这里总结些能够实现的功能。
文件访问拦截
使用苹果在10.4后引入的Kauth(Kernel Authorization)实现。
Kauth里的Vnode Scope,会回调所有的文件系统操作给KEXT中注册的回调函数,包括读写、执行、删除等,并且可以由KEXT决定是否拒绝访问。
重要函数
1 | kauth_listen_scope 注册一个监听器 |
网络访问拦截
使用苹果的NKE机制(Network kernel extensions)实现,NKE就是描述与网络栈交互或扩展网络栈的KEXT。
使用NKE中的socket filter实现网络访问拦截。
重要函数
1 | sflt_register 注册一个filter |