标签: kernel-extension

第二次安装后拒绝有效签名的macOS Kext(高山脉)

在之前安装了我的产品的机器中,由于kext签名拒绝,第二次安装失败.

我在某些地方看到了相同的错误,例如:https://support.eset.com/kb6570,但是即使在恢复模式下清除kext_policy表,并在设置中手动批准kext - >安全性下次启动时,kext似乎仍未获得批准.

例如,运行kextutil提供以下内容:

Kalyan:~ KalyanPentakota$ sudo kextutil /Library/Extensions/mycompanyAT.kext/
Password:
Kext rejected due to insecure location: <OSKext 0x7f8e9ff02e20 [0x7fffa11c8af0]> { URL = "file:///Library/StagedExtensions/Library/Extensions/mycompanyAT.kext/", ID = "com.mycompany.at" }
Kext rejected due to insecure location: <OSKext 0x7f8e9ff02e20 [0x7fffa11c8af0]> { URL = "file:///Library/StagedExtensions/Library/Extensions/mycompanyAT.kext/", ID = "com.mycompany.at" }
Diagnostics for /Library/Extensions/mycompanyAT.kext:
Run Code Online (Sandbox Code Playgroud)

数据库中的kext批准状态:

sqlite> select * from kext_policy;
XE2XNRRXZ5|jp.co.canon.bj.print.BJUSBLoad|1|Canon Inc.|8
KBVSJ83SS9|com.citrix.kext.gusb|1|Citrix Systems, Inc.|8
MK9BR98H51|com.mycompany.at|1|My Company Ltd|1
Run Code Online (Sandbox Code Playgroud)

Kext证书验证:

Kalyan:~ KalyanPentakota$ codesign -dvv /Library/Extensions/mycompanyAT.kext/
Executable=/Library/Extensions/mycompanyAT.kext/Contents/MacOS/mycompanyAT
Identifier=com.mycompany.at
Format=bundle with Mach-O thin (x86_64)
CodeDirectory …
Run Code Online (Sandbox Code Playgroud)

macos kernel-extension macos-high-sierra

8
推荐指数
2
解决办法
3623
查看次数

拖放在Cocoa中的Dock图标 - 介绍文件关联

我在我的应用程序中实现了拖放功能.该应用程序让你打开.kext文件.

我已经使用-(void)application:openFiles:了以及设置文档类型: 文档类型设置

一切正常,我的应用程序可以检测到何时丢弃kext.但是,当删除Kext时,我的Mac上的所有kexts都会将图标更改为Folder icon!我想这与我的应用程序搞乱文件关联有关.

有没有办法解决?

cocoa icons kernel-extension

7
推荐指数
1
解决办法
756
查看次数

Yosemite和Xcode安装后缺少/ usr/include?

看到一个奇怪的问题,这个问题在其他两个工作站上没有发生.在最近使用Xcode和命令行工具重新安装Yosemite之后,我发现我的/usr/include这个特定工作站上没有.我现在能够用Homebrew构建软件包,其他各种工作似乎很好,但是当我开始构建一些内核扩展时,我惊恐地发现这个文件夹完全不存在.关于这里可能会发生什么的任何想法?

xcode kernel-extension osx-yosemite

7
推荐指数
1
解决办法
3222
查看次数

将SYSCALL函数存储在函数指针数组中

我正在开发一个项目,我必须在OSX(10.10.5)上挂钩80%-90%的系统调用函数.我是从内核扩展中做到这一点的.由于我必须(un)挂钩许多函数,我想将原始内核函数存储到函数指针数组中,我可以快速查找数组,以便在取消时恢复原始函数.

    int (*kern_open)(struct proc *, struct open_args *, int *);
    int mon_open(struct proc *p, struct open_args *uap, int *retval) {
    kern_open = sysent[SYS_open].sy_call;
    sysent[SYS_open].sy_call = mon_open;
Run Code Online (Sandbox Code Playgroud)

这样可行,kern_open函数用于存储调用系统调用的原始内核函数.mon_open是我的挂钩功能.

我想要实现的目标如下:因此,在取消挂钩时,我可以通过KernSysCall数组进行迭代并恢复功能.

    // global array of function pointers that all have the same func def.
    static int (*KernSysCall[SYS_MAXSYSCALL])(struct proc *, struct args *, int *);
    KernSysCall[SYS_open] = sysent[SYS_open].sy_call;
    sysent[SYS_open].sy_call = mon_open;
Run Code Online (Sandbox Code Playgroud)

恢复: sysent[SYS_open].sy_call = KernSysCall[SYS_open];

但是,将原始内核函数存储在函数指针数组中会导致内核崩溃.由于error: KDP_REATTACH failed错误,我还无法附加lldb .我希望有人知道导致内核恐慌的原因.

下面是内核恐慌的日志.

Anonymous UUID:       052D64D2-A43C-99F8-D221-B591991E54AF

Wed Nov 11 12:55:06 2015

*** Panic Report *** …
Run Code Online (Sandbox Code Playgroud)

c macos kernel module kernel-extension

7
推荐指数
1
解决办法
462
查看次数

使用NKE更改数据包接口

我正在开发一个VPN应用程序,我正在寻找从默认en0界面路由应用程序特定数据包.我想知道我可以通过使用NKE实现这一目标吗?

假设来自Safari的所有数据都通过ppp0接口,Chrome中的所有数据都通过en0.

sockets macos kernel kernel-extension

7
推荐指数
1
解决办法
109
查看次数

MacOS High Sierra KEXT Loading - 有没有办法取消用户批准?

正如某些MacOS开发人员所知,Apple实施了Secure Kernel Extension Loading.

用户可以通过单击Approve按钮批准第三方KEXT Security and Privacy.但是,一旦KEXT获得批准,是否有任何取消批准的方法?

想象一下,用KEXT加载测试应用程序的情况等.

如果除了干净安装之外别无选择,那么测试应用程序非常困难.

macos kernel-extension macos-high-sierra

7
推荐指数
1
解决办法
1335
查看次数

在MAC OS X 10.8.x上,AppStore应用程序如何安装内核扩展?

描述 我正计划开发一个科学的沙盒应用程序,需要安装内核扩展才能正常运行.

代码相关问题 应用程序在购买时如何安装kext?我的意思是,它将如何部署?是否有一些(可可)API可以调用?我没有运气就找到了这个答案.似乎大多数应用程序不需要kexts.

一般问题 我是否可以将这样的应用程序放在appStore上?我有疑问,因为安装内核扩展会破坏沙盒的目的.

macos cocoa kernel-extension mac-app-store

6
推荐指数
1
解决办法
885
查看次数

在早期启动过程中加载OS X kext

我有一个工作的OSX内核扩展,我希望尽早在启动时自动加载.kext使用KAUTH来监视特定路径上的访问,所以在我看来,没有任何东西可以请求将它加载到内核中.在这种情况下,复制它/Library/Extensions(至少从Yosemite这是第三方扩展的推荐路径)将无法解决我的问题.

是否有可能通过修改代码或通过某些辅助配置来实现此目的?

我已经阅读过使用launchd守护进程来使用kextload来加载扩展,如本问题所述,但在我的情况下,我希望尽早加载它.

更新:
我正在使用"通用"内核扩展(链接到BSD库)而不是基于I/O Kit的内核扩展.
我想在launchd开始之前加载我的扩展程序.

macos boot kernel kernel-extension

6
推荐指数
1
解决办法
3122
查看次数

CH34x 驱动程序/kext 安装 OSX Sierra

我正在尝试让 OSX Sierra 上的驱动程序运行。但没有结果。

我的研究使我访问了以下站点:https : //github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver https://tzapu.com/ch340-ch341-serial-adapters-macos- sierra/ https://blog.sengotta.net/signed-mac-os-driver-for-winchiphead-ch340-serial-bridge/ http://www.wch.cn/download/CH341SER_MAC_ZIP.html(公布为最新版本)

在我尝试安装它们之前,我在恢复模式下尝试过这个(用 ? + R 重新启动)。

csrutil enable --without kext
Run Code Online (Sandbox Code Playgroud)

后来我尝试安装驱动程序。

这没有解决,所以我也在恢复模式下禁用了 csrutil。

csrutil disable
Run Code Online (Sandbox Code Playgroud)

我安装每个驱动程序的步骤

虽然 csrutil 被禁用。

  1. 删除旧驱动程序
  2. 安装新的

卸载驱动程序:

$ sudo su
$ find / | grep usbserial/Library/Extensions/usbserial.kext
...
/Library/Extensions/usbserial.kext/Contents
/Library/Extensions/usbserial.kext/Contents/_CodeSignature
/Library/Extensions/usbserial.kext/Contents/_CodeSignature/CodeResources
/Library/Extensions/usbserial.kext/Contents/Info.plist
/Library/Extensions/usbserial.kext/Contents/MacOS
/Library/Extensions/usbserial.kext/Contents/MacOS/usbserial
/Library/Extensions/usbserial.kext/Contents/Resources
/Library/Extensions/usbserial.kext/Contents/Resources/en.lproj
/Library/Extensions/usbserial.kext/Contents/Resources/en.lproj/InfoPlist.strings
...
$ rm -rf /Library/Extensions/usbserial.kext
$ find / | grep wch
...
/private/var/db/receipts/com.wch.ch34xinstall.mykextdir.pkg.bom
/private/var/db/receipts/com.wch.ch34xinstall.mykextdir.pkg.plist
...
$ rm -rf /private/var/db/receipts/com.wch.*
$ csrutil status
System Integrity Protection status: disabled. …
Run Code Online (Sandbox Code Playgroud)

macos driver kernel-extension

6
推荐指数
1
解决办法
4562
查看次数

命令行上的 MacOS 公证无法创建身份验证会话

无法验证您的应用程序。我们无法创建身份验证会话

获取状态时,命令行上的 MacOS 公证返回“不支持的 url”

xcrun altool --notarize-app --primary-bundle-id "com.xx" --username “xx@mac.com” --password "xxx" --asc-provider "xx" --file xxx.kext.zip
Run Code Online (Sandbox Code Playgroud)

上面的命令给了我以下错误,如果有人遇到类似的问题,请告诉我如何解决问题

altool[4753:1282542] *** Error: Unable to validate your application. We are unable to create an authentication session.
Run Code Online (Sandbox Code Playgroud)

macos xcode kernel-extension xcrun notarize

6
推荐指数
1
解决办法
3228
查看次数