在 mac os 上关闭 SIP 但仍然无法加载我的 kext

SIP off on mac os but still cant load my kext

我是 kext 编程新手,所以我的问题是:

i,m 运行 macOS 10.11.6 我已经关闭了 SIP 但是当我尝试加载我的 kext 使用 kextload 并使用 -v 标志我得到我的 kext 已成功加载:

*Requesting load of /private/tmp/kern.kext.
/private/tmp/kern.kext loaded successfully (or already loaded).*

为了检查我的 kext 是否已加载,我使用了 kextstat :

 152    0 0xffffff7f82db3000 0x2000     0x2000     com.SPX.kext.kern (1) 299868F4-9962-362D-AE3D-09579B6780DB <4>

但是当我跟踪我的内核日志时:/var/log/system.log 使用命令:tail -f /var/log/system.log

我看到那个错误:

MacBook-Pro com.apple.kextd[47]: kext signature failure override 

allowing invalid signature -67050 0xFFFFFFFFFFFEFA16 for kext

"/private/tmp/kern.kext"

我的 kext 是一个简单的 hello world kext,还有我的代码

#include <mach/mach_types.h>
#include <libkern/libkern.h>

kern_return_t kern_start(kmod_info_t * ki, void *d);
kern_return_t kern_stop(kmod_info_t *ki, void *d);

kern_return_t kern_start(kmod_info_t * ki, void *d)
{
    printf("hello world");
    return KERN_SUCCESS;
}

kern_return_t kern_stop(kmod_info_t *ki, void *d)
{
    printf("bye kext");
    return KERN_SUCCESS;
}

提前感谢您的帮助

编辑:

所以经过多次测试,kext 似乎已成功加载,但当涉及到代码签名问题时,我通过了 Xcode 构建设置,在那里我找到了 代码签名 所以在 code signing 中有 code signing identity 所以我将它设置为 Don't code sign 我使用 Xcode 构建工具 xcodebuild -configuration Debug -target kern 构建它 但到现在仍然没有进展,所以我希望有人能帮忙至少给一个 link 或任何东西。

您得到的输出表明正在加载 kext - 代码签名不是您的问题。

不过我确实注意到您的 printf() 呼叫不包含线路终止。 (\n) 不输出整行将导致消息的缓冲时间超过您的预期,并 运行 进入其他消息。有了这样的东西,它应该可以工作,你应该在系统日志中看到你的消息:

printf("hello world\n");