Contributing
Guide to contributing to Impactor.
Rules
- No usage of any exploits of any kind.
- No contributions related to retrieving any signing certificates owned by companies.
- Modifying any hardcoded links should be discussed before changing.
- If you’re planning on making a large contribution, please make an issue beforehand.
- Your contributions should be licensed appropriately.
- Typo contributions are okay, just make sure they are appropriate.
- Code cleaning contributions are okay.
Structure
The project is seperated in multiple modules, all serve single or multiple uses depending on their importance.
| Module | Description |
|---|---|
apps/plumeimpactor | GUI interface for the crates shown below, backend using wxWidgets (with a rust ffi wrapper, wxDragon). |
apps/plumesign | Simple CLI interface for signing, using clap. |
crates/plume_core | Handles all api request used for communicating with Apple developer services, along with providing auth for Apple’s grandslam |
crates/plume_gestalt | Wrapper for libMobileGestalt.dylib, used for obtaining your Mac’s UDID for Apple Silicon sideloading. |
crates/plume_types | Shared code between GUI and CLI, contains signing and modification logic, and helpers. |
crates/plume_shared | Shared code between GUI and CLI, contains keychain functionality and shared datapaths. |
Building
Head over to the Guide to compiling Impactor from scratch.
Making a pull request
- Make sure your contributions stay isolated in their own branch, and not
main. - When contributing don’t be afraid of any reviewers requesting changes or judging how you wrote something, it’s all to keep the project clean and tidy.