fix414: run/debug on ios13 device
10 Oct 2019 | fix ios13 libmobiledeviceHistory: errors when deploying to ios13 #414
Fix: PR416
Root case
libmobiledevice when locking services has to perform SSL handshake if required.
in iOS13 debugerserver started requiring this as well by including EnableServiceSSL
in response:
<?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>EnableServiceSSL</key>
<true/>
<key>Port</key>
<integer>49745</integer>
<key>Request</key>
<string>StartService</string>
<key>Service</key>
<string>com.apple.debugserver</string>
</dict>
The weird thing is that after SSL handshake debug server service switches back to plain text communication over same underlayer socket. There was a try-fix in libmobiledevice to close SSL connection but it didn’t work.
Root case of it is that it was trying close SSL connection by calling SSL_shutdown
which sends close_notify shutdown to underlaying socket. But debugserver expects clear text GDP protocol communication and close_notify
aren’t expected which causes gdp protocol error.
This issue was also discussed on libimobiledevice
repo: issue789
The fix
It is enough just abandon SSL connection without using SSL_shutdown
and just free all related resources. Corresponding fix was delivered to libimobiledevice
as PR860, also PR859 was opened to deliver required TIMEOUT error code.
Meanwhile these contributions might not be included in master of libimobiledevice
same fixes were delivered to MobiVM in form of patches and included in PR416
Other notes
Beside the fix itself PR416 delivers following changes:
- updated to recent master of
libimobiledevice
- utilized
debugserver api
instead of service/device communication as it is already part oflibimobiledevice
and any fixes there will be automaticaly adopted; libimobiledevice
bindings were refreshed;- Method that finds Developer Image to mount was updated to allow using not exact one but matching major version (e.g. to allow mount ios13.0 image on ios13.1 device)
Comments