2017-05-08 140 views
0

既不调用init,也不调用start。我在每个开头都放置了“PE_enter_debugger”,但测试机器不属于调试器。内核扩展加载但不运行

我可以使用kextutil或kextload加载我的内核扩展,并在kextstat中显示一段时间,但随后消失。我认为内核的一部分将其卸载。

$ kextstat | grep MY 
155 0 0xffffff7f82940000 0x2000  0x2000  com.mydomain.MY2000 (1) 420AB8E0-E204-3992-90D8-A55A488448E4 <133 4 3> 

我可以使用kextunload来卸载它。如果我第二次使用kextunload,它会抱怨找不到内核扩展。

kext中的每个文件和目录都由具有组轮的root拥有。

kextutil -tn没有发现任何问题。

我禁用了系统完整性保护,并启用了调试模式,因此我可以使用两台机器调试器。我有另外两个调用PE_enter_debugger()的内核扩展,它们工作。

MY2000是一款复合USB设备。这最终将成为MY2000四个接口中三个的驱动器。第四个界面是一个具有Windows驱动程序安装程序的小型存储卷。

在我的Info.plist中,我尝试了三种不同的IOProvider类:USBHostDevice,USBHostInterface和AppleUSBHostCompositeDevice。

(苹果改变它的一些类的名字在埃尔卡皮坦我认为,以前他们是USBDevice和的UsbInterface。)

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>CFBundleDevelopmentRegion</key> 
    <string>en</string> 
    <key>CFBundleExecutable</key> 
    <string>$(EXECUTABLE_NAME)</string> 
    <key>CFBundleIdentifier</key> 
    <string>com.mydomain.MY2000</string> 
    <key>CFBundleInfoDictionaryVersion</key> 
    <string>6.0</string> 
    <key>CFBundleName</key> 
    <string>$(PRODUCT_NAME)</string> 
    <key>CFBundlePackageType</key> 
    <string>KEXT</string> 
    <key>CFBundleShortVersionString</key> 
    <string>1.0</string> 
    <key>CFBundleVersion</key> 
    <string>1</string> 
    <key>IOKitPersonalities</key> 
    <dict> 
     <key>MY2000</key> 
     <dict> 
      <key>IOKitDebug</key> 
      <integer>65535</integer> 
      <key>IOClass</key> 
      <string>com_mydomain_MY2000</string> 
      <key>CFBundleIdentifier</key> 
      <string>com.mydomain.MY2000</string> 
      <key>IOProviderClass</key> 
      <string>AppleUSBHostCompositeDevice</string> 
      <key>IOMatchCategory</key> 
      <string>com_mydomain_MY2000</string> 
      <key>idVendor</key> 
      <string>0x1234</string> 
      <key>idProduct</key> 
      <string>0x2000</string> 
      <key>bInterfaceClass</key> 
      <string>0x10</string> 
      <key>bInterfaceSubclass</key> 
      <string>0x0</string> 
      <key>bInterfaceProtocol</key> 
      <string>0x0</string> 
     </dict> 
    </dict> 
    <key>NSHumanReadableCopyright</key> 
    <string>Copyright © 2017 My Company. All rights reserved.</string> 
    <key>OSBundleLibraries</key> 
    <dict> 
     <key>com.doequalsglory.driver.IOProxyFramebuffer</key> 
     <string>1.0.0d1</string> 
     <key>com.apple.kpi.iokit</key> 
     <string>16.5</string> 
     <key>com.apple.kpi.libkern</key> 
     <string>16.5</string> 
    </dict> 
</dict> 
</plist> 

感谢您的帮助,您可以给我。

回答

1

Info.plist中有:

 <key>idVendor</key> 
     <string>0x1234</string> 
     <key>idProduct</key> 
     <string>0x2000</string> 

“字符串” 应为 “整数”

 <key>idVendor</key> 
     <integer>1234</integer> 
     <key>idProduct</key> 
     <integer>29193</integer> 

在属性列表编辑,更改默认字符串类型设置为数字。

FACEPALM。

我不应该喝酒和编码。

相关问题