All Projects → EthanArbuckle → Respringprogress

EthanArbuckle / Respringprogress

Licence: gpl-2.0
Adds a progress bar under the Apple logo during resprings that tracks SpringBoards launch progress

Labels

Projects that are alternatives of or similar to Respringprogress

Ignition
Runs the CarPlay UI directly on top of SpringBoard on an iOS device, no need for a car!
Stars: ✭ 270 (+980%)
Mutual labels:  logos
Browser Logos
🗂 High resolution web browser logos
Stars: ✭ 5,538 (+22052%)
Mutual labels:  logos
Svg Logos
SVG logos of Kazakhstani companies
Stars: ✭ 19 (-24%)
Mutual labels:  logos
Lookinloader
Lookin - iOS UI Debugging Tweak LookinLoader,Compatible with iOS 8~13
Stars: ✭ 357 (+1328%)
Mutual labels:  logos
Classdump Dyld
Class-dump any Mach-o file without extracting it from dyld_shared_cache
Stars: ✭ 455 (+1720%)
Mutual labels:  logos
Autopause
Some simple yet useful tweak
Stars: ✭ 5 (-80%)
Mutual labels:  logos
football-team-flags
Flags from national teams made with css 🏳
Stars: ✭ 19 (-24%)
Mutual labels:  logos
Cydelete
CyDelete
Stars: ✭ 22 (-12%)
Mutual labels:  logos
Logos
A huge collection of SVG logos
Stars: ✭ 5,344 (+21276%)
Mutual labels:  logos
Rigidchips
Stars: ✭ 18 (-28%)
Mutual labels:  logos
Ispy
A reverse engineering framework for iOS
Stars: ✭ 361 (+1344%)
Mutual labels:  logos
Cydia
🔥🔥🔥我的微信公众号: Cydia 🔥🔥🔥=> Cydia插件 Logos语言 开发Tweak.xm Cydia Substrate 注入dylib iOS逆向工程开发 越狱Jailbreak deb插件 - fishhook / Frida / iOSOpenDev / Cycript / MachOView / IDA / Hopper Disassembler / MonkeyDev / Class-dump / Theos / Reveal / Dumpdecryptd / FLEX / 汇编Assembly / CaptainHook / lldb/LLVM/XNU/Darwin/iOS Reverse
Stars: ✭ 407 (+1528%)
Mutual labels:  logos
Dkflexloader
Flipboard FLEX dylib loader
Stars: ✭ 6 (-76%)
Mutual labels:  logos
Devicon
Set of icons representing programming languages, designing & development tools
Stars: ✭ 4,536 (+18044%)
Mutual labels:  logos
Iosrelottery
@iOS应用逆向工程 抽奖插件
Stars: ✭ 19 (-24%)
Mutual labels:  logos
Font Logos
An icon font providing popular linux distro's logos
Stars: ✭ 256 (+924%)
Mutual labels:  logos
Taptheat
Hold the '@' key to quickly enter your email
Stars: ✭ 5 (-80%)
Mutual labels:  logos
Melody
Restore the iOS 9 Music app on iOS 10.
Stars: ✭ 25 (+0%)
Mutual labels:  logos
Quickprefs
Quickly access tweak prefs with Force Touch (Theos iOS tweak)
Stars: ✭ 22 (-12%)
Mutual labels:  logos
Swipyfolders
📱 Gestures for your folders! (Jailbreak)
Stars: ✭ 17 (-32%)
Mutual labels:  logos

The principle of this is, if we know roughly how many objects SpringBoard instantiates while it loads, we can keep count of every object created and compare it to the total number that would signify SpringBoard being "done".

To do this, we need to monitor every class in SpringBoard that gets created, and keep a tally of inits. We can use the objc runtime to pull a list of classes in SpringBoard, and swizzle the init method on each one of them to a new implementation. I also restrict it to classes starting with "SB", as springboard links a lot of other things that are unnecessary to what we're doing. Every SB* class's -init method is swizzled to an implementation that performs OSAtomicIncrement64 on a global tally, before calling the original init implementation and allowing the object to get created as normal. So as all these objects get created, they're nice enough to step up the overall -init count (and thread safe, using OSAtomic). On 9.0 on the iPhone 6s/6s+, this total number ends up being almost exactly 10^7. Three runs, one after another (9581247, 9926451, 9828801).

So, i'm assuming that SpringBoard is totally launched when we have 10 million inits called. Knowing this, we start up a separate thread that watches the init counter as it increases, and compares it to our "finished" count of 10^7. Something like ((100 / 10^7) * initCount) will give us the guessed progress of where springboard is at.

Now swizzling all these classes when springboard starts up is fairly slow, and increased my SB load time from about 1.8 seconds to 6.2+ seconds. We can cut that down by not swizzling every single class, and only doing every nth. The more classes you skip, the faster SB loads, but the less accurate the progress guess ends up being.

I've found that swizzling every 8th class seems to be pretty good. So skipping all those classes and only swizzling every 8th is going to obviously cut down the number of inits that get called... by a factor of 8 of course. So now we would guess the progress with ((100 / (10^7 / 8)) * initCount).

That gives us a result thats pretty close to numbers we were getting when swizzling every class, but now we're only taking about 2.5 seconds to fully load, way faster than the 6.2+.g

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].