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ビルド設定を調べたところ、コード署名が見つかりました。コード署名はコード署名IDがあるため、 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 に答える