A collection of reverse engineered Apple things, as well as a machine-readable database of Apple hardware
Apple Data Formats and Knowledge
A collection of reverse engineered Apple formats, protocols, or other interesting bits.
Join us on Discord - Discord Rules
Repo inspired by Papers we Love
Our Tooling Repos
Our Homebrew Tap
Install our tap with brew tap hack-different/homebrew-jailbreak
Information about the maintaining of that tap can be found at homebrew-jailbreak
Contributing and a warning
Linking your Discord and GitHub
We want this collection to be around for new jailbreakers and hobbyists for years to come, so we must say: this collection accepts (with gratitude) pull-requests that improve it, but under no circumstances will a PR based on AppleInternal, or any other copyrighted works protected by the DMCA be accepted. If you need help determining this, tag the PR with license help, join the Discord server, and ask a #Legit or higher role for help.
Violation of the DMCA or Copyright law is the responsibility of the submitter.
Primary Data Source
We attempt to derive from machine sources and produce machine readable files (YAML) in this repo under _data. For information about creating and extending data format see Data Format Guidance.
Updates and additions there should automatically be reflected in the documents
hack-different/apple-knowledge/_data
Another authoritative source of information is the open source code released by Apple themselves at one of the following locations:
- Open Source at Apple Wesbite
- Apple's GitHub profile
- apple-oss-distributions's Github profile
- Apple Gifts
Tools
Libraries for Binary Analysis and Modification
Tools for Binary Analysis and Modification
- mootool - FOSS Ruby Mach-O Tool (aims to replicate jtool2 feature set)
- ktool - FOSS Python Mach-O Tool
checkra1n/toolchainalephsecurity/xnu-qemu-arm64
alephsecurity/xnu-qemu-arm64-tools
* Build iOS on QEMU
* onethawt/idaplugins-list
* cellebrite-srl/ida_kernelcache
* cellebrite-srl/PacExplorer
* cellebrite-srl/FunctionInliner
* hack-different/iBoot-IDA
* matteyeux/ida-iboot-loader
* haiyuidesu/sephelper
* Cisco-Talos/GhIDA
* avast/retdec-idaplugin
* cxnder/bn-dyldsharedcache
* jonpalmisc/ObjectiveNinja
* EliseZeroTwo/iBoot-Binja-Loader
* matteyeux/seprom-loader
* skr0x1c0/binja_kc
* AllsafeCyberSecurity/awesome-ghidra
* 0x36/ghidra_kernelcache
* QEMU Apple Branch
* geohot/qira
Guides and General
Proteas/apple-cve- kpwn / qwertyoruiop's Wiki
- kpwn / qwertyoruiop's Papers
- About Apple Prototype and CPFM
- OWASP: iOS Tampering and Reverse Engineering
- Kernel Debug Kit
- T2 Dev Setup
- Apple 4CC
bytepack/IntroToiOSReverseEngineering- Remote Attack Surface
- Lakr233's Research
Devices
- Device List
- T2
t8012 / Apple T2 / bridgeOS
* Duo Labs: Apple T2 XPC
* t2linux/apple-bce-drv
- Wi-Fi / Bluetooth
seemoo-lab/frankenstein
* seemoo-lab/internalblue
- The iPhone Wiki
- SMC (System Management Controller) for pre-T2
acidanthera/VirtualSMC
* t8012/smcutil - Create SMC binaries from update payloads
Kernel General
* Apple's XNU Tarballs- Mach and the Mach Interface Generator by nemo
- Apple IPC by Ian Beer
acidanthera/Liluosy/AMFIExemption- Siguza's Research on KTRR
- Tick Tock by xerub
- Casa de PPL by Levin
- KTRW by Brandon Azad
- Qwertyoruiopz Attacking XNU: Part 1
- Qwertyoruiopz Attacking XNU: Part 2
- Kernel Heap by Stefan Esser
- Levin's Who needs
taskfor_pid()anyway... - Apple Official Documentation
Protocols / Formats
Bootloader Related
- EFI
EFI
* NVRAM unlock
* apple/darwin-xnu
FactoryFirmware_Payloads- iBoot
OpenJailbreak/iBootRE
OS iBoot
- SecureROM
- TXM - Trusted eXecutation Monitor
Archive / Disk Formats
- APFS - Apple Filesystem
sgan81/apfs-fuse
* libyal/libfsapfs
* cugu/apfs.ksy
* bxl1989 APFS Remount
- LwVM Lightweight Volume Manager
- NeXT / Apple "Bill of Materials" /
pkg/bom
iineva/bom
pbzx- Apple Disk Image -
dmg
jhermsmeier/node-udif
* nlitsme/encrypteddmg
* darlinghq/darling-dmg
- Signed System Volumes (SSV) /
root_hash
Databases / Serialization
- Property Lists
libimobiledevice/libplist
- iTunes database
jeanthom/libitlp
* josephw/titl
* - Apple iDevice Backup Format
rickmark/libibackup
* horrorho/InflatableDonkey
Image, Sound and Other Resources
* Using a Custom Startup Sound on a Power Macintosh G3 Blue and White- AirPlay2
mikebrady/shareport-sync
Software Update / Installers
Code and Signature Formats
- Mach-O File Types - Mach-O / Signing / Entitlements
sbingner/ldid - Codesign tool
* ProcursusTeam/ldid - Alternative to sbingner/ldid with
some updates for iOS 15 and general fixes
* m4b Mach Binaries
* J's Entitlements Database
* Levin's Code Signing
* Apple CTF / Compact Type Format
- img4 - Apple signed images, version 4
xerub/img4lib
* m1stadev/PyIMG4 - A Python library/CLI tool for parsing IMG4
* tihmstar/img4tool
* h3adshotzz/img4helper
- TrustCache - Pre-authorized Binary Hashes
t8012/go-aapl-integrity
* CRKatri/trustcache
- EALF -
eficheckbaselines
t8012/go-aapl-integrity
* t8012/efivalidate
* EALF
- ChunkList - Used to verify macOS Recovery / Internet Recovery
t8012/go-aapl-integrity
dyldand DSC (dyld Shared Cache)
rickmark/yolo_dsc - Used as last resort and depend on Xcode
* arandomdev/DyldExtractor - Fixes up linking
* dyldsharedcache_util.cpp
- iBoot LocalPolicy, RemotePolicy and BAA signing
M1Boot_Policy
- Rosetta2
- Swift
Sandbox or 'Seatbelt'
- Levin's - The Apple Sandbox
- Apple Sandbox Guide v1.0
- OWASP - Reversing the Apple Sandbox
- iBSparkles Breaking Entitlements
- stek29: Shenanigans, Shenanigans!
- argp vs com.apple.security.sandbox
malus-security/sandblaster
Secure Enclave Processor
- SEP_memmap
- sep.yaml
- SEPROM
nyuszika7h/sepfinderjusttryingthingsout/sepsplit-rs- Demystifying the Secure Enclave Processor
mwpcheung/AppleSEPFirmware
- SEPOS: A Guided Tour
- Attack Secure Boot of SEP - blackbird
- iPhone Data Protection in Depth
- Overcoming iPhone Data Protection
ARM / x86
- ARM General
- Apple CPUs
- Compilers
- ARM Mitigations
Hypervisor / Virtualization
- Apple Hypervisor
Baseband
baseband.yamlin Data Files- Qualcomm
hack-different/apple-baseband
* Hexagon DSP
* Hexagon SDK
* Hexagon QEMU
* Binary Ninja Hexagon
* Hexag00n
* IDA Hexagon
* idp_heaxagon
Coprocessors
- hollance/neural-engine
- RTKit - "Realtime" Kit
USB / Wired Protocols / Low Level Hardware
- Basically all iDevice / iTunes
libimobiledevice/libimobiledevice
* hack-different/python-libimobiledevice
* doronz88/pymobiledevice3
- DFU / Recovery
libimoibledevice/libirecovery
* Technical analysis of the checkm8 exploit
- usbmuxd - USB transport for iDevices
libimobiledevice/usbmuxd
* t8012/demuxusb
com.apple.restored- iDevice Restore Protocol
libimobiledevice/idevicerestore
- UTDM - USB Target Disk Mode
rickmark/apple_utdm
- USB-C Power Delivery - Vendor Defined Messages
rickmark/macvdmtool
- Lightning
- NVMe / NAND / PCIe
Network / Wireless / Transit
- Apple Wi-Fi Password Sharing
seemoo-lab/openwifipass
- AWDL - Apple Wireless Distribution Link
- Bluetooth Bonjour (Service Discovery)
- iCloud
- Apple Watch Pairing
com.apple.terminusd- Magic Pairing: Securing Bluetooth Peripherals
- ATC - Air Traffic Control - iTunes Wi-Fi Sync
- RemoteXPC
- macOS Internet Recovery
rickmark/applenet_recovery
* Internet Recovery
- iCloud Keychain (Umbrella for multiple formats)
System Configuration and State
- FDR - Factory Data Restore
- SysCfg - System Configuration - Serial Number and other Device Info
- APTicket - The root of an authorized version set
Diagnostic Protocols
- AWDD - Apple Wireless Diagnostics (misnomer, more than wireless, system trace)
rickmark/awdd_decode
- Mojo Serial
- Apple "tailspin"
- Apple
tracev3Unified Logging
ydkhatri/UnifiedLogReader
* dtformats
- XHC20 USB Capture
Jailbreaks
* checkra1n 1337- limera1n
- OpenJailbreak/greenpois0n
- 0x7ff/gaster
- axi0mX/ipwndfu
- dora2-iOS/ipwnder_lite
- LinusHenze/Fugu
- unc0ver
- Taurine
- Odyssey
- Chimera
- palera1n
- rootlessJB writeup
- evasi0n writeup by geohot
- Fugu14 writeup
- TaIG
Jailbreak Tooling
- Chronic-Dev/syringe
- ProcursusTeam/Procursus
- comex/substitute
- sbingner/substitute
- Cydia
- ElleKit
- Zebra
- Sileo
Jailbreak Slides
X-Plat
* iphonelinuxSafety / Protection
CREDITS
Hack Different - Apple Knowledge is a product of the entire community and belongs to the community. It is facilitated by the volunteer work of the Hack Different moderation team.
If you have issue with the design or workflow of this repository, blame me (rickmark) as I setup and configured most of it. (it me). If you have feedback, join the #apple-knowledge channel of the discord server.
Portions of data and knowledge come from TheiPhoneWiki, libimobiledevice's website, and checkra1n's website, as well as the individuals who brought you those projects (and many more!)
Special mention to Jonathan Levin and Amit Singh for taking the time to publish books on these topics.
OS Internals - User Mode by Levin OS Internals - Kernel Mode by Levin OS Internals - Security by LevinA list of all projects and their contributors is at CREDITS and is updated by a script. If there are persons not updated due to limitations, please PR the CREDITS page and call them out.
Setting up overcommit, the linters, and the build
Main article is in BUILD
To keep the repo, docs, and data tidy, we use a tool called overcommit` to connect up the git hooks to a set of quality checks. The fastest way to get setup is to run the following to make sure you have all the tools:
brew install hunspell
gem install overcommit bundler
bundle install
overcommit --install
Why not \
Wiki's best serve prose, and part of the goal here is to leverage machine readable and ingestable information with human augmentation wherever possible.
As of 2022, GitHub has 56 million users. That means that there are 56 million people who are able to contribute directly to this repo via a fork and PR, in opposition to wiki's which have a relatively small number of potential editors. The PR process also allows for modifications to be reviewed, commented and debated before inclusion.
License
The contents of this repo are dual-licensed:
Code and data licensed under the MIT license
Documents also licensed under the CC-BY-SA
{style="border-width:0"} {rel=license} Apple Knowledge{:xmlns:dct="http://purl.org/dc/terms/", :property="dct:title"} by Hack Different{:xmlns:cc="http://creativecommons.org/ns#", :property="cc:attributionName", :rel="cc:attributionURL"} is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License{:rel="license"}
Dedication
Here’s to the crazy ones, the misfits, the rebels, the troublemakers>
the round pegs in the square holes…>
the ones who see things differently — they’re not fond of rules…>
You can quote them, disagree with them, glorify or vilify them, but the only thing you can’t do is ignore them because
they change things…>
They push the human race forward, and while some may see them as the crazy ones,>
we see genius,>
because the ones who are crazy enough to think that they can change the world,>
are the ones who do.>
— Steve Jobs, 1997
Also dedicated to the volunteer work of those who use this for good, and deny the shadow to those who seek to harm.