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.

ModuleDescription
apps/plumeimpactorGUI interface for the crates shown below, backend using wxWidgets (with a rust ffi wrapper, wxDragon).
apps/plumesignSimple CLI interface for signing, using clap.
crates/plume_coreHandles all api request used for communicating with Apple developer services, along with providing auth for Apple’s grandslam
crates/plume_gestaltWrapper for libMobileGestalt.dylib, used for obtaining your Mac’s UDID for Apple Silicon sideloading.
crates/plume_typesShared code between GUI and CLI, contains signing and modification logic, and helpers.
crates/plume_sharedShared 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.