When the iPhone 3GS was initially released, Apple did not have enough time to fix the 0x24000 Segment Overflow in the S5L8920. However, in order to flash an exploited LLB and jailbreak the iPhone 3GS, one of the following needs to be done:

Contents

ECID

Apple added a new tag to the IMG3 File Format called ECID. The ECID is unique to each phone, and its signature is being checked. With this method, Apple attempts to block downgrades once newer firmware becomes available, unless you have a dump of your old firmware's unique IMG3 or signed certificate. Therefore, iBoot exploits won't be so useful for tethered jailbreaks, because such exploits will be closed in new firmwares. [1].

The issue with this is that, even with the 0x24000 Segment Overflow still in bootrom, an iBoot exploit is still needed to actually flash the exploited LLB. Apple uses this ECID stuff to block downgrades, and a new iBoot exploit is needed whenever they fix the last, so that the 0x24000 Segment Overflow can be applied. This is because Apple chooses to not let you upload an older, exploitable iBEC/iBoot/iBSS to the device (unless it is signed with your ECID).

There are methods to help keep your downgrading ability, though.

If it was cached prior to 3.1's release, 3GS owners were able save a file which contains the signature of the 3.0 iBSS containing their ECID, using the purplera1n website. A tool has not been created to incorporate this file into a fully signed iBSS, however.

Saurik's servers are actively caching the necessary files. Instructions to use the servers are included.

The SHSH associated with an ECID can be also saved by running TinyUmbrella. TinyUmbrella allows the user to restore to whatever version is associated with that SHSH file permanently. This is based on the aforementioned service Saurik provides remotely from his server(s).