TL;DR:
Trying to determine whether it's possible to inject tweaks into Apple's system apps on jailbroken A12+ devices with Dopamine. They keep crashing on my iPhone 12 on iOS 16.1.2 and I'm investigating the root cause (arm64e arch of A14? iOS 16 specifically? Code-signing issue? "Protected" com.apple.* bundle ID?)
My goal is to use the Reveal and Lookin desktop apps on macOS to inspect the internal view hierarchy of Apple's iOS system apps like Apple Music, Reminders, Mail, etc.
There are several "loader" tweaks on GitHub that start the Reveal/Lookin server binary on the iOS device and inject it into the currently active app.
They work without issue on my iPad 7 on iOS 18.3 with palera1n: I am able to inpect 3rd-party apps and Apple's system apps.
However, when trying the same setup on an iPhone 12 on iOS 16.1.2 with Dopamine, Apple's system apps either crash immediately or are simply not detected by Reveal/Lookin. I've debugged multiple issues along the way but have now hit a wall:
- First error I encountered was:
'/var/jb/Library/Application Support/RevealLoader/RevealServer' (mach-o file, but is an incompatible architecture (have 'arm64', need 'arm64e'). - The last version of Reveal that included a server binary with an
arm64eslice was v26, released on May 19, 2020. It's old but I tried using it anyway but got acode signature invaliderror. - I attempted to bypass/ad-hoc sign with
ldid -S <binary>andcodesign -f -s - <binary>but still got the same error. - If I remove the signature with
ldid -r <binary>, I get an error saying the binary must at least be ad-hoc signed. - Can't do anything about Reveal since it's closed source, but Lookin is open source and I managed to find an
arm64ebinary in theSource code.ziprelease of this repo. - The binary in the zip is unsigned so we need to run
ldid -S <binary>orcodesign -f -s - <binary>and now it works! Almost. As I said above, it works perfectly on my iPad 7 on iOS 18 on any apps including Apple's apps. On the iPhone 12 on iOS 16 though, it works on 3rd-party apps, but Apple's apps simply crash. I attached a gif and some logs/explanation in this issue.
If anyone wants to try: I wrote install instructions in the README of this RevealLoader repo, but it's basically the same for Lookin (LookinRootless, LookinLoader, LookinLoader2).
Another workaround I tried is injecting the .framework or .dylib into the app:
- Using TrollFools to inject it in-place from the iPhone itself.
- Exporting the IPA, injecting the framework with Sideloadly, and reinstalling the new IPA. (requires a new bundle ID, as
com.apple.*seems "protected". I get the errorAttempted to install a deletable system app with incorrect install type.)
But same here, both options work fine with 3rd party apps but not with Apple's system apps, they usually crash at startup or they work normally but Reveal/Lookin don't detect anything.