• Stars
    star
    540
  • Rank 78,471 (Top 2 %)
  • Language
    Ruby
  • License
    MIT License
  • Created over 2 years ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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:

Tools

Libraries for Binary Analysis and Modification

See docs/Binary_Tooling

Tools for Binary Analysis and Modification

Guides and General

Devices

Kernel General

Protocols / Formats

Bootloader Related

Archive / Disk Formats

Databases / Serialization

Image, Sound and Other Resources

Software Update / Installers

Code and Signature Formats

Sandbox or 'Seatbelt'

Secure Enclave Processor

ARM / x86

Hypervisor / Virtualization

Baseband

Coprocessors

USB / Wired Protocols / Low Level Hardware

Network / Wireless / Transit

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

Jailbreaks

Jailbreak Tooling

Jailbreak Slides

X-Plat

Safety / 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.

A 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 <insert wiki here>

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

Creative Commons License{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](http://creativecommons.org/ licenses/by-sa/4.0/){: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.

More Repositories

1

iBoot-IDA

32/64 bit SecureROM/iBoot loader for IDA Pro. Also supports loading and decrypting encrypted .im4ps within IDA.
Python
61
star
2

smcutil

SMC utility for modifying and examining Apple's SMC payloads.
Ruby
37
star
3

demuxusb

A program and toolset to analyze iDevice USB sessions
C++
29
star
4

libapplefw

C Library for Apple Firmware (Amalgam)
C
26
star
5

homebrew-jailbreak

A collection of homebrew formula for the different thinking hacker
Ruby
22
star
6

efivalidate

Firmware validation of Apple T1 and prior Macs
Ruby
21
star
7

webmuxd

A browser based library for interacting with AppleMobileDevice over WebUSB
TypeScript
18
star
8

newosxbook-tools

The source of various tools from Jonathan Levin for the brew tap
C
18
star
9

yolo_dsc

A late bound, hope-for-the-best dyld shared cache extractor
C
16
star
10

libibackup

C
13
star
11

apple-diagnostics-format

Python library for handling Apple Wireless Diagnostics file formats
Python
12
star
12

das-iboot

Python
12
star
13

secure_emu

Unicorn Engine based running of SecureROM
Python
11
star
14

python-libimobiledevice

Python bindings for libimobiledevice
Python
11
star
15

kext-kmem

Simple Kernel Extension to read and write Kernel Memory
C++
11
star
16

symbol-server

Collection of Apple related symbols - from DWARF/dSYMs and hand generated
C
11
star
17

uarp

Apple's Universal Accessory Restore Protocol
9
star
18

apple-baseband

RE tooling kit for Apple modem baseband
Python
6
star
19

qemu-gadget-kext

A macOS Kernel Extension to expose QEMU gadget devices
C
5
star
20

mootool

MachO's Other Tooling
Ruby
5
star
21

wwdc23-tasks

Stuff to dig into when iOS 17 is released
4
star
22

go-webmuxd

WebUSB handler for Apple Mobile device usbmuxd protocol
Go
4
star
23

hacky-bot

This is our helpful if snarky bot
TypeScript
3
star
24

hack-different.github.io

Introduction, rules, community guide
Ruby
3
star
25

apple-format-tools

A collection of TCL parsing templates for Hex Fiend
3
star
26

apple-tools

A collection of Apple RE tooling
2
star
27

go-hack

Monorepo for Go code
1
star
28

webmuxd-example

WebUSB usbmuxd server component
TypeScript
1
star
29

action-auto-version

Sets a package version based on the number of git commits
1
star
30

device-ui

A repo to build prototypes of a `qemu` device front end
1
star
31

build-images

Docker images used for builders / CI / CD
Dockerfile
1
star
32

qemu-hexagon

C
1
star
33

nv_utils

Apple Non-Volatile Utilities
Objective-C++
1
star