supposed to work: iOS 2.0 through 11.3

If you have any issues with these builds, hold volume up while booting (if using an untethered jailbreak) or while running the jailbreak tool (if using a tethered jailbreak) to disable and then downgrade to a previous working version of Substrate.

Cydia Substrate 0.9.7011 and 0.9.7012 attempt to prevent Substrate from wedging while restarting amfid; 0.9.7012 also fixes an issue which wedged when running on older chipsets; and 0.9.7013 fixes an issue where some applications (such as PayPal) would crash when hooked by Substrate. (And 0.9.7020 adds MSHookMemory.)

Cydia Substrate 0.9.7010 (also available only via beta repository) resolved a race condition with amfid that would cause a device lockup under low-memory conditions reported by users on the unc0ver issue tracker. Note: I (kind of?) recommend rebooting after install of these newer updates, but I'm not sure that matters.

(Also: this new version makes changes for all devices on iOS 11, but has only been tested on unc0ver 2.1.0: I imagine it works on other versions of unc0ver, but I have no clue about anything else, particularly things that are not unc0ver. I also verified on an iOS 5.1.1 device that I didn't break 32-bit support, as I also fixed a corner case and improved something else unimportant that would affect all devices on all versions of iOS; seems to work fine.)

Cydia Substrate 0.9.7000 (available only via beta repository) has essentially been rewritten, from scratch, four times over. It was originally designed for use with an iOS 11 jailbreak that was to be released as part of Extender, but now it instead fully supports unc0ver by pwn20wnd and sbingner.

This version of Substrate has a centralized "hook cache" that solves the vnode exhaustion issue that has low key plagued Substrate since iOS 9. This new version can (and does) hook absolutely every process on the entire system (which was always the goal... some users might disagree).

While prior releases of Substrate were "supposed to work" on older versions of iOS, this build of Substrate has actually been tested on a stack of jailbroken devices running all of iOS versions 3.0, 4.3.1, 5.1.1, 6.1.3, 7.1.2, 8.0, 9.0.2, 10.1.1 (mach_portal), 11.1.2 (Extender), and 11.3.1 (unc0ver).

(I honestly don't know if anyone will bother to install this and am slightly confused as to what the goal of this release is, but a lot of people seem to be expecting it and I feel "on the hook" for a release... so let's see what happens with it?)

Cydia Substrate 0.9.6301 fixes a regression on iOS 6 (and maybe other versions) where it stopped injecting, as reported by rweichler :(.

Cydia Substrate 0.9.6300 enables Cycript to work in the way one would truly expect on iOS 9.3.

Cydia Substrate 0.9.6200, on iOS 9.2+, "mitigates" :/ an issue of storage on the root filesystem when using a "semi-untethered jailbreak" (so far my favorite term for jailbreaks via an app vector) by stashing the installation target of extensions. It also fixes a bug in function hooking on all versions (though it should rarely come up) and has some minor modifications for recent versions of iOS (which should not cause problems on older versions, but if that happens I want to know as all versions are still supported by this package). The "volume up to disable" feature has also been modified to work correctly after the device has booted, which means you can now disable Substrate on iOS 9.2+ by holding volume up while using the jailbreak app from Pangu.

Cydia Substrate 0.9.6000 has made massive internal changes to be compatible with the latest jailbreak for iOS 9 from Pangu.

0.9.6010 fixes the 32-bit armv7 slice, which was keeping extensions from loading into Cydia. (Note that, additionally, all 32-bit binaries, in particular extensions, must be recompiled using -Wl,-segalign,4000 for iOS 9 due to a change made by Apple. Extensions that have not been recompiled might "get lucky" and work, but they will usually either fail or even crash.)

0.9.6011 fixes an issue in 0.9.6xxx where it no longer worked on iOS versions before 5.0.

0.9.6100 blocks extensions on iOS 9 that are guaranteed to crash some key processes (such as Cydia), will inject into too many processes (due to a mismatched filter), or which will lead to subtle bugs (by invalidating the codesign of the target process). This new version also fixes some issues developers were seeing attempting to hook functions in particularly well-sandboxed processes, and adds support for the latest version of Cycript (which now runs Substrate as an injection vector).

0.9.6101 fixes an issue where Cycript could not inject into a 32-bit process. (This bug might have affected Substrate in some more general way? I am not yet sure about this.)

0.9.6110 fixes an issue where extension that are corrupt (often on purpose by the developer for obfuscation purposes :/) cause Substrate's attempt to detect whether the extension will cause the process to crash to actually just cause Substrate to crash :/. (In addition to all of the usual numerous improvements I make every time I cut a new release.)

Substrate version 0.9.5010 adds MSHookInterface, a new entry-level feature for developers; read more in Substrate's example walkthrough.

As of version 0.9.3997, you can now disable Substrate entirely by holding down Volume Up as the device boots.

This feature allows you to bypass horribly broken extensions (ones that prevent the device from starting up at all) that you may have installed so you can open Cydia and uninstall them.

To support devices that do not have a Volume Up button (the first-generation iPod touch), you can alternatively hold down the "Clicker" (not Volume Up) button on your headset or earphones.

(A special thanks goes to @oLunatiko for help implementing this feature!)

Mobile Safe Mode is a feature designed to protect you from faulty extensions (it is pretty awesome).

Support framework used by iPhone projects such as WinterBoard, Activator, and Five Icon Dock.

The general idea is that there are a number of reasons one might want to hook functionality into an existing application. In order to do this there are a few dangerous or complex steps. By centralizing the code for these we can hope to get them right.

As an example, Cydia Substrate provides a simple platform (one integrated with Cydia) for deploying code that gets inserted into graphical applications. When things fail, it is able to provide error handling and fallback support (think of a "Safe Mode").