Macos应用usb设备权限的问题

纯开发问题,对macos开发不熟悉,百度了一圈,实在没找到怎么解决。
问题是这样的,我用frida-core的库获取设备,在连上手机的情况下。用纯C写的控制台程序可以获取本地设备和usb设备,但是用oc写的macos桌面应用只可以获取到本地设备。我觉得可能是usb设备权限的问题,但是没解决。

代码如下,就是使用的提供的demo

    GError *error = NULL;
    frida_init();
    GMainLoop *loop = g_main_loop_new(NULL, TRUE);
    FridaDeviceManager *manager = frida_device_manager_new();
    FridaDeviceList *devices = frida_device_manager_enumerate_devices_sync(manager, NULL, &error);
    gint num_devices = frida_device_list_size(devices);
    for (int i = 0; i != num_devices; i++) {
        FridaDevice *device = frida_device_list_get(devices, i);
        g_print("[*] Found device: \"%s\"\n", frida_device_get_name(device));
        g_object_unref(device);
    }

使用c的结果如下

image

使用oc的桌面应用如下

image

代码都是一样的,用oc就少发现了一个设备。我在xcode工程的App sandbox添加了usb,但是依旧不能识别usb设备。所以请问一下有没有知道的,应该怎么加权限,还有就是哪里有文档,我在苹果官方的文档没有翻到。

文档似乎在这里 https://developer.apple.com/library/archive/documentation/DeviceDrivers/Conceptual/USBBook/USBDeviceInterfaces/USBDevInterfaces.html

解决了,把sandbox关掉就行了

成熟的开发者 学会了要自己打破惨案

关掉 sandbox 就可以了

当然在有 app sandbox 的情况下,加例外也是可以的

<?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>com.apple.security.temporary-exception.mach-lookup.global-name</key>
    <array>
      <string>com.apple.remoted</string>
    </array>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.files.user-selected.read-only</key>
    <true/>
    <key>com.apple.security.device.usb</key>
    <true/>
    <key>com.apple.security.temporary-exception.sbpl</key>
    <string>(begin
    (allow system-kext-query)
    (allow network-outbound (path &quot;/private/var/run/usbmuxd&quot;)))</string>
    <key>com.apple.security.network.client</key>
    <true/>
  </dict>
</plist>

如果还有问题,在 Console.app 里搜索 Kernel 和 sandbox 字样,看是什么拒绝访问了