• Stars
    star
    17,532
  • Rank 1,543 (Top 0.04 %)
  • Language
    Objective-C
  • License
    Other
  • Created about 2 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Jailed iOS app that can install IPAs permanently with arbitary entitlements and root helpers because it trolls Apple

TrollStore

TrollStore is a permasigned jailed app that can permanently install any IPA you open in it.

It works because of an AMFI/CoreTrust bug where iOS does not verify whether or not a root certificate used to sign a binary is legit.

Installing TrollStore

Installation Guides

Version / Device arm64 (A8 - A11) arm64e (A12 - A15, M1)
13.7 and below Not Supported (CT Bug only got introduced in 14.0) Not Supported (CT Bug only got introduced in 14.0)
14.0 - 14.8.1 checkra1n + TrollHelper TrollHelperOTA (arm64e)
15.0 - 15.4.1 TrollHelperOTA (iOS 15+) TrollHelperOTA (iOS 15+)
15.5 beta 1 - 4 TrollHelperOTA (iOS 15+) TrollHelperOTA (iOS 15+)
15.5 (RC) Not Supported (CT Bug fixed) Not Supported (CT Bug fixed)
15.6 beta 1 - 5 SSH Ramdisk TrollHelperOTA (arm64e)
15.6 (RC1/2) and above Not Supported (CT Bug fixed) Not Supported (CT Bug fixed)

This version table is final, TrollStore will never support anything other than the versions listed here. Do not bother asking, if you got a device on an unsupported version, it's best if you forget TrollStore even exists.

Updating TrollStore

When a new TrollStore update is available, a button to install it will appear at the top in the TrollStore settings. After tapping the button, TrollStore will automatically download the update, install it, and respring.

Alternatively (if anything goes wrong), you can download the TrollStore.tar file under Releases and open it in TrollStore, TrollStore will install the update and respring.

Uninstalling an app

Apps installed from TrollStore can only be uninstalled from TrollStore itself, tap an app or swipe it to the right in the 'Apps' tab to delete it.

Persistence Helper

The CoreTrust bug used in TrollStore is only enough to install "System" apps, this is because FrontBoard has an additional security check (it calls libmis) every time before a user app is launched. Unfortunately it is not possible to install new "System" apps that stay through an icon cache reload. Therefore, when iOS reloads the icon cache, all TrollStore installed apps including TrollStore itself will revert back to "User" state and will no longer launch.

The only way to work around this is to install a persistence helper into a system app, this helper can then be used to reregister TrollStore and its installed apps as "System" so that they become launchable again, an option for this is available in TrollStore settings.

On jailbroken iOS 14 when TrollHelper is used for installation, it is located in /Applications and will persist as a "System" app through icon cache reloads, therefore TrollHelper is used as the persistence helper on iOS 14.

URL Scheme

As of version 1.3, TrollStore replaces the system URL scheme "apple-magnifier" (this is done so "jailbreak" detections can't detect TrollStore like they could if TrollStore had a unique URL scheme). This URL scheme can be used to install applications right from the browser, the format goes as follows:

apple-magnifier://install?url=<URL_to_IPA>

On devices that don't have TrollStore (1.3+) installed, this will just open the magnifier app.

Features

The binaries inside an IPA can have arbitrary entitlements, fakesign them with ldid and the entitlements you want (ldid -S<path/to/entitlements.plist> <path/to/binary>) and TrollStore will preserve the entitlements when resigning them with the fake root certificate on installation. This gives you a lot of possibilities, some of which are explained below.

Banned entitlements

iOS 15 on A12+ has banned the following three entitlements related to running unsigned code, these are impossible to get without a PPL bypass, apps signed with them will crash on launch.

com.apple.private.cs.debugger

dynamic-codesigning

com.apple.private.skip-library-validation

Unsandboxing

Your app can run unsandboxed using one of the following entitlements:

<key>com.apple.private.security.container-required</key>
<false/>
<key>com.apple.private.security.no-container</key>
<true/>
<key>com.apple.private.security.no-sandbox</key>
<true/>

The third one is recommended if you still want a sandbox container for your application.

You might also need the platform-application entitlement in order for these to work properly:

<key>platform-application</key>
<true/>

Please note that the platform-application entitlement causes side effects such as some parts of the sandbox becoming tighter, so you may need additional private entitlements to circumvent that. (For example afterwards you need an exception entitlement for every single IOKit user client class you want to access).

In order for an app with com.apple.private.security.no-sandbox and platform-application to be able to access it's own data container, you might need the additional entitlement:

<key>com.apple.private.security.storage.AppDataContainers</key>
<true/>

Root Helpers

When your app is not sandboxed, you can spawn other binaries using posix_spawn, you can also spawn binaries as root with the following entitlement:

<key>com.apple.private.persona-mgmt</key>
<true/>

You can also add your own binaries into your app bundle.

Afterwards you can use the spawnRoot function in TSUtil.m to spawn the binary as root.

Things that are not possible using TrollStore

  • Getting proper platformization (TF_PLATFORM / CS_PLATFORMIZED)
  • Spawning a launch daemon (Would need CS_PLATFORMIZED)
  • Injecting a tweak into a system process (Would need TF_PLATFORM, a userland PAC bypass and a PMAP trust level bypass)

Credits and Further Reading

@LinusHenze - Found the CoreTrust bug that allows TrollStore to work.

Fugu15 Presentation

Write-Up on the CoreTrust bug with more information.

More Repositories

1

Dopamine

Dopamine is a semi-untethered jailbreak for iOS 15 and 16
C
3,306
star
2

SafariPlus

Tweak for iOS App "Safari" - Various enhancements
Objective-C++
438
star
3

Choicy

Advanced tweak configurator for iOS 10 and up
Objective-C
333
star
4

opa334.github.io

Cydia Repo
HTML
312
star
5

ChOma

C library for manipulating MachO/FAT files and their code signatures
C
307
star
6

opainject

iOS runtime dylib injection tool
Objective-C
198
star
7

TrollNonce

Boot nonce utility for TrollStore (15.0 - 15.5b4)
Objective-C
176
star
8

sandbox_extension_generator

iOS 15.0 - 15.3.1 sandbox escape technique using kernel read/write primitives
C
122
star
9

CCSupport

Support tweak for CC modules!
Logos
116
star
10

AltList

A modern AppList alternative
Objective-C
103
star
11

u0Launcher

Launches unc0ver in a way that works when it's installed through TrollStore
Objective-C
95
star
12

libSandy

Securely extend the sandbox of system processes and user applications
Objective-C
79
star
13

IGSideloadFix

Fix crash on login when Instagram is installed via sideloading (iOS)
Logos
79
star
14

libroot

Standardized API to get root path on iOS jailbreaks
C
68
star
15

Presentations

66
star
16

xnuspy_syscall_logger

Log all syscalls executed by a process (iOS / checkra1n / xnuspy)
C
57
star
17

libundirect

Patchfinder and rebinder for objc_direct methods
Objective-C
50
star
18

NotRecording

Spoof screen recording detection!
Objective-C
36
star
19

XPF

XNU Patch Finder (based on ChOma)
C
34
star
20

futurerestore-compile-windows

MSYS2 script to compile futurerestore and all of it's dependencies for Windows (dynamically and statically)
Shell
32
star
21

Downloadally

Tweak for iOS App "TikTok" - Adds a download button
Logos
23
star
22

TimeBomb

Spinlock panic with ease!
Logos
23
star
23

powerlogHelperdFix

Block tweak injection into powerlogHelperd, fixes issues on iOS 13
Makefile
20
star
24

WatchdogDisabler

Disables app launch watchdog timeouts
Makefile
20
star
25

FLEXSimject

Open Flex in iOS Simulator (Alt+F)
Logos
19
star
26

CCSupportExamples

Some example modules
Objective-C
18
star
27

CCSupportTemplates

Templates and headers for module development
Objective-C
16
star
28

litehook

Lightweight *OS hooking library with no dependencies except for libsystem
15
star
29

WhitePointModule

Control Center Module to toggle "Reduce White Point" with the ability to change the intensity
Objective-C
13
star
30

ChoicyLoader

Hacky workaround to always load Choicy first
Objective-C
11
star
31

syscallintercept

an attempt to intercept syscalls for iOS applications that is unfinished and works only partially
Logos
11
star
32

NoSubstitute12

Disable Substitute on a per app basis (DEPRECATED, use Choicy)
Logos
10
star
33

Crane-Resources

Objective-C
10
star
34

SliceFixup

Tool to remove unsupported arm64e slice from a dylib based on the iOS version
Objective-C
8
star
35

CCCleaner

Cleaning Tool for Control Center related System Files
Objective-C++
8
star
36

FastSafariPW

1Password / LastPass Shortcut Buttons inside Toolbar
Logos
7
star
37

SaveVideoDialog

Alert to prevent a recorded video from being saved
Logos
4
star
38

TerraSmart

C++
4
star