As best as I can tell, it’s just unreasonably paranoid — they do some very cool things with widgets that it seems like they were trying to protect (though those strategies are starting to leak out anyways)
There were some interesting things in the binary still. At one point I was trying to figure out why I was looking at code that looked like it was downloading a Windows .iso; turns out it was, and it was used for a network speed test widget!
If I ran the App Store : this would be enough evidence that I would heavily investigate all of their other apps for signs of illegal and immoral activity, also adding in static infinite loop detection on all app submissions
Very interesting article, I always wanted a low-level phone reverse-engineering read like that to understand it better.
Few questions for the author: do you think the most popular commercial tool (guardsquare if im not wrong) brings anything new to the table which prevents an easy disassembly like this? Was TopWidgets protected by something similar or was it rather a local effort?
I find your videos fascinating and I'm surprised that more people haven't checked them out or read your articles. I personally use Android so the videos are technically not applicable for me but I still get a lot of value out of learning how some of the low level debugging in iOS works.
No, but you can use Frida (which replaces an inline syscall with a JMP to a handler) but it quickly becomes complicated if the app verifies its own integrity at unpredictable points during runtime. When this happens hardware breakpoints are your friend, however the developer can still make your life hard by inlining all over the app, and then you quickly run out of hardware breakpoints.
I mostly use an old phone on 16.6. iOS 17/18 is harder; you can jailbreak that if you have an iPad 7th Gen (technically iPadOS, but whatever). I have a couple but prefer the iPhone since it's less clunky to lug around!
I've seen some rumors of that device not supporting iPadOS 19, so I'm not really sure what the plan is if that's true. Maybe everyone starts forking money over to Corellium.
I certainly like them by default, but I get that others don't - one thing I could do is have them paused by default if `prefers-reduced-motion` is on. Though I'm curious if you (or any other folks here) have this enabled.
(would have added this ages ago if I knew this existed; not a CSS expert, just seeing it now by checking if web has an equivalent of iOS' `UIAccessibility.isReduceMotionEnabled`. neat!)
Setting doesn't exist on my os, and I certainly would not approve of a setting that gives people license to do (imo) shitty things to the user experience just because there's an obscure setting somewhere.
It's your site, you can do what you want; it's my browser, I will close tabs that annoy me with extreme prejudice.
I could imagine _some_ arguments for it back when it was first introduced (first reference I can find to it is from 2004) — this was pre OS X Sandbox, let alone SIP. It makes sense that some OS X apps would want to prevent being debugged by other (potentially malicious) apps. Semi developer-hostile in my opinion, but I get it.
There were some interesting things in the binary still. At one point I was trying to figure out why I was looking at code that looked like it was downloading a Windows .iso; turns out it was, and it was used for a network speed test widget!