0

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

我,我正在运行 macOS 10.11.6 我已经关闭了 SIP,但是当我尝试使用kextload并使用 -v 标志加载我的 kext 时,我发现我的 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 Build Settings 并在那里我发现了代码签名,所以在代码签名中有代码签名身份,所以我将其设置为Don't代码签名,我使用 Xcode 构建工具构建它, xcodebuild -configuration Debug -target kern 但到目前为止仍然没有进展,所以我希望有人帮助至少提供一个链接或任何东西。

4

1 回答 1

0

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

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

printf("hello world\n");
于 2016-10-30T13:30:25.933 回答