Skip to content

Repository files navigation

Theta

Instagram tweak for jailbreak and sideload. Open Theta from the settings gear on the home feed, or by long-pressing the home tab.

Tested against Instagram 441.0.0.

Requirements

  • Theos with THEOS set (for example export THEOS=/opt/theos)
  • Theos Xcode14.xctoolchain at $THEOS/toolchain/Xcode14.xctoolchain
  • The patched iPhoneOS 14.5 SDK from this repo (see below). A stock Xcode SDK will not work — Theta is built with SDKVERSION = 14.5 and needs Theos-patched private-framework stubs.
  • Python 3 (used by scripts/assemble.py during the build)
  • A Mac with Xcode command-line tools

Jailbreak packages also need Cydia Substrate on the device (Depends: mobilesubstrate). Sideload builds bundle Substrate into the IPA.

Patched iPhoneOS 14.5 SDK

After cloning or forking, unpack the SDK into your Theos sdks directory:

mkdir -p "$THEOS/sdks"
tar -xJf sdks/iPhoneOS14.5.sdk.tar.xz -C "$THEOS/sdks"

That creates $THEOS/sdks/iPhoneOS14.5.sdk. Do not unpack it inside the Theta repo; Theos only looks under $THEOS/sdks.

Build

Prefer ./build.sh from the repo root. Do not set SIDELOAD and ROOTLESS at the same time.

./build.sh              # rootful .deb → packages/
./build.sh rootless     # rootless .deb → packages/
./build.sh sideload     # inject into input/Payload → output/Instagram_patched.ipa

Equivalent Make invocations:

make package
make package ROOTLESS=1
make package SIDELOAD=1

FFmpeg headers and frameworks live at layout/Library/Application Support/ffmpeg.framework. Sideload builds copy that framework into the app when it is present. Reel save still works without FFmpeg via a native AVFoundation fallback.

Install

Jailbreak (rootful / rootless)

  1. Build with ./build.sh or ./build.sh rootless.
  2. Copy the .deb from packages/ to the device and install it with Sileo, Zebra, or dpkg -i.
    • Rootful: packages/com.theta.tweak_1.0.1_iphoneos-arm.deb
    • Rootless: packages/com.theta.tweak_1.0.1_iphoneos-arm64.deb
  3. Respring if the package manager does not, then open Instagram.

If Theos device install is already configured (THEOS_DEVICE_IP), make install / make install ROOTLESS=1 will install and reopen Instagram.

Sideload

  1. Get a decrypted Instagram IPA and unpack it so the app binary is at:

    input/Payload/Instagram.app/Instagram
    

    Example:

    unzip Instagram.ipa -d /tmp/ig
    mkdir -p input
    cp -R /tmp/ig/Payload input/
  2. Run ./build.sh sideload. That compiles Theta.dylib with SIDELOAD=1, injects it into the Instagram binary, stages CydiaSubstrate.framework, and writes output/Instagram_patched.ipa.

  3. Install that IPA:

    • Sideloadly / AltStore / SideStore — open output/Instagram_patched.ipa and let the tool re-sign it with your Apple ID.
    • TrollStore — install the IPA on-device.
  4. Open Instagram. Theta settings use the same gear / home-tab long-press as jailbreak.

If Substrate cannot be found automatically, set SUBSTRATE_FRAMEWORK_PATH to a CydiaSubstrate.framework directory, or place one at third_party/CydiaSubstrate.framework.

Sideload also injects ThetaNSE into Instagram’s notification service extension so decrypted banners can work. Source/SideloadNSE/keychain-sharing.plist is optional and is not applied by the build. Skip it unless notifications break because the extension cannot read Instagram’s keychain. In that case, merge those entitlements onto Instagram.app and InstagramNotificationExtension.appex only (never onto ThetaNSE or other dylibs), and replace TEAMID with your signing Team ID. Theta already probes wildcard keychain groups at runtime, so most sideload installs do not need this plist.

Known issues

Area Scope Status
Navigation (Tab Icon Order, Swipe Between Tabs, Launch Tab, Hide Feed/Explore/Reels/Messages Tab, Messenger Mode) Sideload only Broken

Jailbreak Navigation settings are unaffected. Everything else in Theta settings is expected to work on both jailbreak and sideload.

Layout

Source/
  Runtime/          Hook helpers, Substrate loader, sideload shims, entrypoint
  Hooks/
    Behavior/       Ads, stories, confirmations, privacy, live, …
    General/        Date format, external browser, liquid glass
    Media/          Reel tap controls
    Messages/       DM features
    Save/           Media / profile / audio saves
    UI/             Tabs, navigation, settings entry points
    Sideload/       Keychain / app-group fakes
  SideloadNSE/      Sideload notification-extension helper (`keychain-sharing.plist` is optional)
  UI/               Settings, toasts, helpers, lock screen
  Media/            Download UI, AV1 transcoder, DASH
  ProfileAnalyzer/  Follower analytics
Include/            Public headers
scripts/assemble.py Builds TweakCOMPILE.xm (single TU for static hooks)

About

No description, website, or topics provided.

Resources

Stars

25 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages