gpt4 book ai didi

c - OpenBSD 内核模块调用网络函数

转载 作者:太空宇宙 更新时间:2023-11-04 04:00:44 26 4
gpt4 key购买 nike

作为一个概念验证,加上一个方便的偏执工具,我正在编写一个 OpenBSD LKM,它将连接到一个 IRC channel ,并在执行 Hook 系统调用时报告。

这样一来,当我不在现场但可以访问 Internet 时,我基本上可以“实时”更新文件系统更改、用户登录等。

我已经连接到套接字,但我一直坚持尝试执行与 getaddrinfo 或什至是 inet_addr 调用相同的硬编码地址。

由于这些是用户态函数,任何使用它们的尝试都将导致 undefined reference ——这很公平。问题是,经过一段时间的谷歌搜索和 grep'ing openbsd 源代码后,我找不到任何等效的内核函数来执行此操作;最好的建议是在模块中重新实现它们。

这意味着我还需要实现诸如 islowerisxdigitisspace 之类的东西(随着我的进步可能还有其他东西),这得到了做这么简单的事情有点费力;有没有人知道这个的解决方法或替代方法,或者我是否卡住了网络文件中的 c+p 代码?

最佳答案

这绝对是在用户空间中完成的更好。不管怎样,OpenBSD 不再支持内核模块。

并不是说您已经在处理这个项目了。我只是想回答这样可以关闭它,这样我就可以阐明如何在内核中使用一些 stdlib 函数。

对此的回应:

This means I need to also implement things like islower, isxdigit and isspace (and probably others as I progress), which gets a bit much to perform something so simple; is anyone aware of a workaround or alternative for this, or am I stuck c+p code from the net files?

一些 C stdlib 函数可以从 libkern 获得(参见 libkern(9))。其他的,包括许多 ctype 函数,如 islower(),可从 libsa 获得。要使用这些,您需要类似的东西:

#include <lib/libkern/libkern.h>
#include <lib/libsa/stand.h>

libsa 包含一些 header (在 /usr/src/sys/lib/libsa/ 中找到),因此请包含您需要的每个 header 。

关于c - OpenBSD 内核模块调用网络函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11921696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com