Skip to content

Feature rich iOS/tvOS sideloading application written in Rust. Formerly known as PlumeImpactor.

License

Notifications You must be signed in to change notification settings

khcrysalis/Impactor

Repository files navigation

Impactor

GitHub Release GitHub Downloads (all assets, all releases) GitHub License Sponsor Me

Open-source, cross-platform, and feature rich iOS sideloading application. Supporting macOS, Linux1, and Windows2.

Demo of app

Features

  • User friendly and clean UI.
  • Supports installing SideStore and LiveContainer properly.
  • Supports Linux.
  • Sign and sideload applications on iOS 9.0+ & Mac with your Apple ID.
    • Installing with AppSync is supported.
    • Installing with ipatool gotten ipa's is supported.
      • Automatically disables updates from the App Store.
  • Simple customization options for the app.
  • Tweak support for advanced users, using ElleKit for injection.
    • Supports injecting .deb and .dylib files.
    • Supports adding .framework, .bundle, and .appex directories.
    • Supports replacing Cydia Substrate with ElleKit for 26.0 compatibility.
  • Generates P12 for SideStore/AltStore to use, similar to Altserver.
  • Automatically populate pairing files for apps like SideStore, Antrag, and Protokolle.
  • Comes with simple device utilities for retrusting/placing pairing file.
  • Export P12 for use with LiveContainer.
  • Almost proper entitlement handling and can register app plugins.
    • Able to request entitlements like increased-memory-limit, for emulators like MelonX or UTM.

Download

Visit releases and get the latest version for your computer.

This is also available on flatpak & homebrew.

Linux:

macOS:

brew install --cask impactor

How it works

How it works is that we try to replicate what Xcode would do but in our own application, by using your Apple Account (which serves the purpose of being a "Developer") so we can request certificates, provisioning profiles, and register your device from Apple themselves.

Apple here is the provider of these and how we'll even be able to get apps on your phone. Unfortunately, without paying for their developer program you are limited to 7-days and a limited amount of apps/components you can register.

The very first thing we do when trying to sideload an app, is register your idevice to their servers, then try to create a certificate. These last 365 days, we also store the key locally so you would need to copy these keys over to other machines, if you don't, Impactor will try to make a new one.

After that, we try to register your app that you're trying to sideload, and try to provision it with proper entitlements gathered from the binary. Once we do, we have to download the neccessary files when signing, that being the certificate and provisioning profile that we just created.

Lastly, we do all of the necessary modifications we need to the app you're trying to sideload, can range between tweaks, name changing, etc. Though most importantly, we need to sign the app using apple-codesign-rs so we can install it with idevice!

That's the entire gist of how this works! Of course its very short and brief, however feel free to look how it works since its open source :D

Pairing File

Impactor also allows the user to generate a pairing file for applications to talk directly to the device remotely. This pairing file is device specific and will become invalid if you ever re-trust/update/reset.

Supported apps for pairing file:

  • SideStore
  • Feather
  • SparseBox
  • LiveContainer + SideStore
  • Antrag
  • Protokolle
  • StikDebug

You can retrieve this file by either sideloading the supported app of your choice, or going to the Utilities page when a device is connected and press install for the supported app. Head over to the downloads.

Sponsors

Thanks to all my sponsors!!
"samara is cute" - Vendicated

Star History

Star History Chart

Acknowledgements

  • SAMSAM – The maker.
  • Paige – Icon & flatpak distribution.
  • SideStore – Grandslam auth & Omnisette.
  • gms.py – Grandslam auth API references.
  • Sideloader – Apple Developer API references.
  • PyDunkv1 Apple Developer API references.
  • idevice – Used for communication with installd, specifically for sideloading the apps to your devices.
  • apple-codesign-rs – Codesign alternative, modified and extended upon to work for Impactor.

License

Project is licensed under the MIT license. You can see the full details of the license here. Some components may be licensed under different licenses, see their respective directories for details.

Footnotes

  1. On Linux, usbmuxd must be installed on your system. Don't worry though, it comes with most popular distributions by default already! However, due to some distributions udev rules usbmuxd may stop running after no devices are connected causing Impactor to not detect the device after plugging it in. You can mitigate this by plugging your phone first then restarting the app.

    Auto-refresh will not work the same as it would on other platforms like macOS/Windows, due to usbmuxd lacking WiFi connectivity so it will attempt to do it automatically only when a device is plugged in, we are looking for a proper solution though.

  2. On Windows, iTunes must be downloaded so Impactor is able to use the drivers for interacting with Apple devices.