iOS11 JB debugserver 无法从远程 gdb 进程获得连接

iOS11 JB debugserver Failed to get connection from a remote gdb process

所以有iOS11没有substrate/cydia的越狱。 现在我想 运行 在 jb 设备之后调试服务器。

我认为我已经签署了足够的权利:

-bash-3.2# jtool --ent debugserver 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>platform-application</key>
        <true/>
        <key>com.apple.backboardd.debugapplications</key>
        <true/>
        <key>com.apple.backboardd.launchapplications</key>
        <true/>
        <key>com.apple.diagnosticd.diagnostic</key>
        <true/>
        <key>com.apple.frontboard.debugapplications</key>
        <true/>
        <key>com.apple.frontboard.launchapplications</key>
        <true/>
        <key>com.apple.springboard.debugapplications</key>
        <true/>
        <key>com.apple.springboard.launchapplications</key>
        <true/>
        <key>com.apple.security.network.client</key>
        <true/>
        <key>com.apple.security.network.server</key>
        <true/>
        <key>run-unsigned-code</key>
        <true/>
        <key>get-task-allow</key>
        <true/>
        <key>task_for_pid-allow</key>
        <true/>
        <key>com.apple.system-task-ports</key>
        <true/>
    </dict>
</plist>

但是当尝试 debugserver *:1234 -a UnityExample 时,它总是显示

Attaching to process UnityExample...
Listening to port 1234 for a connection from *...
Failed to get connection from a remote gdb process.

如果我把ip改成iPhone IP,比如debugserver 192.168.1.157:1234 -a UnityExample,其实可以等:

Attaching to process UnityExample...
Listening to port 1234 for a connection from 192.168.1.157...

但显然,它只允许来自设备的连接,因此使用 mac 的 lldb 将不起作用。

我检查了内核日志,它打印:

Dec 27 10:21:54 iPhone1111 debugserver[564] <Notice>: 1 +0.000000 sec [0234/0303]: ::listen or ::bind failed err = 0x00000000

我错过了什么?谢谢。

我也是这样。

我通过以下方式解决这个问题:

  • 正在使用 USB
  • 将设备连接到 mac
  • 例如使用 usbmuxd 将 mac 上的本地端口 1234 转发到远程 设备上 1234
  • 然后 运行 调试服务器 localhost:1234 -a pid
  • 在 lldb 中:process connect connect://localhost:1234

这应该有效。不幸的是,我只能调试自己的应用程序。例如,调试 Chrome.app 启动良好并且只要我处于初始暂停状态就可以正常工作,但是在我恢复它的那一刻失败并显示 EXC_BAD_ACCESS

在您的越狱设备上,ssh 进入设备并:

/Developer/usr/bin/debugserver 127.0.0.1:6666 -a 1393

我在使用 *:6666

时遇到了与您报告的相同的错误

你试过这篇文章了吗:

https://kov4l3nko.github.io/blog/2016-04-27-debugging-ios-binaries-with-lldb/

它解释了通过 USB 连接到越狱的 iOS 设备、将文件发送到设备、ssh 到设备以及设置调试器 (lldb)。

删除调试服务器文件 com.apple.security.network.server com.apple.security.network.client 安全带配置文件 这三个设置,然后重新签DebugServer。