【发布时间】:2016-10-26 22:11:02
【问题描述】:
我是 kext 编程的新手,所以我的问题是:
我,我正在运行 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 Build Settings 并在那里我发现 code signing 所以在 code签名 有 代码签名身份 所以我将其设置为 不要代码签名 并使用 Xcode 构建工具 xcodebuild -configuration Debug -target kern 构建它
但到目前为止仍然没有进展,所以我希望有人帮助至少提供一个链接或任何东西。
【问题讨论】:
-
您引用的消息听起来像是内核允许您加载,而不管签名是否正确。
-
首先感谢先生的快速回放
-
但实际上 system.log 应该给出的输出不是我上面提到的错误
-
您在打印调用中缺少换行符 (\n),这可能是您看不到输出的原因。
-
先生,我非常感谢您先生,您真是太棒了,非常感谢您,请设置为答案以了解重点或正确的符号(我是 SOF 的新手
标签: macos code-signing iokit kernel-extension xnu