Skip to content
0xjohnnydevPublic

About

Obsolete iOS jailbreak research using the now-patched TSS/Cryptex bug. Source shared for educational purposes. Not a new jailbreak release.

Resources

Stars

151 stars

Watchers

2 watching

Forks

Latest commit

 

History

87 Commits

Folders and files

Repository files navigation

CryptSn0w

This project is obsolete. Apple patched the TSS/Cryptex bug it relied on. The original signing and installation flow is no longer usable for new installs. The code is shared for educational purposes and to document the work.

CryptSn0w macOS GUI (historical screenshot)

CryptSn0w packaged an SBInject-based jailbreak as a device-personalized Cryptex: a disk image with an associated trust cache and an Apple signing ticket. The original installer obtained that ticket from Apple's signing service.

The project includes SpringBoard and Settings tweak injection through ElleKit, Sileo package management, PreferenceLoader, optional root SSH, and a macOS installer. The bootstrap also contains code to restore its services after a reboot.

How it worked

The Cryptex carried the bootstrap, Sileo, ElleKit, SSH, and a fixed set of loaders. Its trust cache listed the hashes of those binaries. That gave the project a trusted base, but it did not automatically trust every package installed later. Adding each new binary to the cache would have required updating and signing the cache whenever its contents changed.

CryptSn0w used JIT (just-in-time) execution permissions to load supported new code through that existing base. An already trusted worker, or an SBInject-managed process, first entered the required debugged state. The loader then adjusted dyld's signature checks and copied the payload's code into anonymous memory, making it executable after the copy. Dyld still handled loading and linking. This ran existing native machine code without adding its hash to the fixed trust cache.

The broker routed supported package executables and native install scripts through codex-exec-worker. SBInject applied the same approach inside SpringBoard and Settings, allowing ElleKit to load compatible tweak libraries. Installing a supported payload therefore did not require a new Apple-signed trust cache for that payload.

Some binaries still needed patching, rehashing, or ad-hoc signing to work with the loader. They also had to use the supported execution path; they did not become trusted system-wide. Compatibility depended on the process and OS build, and changing the fixed bootstrap or loaders still required rebuilding the installation. This all depended on the original Cryptex bootstrap, whose installation path is now obsolete.

See the worker and SBInject loader for the implementation.

macOS app

The SwiftUI app runs the same installer as the command line. It requires macOS 14 or newer and Swift 6.2 or newer to build:

make app
open dist/CryptSn0w.app

Keep the app in dist/ so it can find the repository, or select the repository with the app's folder chooser. Retained root SSH access is off by default; the temporary SSH stage is always part of installation. The app is subject to the same TSS/Cryptex limitation described above. See MacApp/README.md for its build and UI details.

Source layout

Path Contents
Dopamine-CryptexBootstrap/setup.sh Dependency setup and build/install entry point
Dopamine-CryptexBootstrap/CryptexBootstrap/ Cryptex build, deployment, and runtime code
Dopamine-CryptexBootstrap/CryptexBootstrap/SBInject/ SpringBoard and Settings injection
MacApp/ SwiftUI installer and app packaging

The main runtime log was /var/tmp/codex-dopamine-cryptex-bootstrap.log. App launcher and TrollStore registration logs were /var/mobile/.sbinject-app-launcher.log and /var/mobile/.sbinject-trollstore-registration.log.

Redactions

TSS request construction, personalization, and related installation details are intentionally omitted. The files retain placeholders for educational reference.

Some details are also omitted to avoid prematurely disclosing information relevant to other potential TSS issues. This does not mean we have an unreleased untethered jailbreak or a working exploit that we are withholding.

Credits

Maintainers and project contributions

  • 0xjohnny — project maintainer; the original root SSH proof of concept, Cryptex bootstrap, build and signing workflow, Sileo bootstrap and package handling, reboot recovery, and later iOS compatibility and runtime fixes.
  • GenericCoding — project maintainer; SBInject and Sileo integration, Settings/PreferenceLoader integration, the two-stage installer, native macOS app, TrollStore/app-launcher integration, and runtime fixes.
  • Varik Matevosyan / var77 — project maintainer; device-discovery fixes in the CLI and macOS app so a phone connected over both USB and Wi-Fi appears as one device, with USB preferred.
  • hrtowii — the original SBInject proof of concept that this port builds on.

Other repository collaborators include jakeashacks, and forcequitOS.

Upstream projects

The copied PreferenceLoader helpers retain their source attribution and license.

About

Obsolete iOS jailbreak research using the now-patched TSS/Cryptex bug. Source shared for educational purposes. Not a new jailbreak release.

Resources

Stars

151 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages