【问题标题】:SIP off on mac os but still cant load my kext在 mac os 上关闭 SIP 但仍然无法加载我的 kext
【发布时间】: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


【解决方案1】:

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

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

printf("hello world\n");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 2016-03-06
    相关资源
    最近更新 更多