Impactor Documentation

repository·main·Indexed 25 days ago

https://github.com/claration/impactor

An open-source, cross-platform iOS sideloading application for macOS, Linux, and Windows. It allows users to sign and install applications on iOS 9.0+ and Mac using an Apple ID. The project includes the Impactor GUI and the plumesign CLI tool for iOS code signing, Mach-O binary manipulation, Apple Developer account management, and device registration.

Tokens
12.4K
Snippets
21
Records
113
Agent score
84%

What's inside Impactor

  1. Add new language translations

    main

    Impactor supports localization via .toml files located in the locales/ directory. To add a new language:

    1. Copy locales/en.toml to locales/<language_code>.toml.
    2. Translate the strings within the new file.
  2. Sideload iOS applications with Impactor

    main

    Impactor allows you to sign and sideload applications on iOS 9.0+ and macOS using your Apple ID.

    Key Capabilities:

    • Supports installing SideStore and LiveContainer properly.
    • Supports installing apps via AppSync or .ipa files obtained via ipatool (automatically disables App Store updates).
    • Supports Tweak injection using ElleKit:
      • Inject .deb and .dylib files.
      • Add .framework, .bundle, and .appex directories.
      • Replace Cydia Substrate with ElleKit for 26.0 compatibility.
    • Handles entitlements like increased-memory-limit for emulators (e.g., MelonX, UTM).
    • Generates P12 files for use with SideStore, AltStore, or LiveContainer.
  3. Generate pairing files for remote device communication

    main

    Impactor can generate device-specific pairing files that allow applications to communicate with your iOS device remotely. These files become invalid if you re-trust, update, or reset the device.

    How to generate:

    1. Sideload a supported app directly via Impactor.
    2. Or, connect your device, navigate to the Utilities page, and press install for a supported app.

    Supported applications for pairing files:

    • SideStore (via Apple ID)
    • Feather (via raw certificates)
    • SparseBox (Device customizer)
    • LiveContainer + SideStore (via Apple ID)
    • Antrag (List installed apps)
    • Protokolle (View system process logs)
    • StikDebug (Enable JIT)
    • EnsWilde (Device customizer)
    • ByeTunes (Import mp3 to Music App)
    • Reynard Browser (Gecko-based browser)
    • Ksign (via raw certificates)
  4. Install Impactor on macOS and Linux

    main

    Impactor is a cross-platform iOS sideloading application. You can install it using the following methods:

    macOS (via Homebrew):

    brew install --cask impactor

    Linux: Available via Flatpak.

    Note for Linux users: usbmuxd must be installed. If your device is not detected after plugging it in, try plugging the phone in first and then restarting the app. Some distributions (like Bazzite) may require running sudo update-crypto-policies to ensure usbmuxd detects the device.

  5. Impactor Application Runtime Behavior

    main

    Impactor is a GUI application built with the iced framework. Its runtime behavior includes:

    • Single Instance Enforcement: On Linux, Windows, and macOS, the application attempts to ensure only one instance is running. If another instance is detected, it signals the running instance and exits.
    • Localization: The application automatically detects and sets the system locale using rust_i18n.
    • Refresh Daemon: It spawns a background refresh daemon to manage connected devices.
    • GPU Fallback (Linux): On Linux, the application checks for SHADER_F16 support via wgpu. If no compatible adapter is found or FP16 support is missing, it automatically sets the ICED_BACKEND environment variable to tiny-skia to ensure compatibility.
  6. Manage iOS packages with the Package struct

    main

    The Package struct provides a way to interact with iOS .ipa files. It handles extracting the package to a temporary staging directory, parsing the Info.plist for metadata, and extracting the application icon.

    Key capabilities:

    • Initialization: Package::new(package_file) unpacks the IPA into a temporary directory.
    • Metadata Access: Implements PlistInfoTrait to retrieve the app name, bundle identifier, version, and build version.
    • Icon Extraction: Automatically finds and extracts the app icon from the archive, normalizing it via cgbi.
    • Bundle Conversion: get_package_bundle() extracts the contents and returns a Bundle object for deeper inspection.
    • Cleanup: remove_package_stage() deletes the temporary staging directory.
  7. Respond to Two-Factor Authentication prompts

    main

    To resolve a 2FA challenge, use the TwoFactorAction enum to indicate how the user responded:

    • SubmitCode(String): The user entered a verification code.
    • SendSms(u32): The user requested a new code be sent to a specific trusted phone number via SMS (using the id from the TrustedPhoneNumber).