作为一个概念验证,加上一个方便的偏执工具,我正在编写一个 OpenBSD LKM,它将连接到一个 IRC 通道,并在执行挂钩的系统调用时报告。
这样,当我不在现场但可以访问互联网时,我基本上可以对文件系统更改、用户登录等进行“实时”更新。
我已经连接了套接字,但我一直在尝试执行相当于硬编码地址的调用,getaddrinfo
甚至inet_addr
调用。
由于这些是用户态函数,因此任何使用它们的尝试都会导致未定义的引用——这很公平。问题是,经过一段时间的谷歌搜索和 grep 的 openbsd 源代码,我找不到任何等效的内核函数来执行此操作;最好的建议是在模块中重新实现它们。
这意味着我还需要实现islower
,isxdigit
和isspace
(随着我的进步可能还有其他),这对于执行如此简单的事情会有点多;是否有人知道解决方法或替代方法,或者我是否从网络文件中卡住了 c+p 代码?