nst / RuntimeBrowser

Objective-C Runtime Browser, for Mac OS X and iOS
3.57k stars 510 forks source link

iOS 13.2.3 crash when loading some frameworks #39

Open ElfSundae opened 4 years ago

ElfSundae commented 4 years ago
[INFO] GCDWebServer started on port 10000 and reachable at http://192.168.2.2:10000/
2019-12-03 10:34:26.770756+0800 OCRuntime[255:3744] Visit http://192.168.2.2:10000/ in your web browser
[INFO] GCDWebServer now reachable at http://Elf-Sundaes-iPhone.local:10000/
2019-12-03 10:34:35.318125+0800 OCRuntime[255:3903] -- [ERROR] The bundle “AudioUnit” couldn’t be loaded because its executable couldn’t be located.
2019-12-03 10:34:35.427906+0800 OCRuntime[255:3903] -- [ERROR] The bundle “CoreAudioTypes” couldn’t be loaded because its executable couldn’t be located.
2019-12-03 10:34:35.491113+0800 OCRuntime[255:3903] -- [ERROR] The bundle “DriverKit” couldn’t be loaded because its executable couldn’t be located.
2019-12-03 10:34:36.408821+0800 OCRuntime[255:3903] -- [ERROR] The bundle “Accessibility” couldn’t be loaded because its executable couldn’t be located.
2019-12-03 10:34:36.499668+0800 OCRuntime[255:3903] -- skip /System/Library/PrivateFrameworks/Accessibility.framework/Frameworks/AXSpringBoardServerInstance.framework, known to be a crasher on device
2019-12-03 10:34:37.240913+0800 OCRuntime[255:3903] [Common] Allowing SpringBoardUI.framework to load because SearchUI.framework is loaded. This will become a hard assert once <rdar://problem/29408996> is fixed.
2019-12-03 10:34:37.241006+0800 OCRuntime[255:3903] [Common] This process should not be linking or loading SpringBoardUI.framework
Assertion failed: (platformBinary), function SBStaticInitializer, file /BuildRoot/Library/Caches/com.apple.xbs/Sources/SpringBoardHome/SpringBoard-3956.25.1/StaticInitializer.m, line 39.
(lldb) 

I added frameworks that would crash to the "skipedFrameworks" array then run again, until "Load Add" could work. These frameworks are:

@"/System/Library/PrivateFrameworks/AppPredictionUI.framework",
@"/System/Library/PrivateFrameworks/AssistantSettingsSupport.framework",
@"/System/Library/PrivateFrameworks/CarPlaySupport.framework",
@"/System/Library/PrivateFrameworks/ControlCenterUI.framework",
@"/System/Library/PrivateFrameworks/CoverSheet.framework",
@"/System/Library/PrivateFrameworks/SearchUI.framework",
@"/System/Library/PrivateFrameworks/SearchUICardKitProviderSupport.framework",
@"/System/Library/PrivateFrameworks/SiriUIActivation.framework",
@"/System/Library/PrivateFrameworks/Spotlight.framework",
@"/System/Library/PrivateFrameworks/SpotlightUI.framework",
@"/System/Library/PrivateFrameworks/SpotlightUIInternal.framework",
@"/System/Library/PrivateFrameworks/SpringBoard.framework",
@"/System/Library/PrivateFrameworks/SpringBoardHome.framework",
@"/System/Library/PrivateFrameworks/SpringBoardUI.framework",
@"/System/Library/PrivateFrameworks/UserNotificationsUIKit.framework",
@"/System/Library/PrivateFrameworks/VoiceShortcutsUI.framework",
Lessica commented 4 years ago

But these private frameworks are useful and important for tweak developing... It would be better if there's another bypass to load these frameworks.

ElfSundae commented 4 years ago

These frameworks can be loaded on a jailbroken device. I have uploaded 13.3 headers https://github.com/ElfSundae/iOS-Runtime-Headers

Lessica commented 4 years ago

👍Solved: sign the binary with ldid -S and move the application to /Applications.

<?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>platform-application</key>
    <true/>
</dict>
</plist>