Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/checkra1n/pongoos
pongoOS
https://github.com/checkra1n/pongoos
bootloader checkra1n ios
Last synced: 5 days ago
JSON representation
pongoOS
- Host: GitHub
- URL: https://github.com/checkra1n/pongoos
- Owner: checkra1n
- License: other
- Created: 2020-02-05T20:14:32.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-12-17T03:32:48.000Z (7 days ago)
- Last Synced: 2024-12-17T04:29:06.389Z (6 days ago)
- Topics: bootloader, checkra1n, ios
- Language: C
- Homepage: https://checkra.in
- Size: 1.69 MB
- Stars: 2,516
- Watchers: 266
- Forks: 414
- Open Issues: 46
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# pongoOS
A pre-boot execution environment for Apple boards built on top of checkra1n.
## Building on macOS
- Install Xcode + command-line utilities
- Run `make all`## Building on Linux
- Install clang (if in doubt, from [apt.llvm.org](https://apt.llvm.org))
- Install `ld64` and cctools' `strip`.
- On Debian/Ubuntu these can be installed from the checkra1n repo:
```
echo 'deb https://assets.checkra.in/debian /' | sudo tee /etc/apt/sources.list.d/checkra1n.list
sudo apt-key adv --fetch-keys https://assets.checkra.in/debian/archive.key
sudo apt-get update
sudo apt-get install -y ld64 cctools-strip
```
- On other Linux flavours you'll likely have to build them yourself. Maybe [this repo](https://github.com/Siguza/ld64) will help you.
- Run `make all`If `clang`, `ld64` or `cctools-strip` don't have their default names/paths, you'll want to change their invocation. For reference, the default variables are equivalent to:
EMBEDDED_CC=clang EMBEDDED_LDFLAGS=-fuse-ld=/usr/bin/ld64 STRIP=cctools-strip make all
## Build artifacts
The Makefile will create four binaries in `build/`:
- `Pongo` - A Mach-O of the main PongoOS
- `Pongo.bin` - Same as the above, but as a bare metal binary that can be jumped to
- `checkra1n-kpf-pongo` - The checkra1n kernel patchfinder, as a Pongo module (Mach-O/kext)
- `PongoConsolidated.bin` - PongoOS and the KPF merged into a single binary## Usage
checkra1n -k Pongo.bin # Boots to Pongo shell, KPF not available
checkra1n -k PongoConsolidated.bin # Auto-runs KPF and boots to XNU
checkra1n -k PongoConsolidated.bin -p # Loads KPF, but boots to Pongo shell## Contributions
By submitting a pull request, you agree to license your contributions under the [MIT License](https://github.com/checkra1n/pongoOS/blob/master/LICENSE.md) and you certify that you have the right to do so.
If you want to import third-party code that cannot be licensed as such, that shall be noted prominently for us to evaluate accordingly.## Structure
- The core PongoOS and drivers are in `src/`.
- Build-time helper tools are in `tools/`.
- The stdlib used by PongoOS (Newlib) is in `aarch64-none-darwin`.
- This includes a custom patch for Newlib to work with the Darwin ABI.
- An example module exists in `example/`.
- Scripts to communicate with the PongoOS shell are in `scripts/`.
- This includes `pongoterm`, an interactive shell client for macOS.
- The checkra1n kernel patchfinder (KPF) is in `checkra1n/kpf`.
- This currently includes the SEP exploit, though that is to be moved into mainline PongoOS in the future.
- A userland version of the KPF can be built from `checkra1n/kpf-test` (can only be run on arm64).