Skip to content

Commit

Permalink
Revamp build process to produce new embdded binaries in build folder
Browse files Browse the repository at this point in the history
  • Loading branch information
opa334 committed Nov 27, 2023
1 parent 1368357 commit e0a580c
Show file tree
Hide file tree
Showing 9 changed files with 31 additions and 19 deletions.
14 changes: 8 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
TOPTARGETS := all clean

$(TOPTARGETS): pre_build make_fastPathSign make_roothelper make_trollstore make_trollhelper make_trollhelper_package assemble_trollstore make_trollhelper_embedded build_installer15 build_installer64e
$(TOPTARGETS): pre_build make_fastPathSign make_roothelper make_trollstore make_trollhelper_embedded make_trollhelper_package assemble_trollstore build_installer15 build_installer64e

pre_build:
@rm -rf ./_build 2>/dev/null || true
Expand All @@ -17,9 +17,6 @@ make_roothelper:
make_trollstore:
@$(MAKE) -C ./TrollStore FINALPACKAGE=1 $(MAKECMDGOALS)

make_trollhelper:
@$(MAKE) -C ./TrollStore FINALPACKAGE=1 $(MAKECMDGOALS)

ifneq ($(MAKECMDGOALS),clean)

make_trollhelper_package:
Expand All @@ -31,6 +28,11 @@ make_trollhelper_package:
make_trollhelper_embedded:
@$(MAKE) clean -C ./TrollHelper
@$(MAKE) -C ./TrollHelper FINALPACKAGE=1 EMBEDDED_ROOT_HELPER=1 $(MAKECMDGOALS)
@cp ./TrollHelper/.theos/obj/TrollStorePersistenceHelper.app/TrollStorePersistenceHelper ./_build/PersistenceHelper_Embedded
@$(MAKE) clean -C ./TrollHelper
@$(MAKE) -C ./TrollHelper FINALPACKAGE=1 EMBEDDED_ROOT_HELPER=1 LEGACY_CT_BUG=1 $(MAKECMDGOALS)
@cp ./TrollHelper/.theos/obj/TrollStorePersistenceHelper.app/TrollStorePersistenceHelper ./_build/PersistenceHelper_Embedded_Legacy
@$(MAKE) clean -C ./TrollHelper

assemble_trollstore:
@cp ./RootHelper/.theos/obj/trollstorehelper ./TrollStore/.theos/obj/TrollStore.app/trollstorehelper
Expand All @@ -41,7 +43,7 @@ assemble_trollstore:
build_installer15:
@mkdir -p ./_build/tmp15
@unzip ./Victim/InstallerVictim.ipa -d ./_build/tmp15
@cp ./TrollHelper/.theos/obj/TrollStorePersistenceHelper.app/TrollStorePersistenceHelper ./_build/TrollStorePersistenceHelperToInject
@cp ./_build/PersistenceHelper_Embedded_Legacy ./_build/TrollStorePersistenceHelperToInject
@pwnify set-cpusubtype ./_build/TrollStorePersistenceHelperToInject 1
@ldid -s -K./Victim/victim.p12 ./_build/TrollStorePersistenceHelperToInject
APP_PATH=$$(find ./_build/tmp15/Payload -name "*" -depth 1) ; \
Expand All @@ -62,7 +64,7 @@ build_installer64e:
APP_NAME=$$(basename $$APP_PATH) ; \
BINARY_NAME=$$(echo "$$APP_NAME" | cut -f 1 -d '.') ; \
echo $$BINARY_NAME ; \
pwnify pwn64e ./_build/tmp64e/Payload/$$APP_NAME/$$BINARY_NAME ./TrollHelper/.theos/obj/TrollStorePersistenceHelper.app/TrollStorePersistenceHelper
pwnify pwn64e ./_build/tmp64e/Payload/$$APP_NAME/$$BINARY_NAME ./_build/PersistenceHelper_Embedded_Legacy
@pushd ./_build/tmp64e ; \
zip -vrD ../../_build/TrollHelper_arm64e.ipa * ; \
popd
Expand Down
Empty file added RootHelper/.gitignore
Empty file.
2 changes: 1 addition & 1 deletion Shared/TSListControllerShared.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
@interface TSListControllerShared : PSListController
- (BOOL)isTrollStore;
- (NSString*)getTrollStoreVersion;
- (void)downloadTrollStoreAndDo:(void (^)(NSString* localTrollStoreTarPath))doHandler;
- (void)downloadTrollStoreAndRun:(void (^)(NSString* localTrollStoreTarPath))doHandler;
- (void)installTrollStorePressed;
- (void)updateTrollStorePressed;
- (void)rebuildIconCachePressed;
Expand Down
10 changes: 5 additions & 5 deletions Shared/TSListControllerShared.m
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ - (NSString*)getTrollStoreVersion
}
}

- (void)downloadTrollStoreAndDo:(void (^)(NSString* localTrollStoreTarPath))doHandler
- (void)downloadTrollStoreAndRun:(void (^)(NSString* localTrollStoreTarPath))doHandler
{
NSURL* trollStoreURL = [NSURL URLWithString:@"https://github.com/opa334/TrollStore/releases/latest/download/TrollStore.tar"];
NSURLRequest* trollStoreRequest = [NSURLRequest requestWithURL:trollStoreURL];
Expand Down Expand Up @@ -59,7 +59,7 @@ - (void)downloadTrollStoreAndDo:(void (^)(NSString* localTrollStoreTarPath))doHa
[downloadTask resume];
}

- (void)_updateOrInstallTrollStore:(BOOL)update
- (void)_installTrollStoreComingFromUpdateFlow:(BOOL)update
{
if(update)
{
Expand All @@ -70,7 +70,7 @@ - (void)_updateOrInstallTrollStore:(BOOL)update
[TSPresentationDelegate startActivity:@"Installing TrollStore"];
}

[self downloadTrollStoreAndDo:^(NSString* tmpTarPath)
[self downloadTrollStoreAndRun:^(NSString* tmpTarPath)
{
int ret = spawnRoot(rootHelperPath(), @[@"install-trollstore", tmpTarPath], nil, nil);
[[NSFileManager defaultManager] removeItemAtPath:tmpTarPath error:nil];
Expand Down Expand Up @@ -112,12 +112,12 @@ - (void)_updateOrInstallTrollStore:(BOOL)update

- (void)installTrollStorePressed
{
[self _updateOrInstallTrollStore:NO];
[self _installTrollStoreComingFromUpdateFlow:NO];
}

- (void)updateTrollStorePressed
{
[self _updateOrInstallTrollStore:YES];
[self _installTrollStoreComingFromUpdateFlow:YES];
}

- (void)rebuildIconCachePressed
Expand Down
2 changes: 1 addition & 1 deletion Shared/TSUtil.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#define TrollStoreErrorDomain @"TrollStoreErrorDomain"

extern void chineseWifiFixup(void);
extern NSString* safe_getExecutablePath();
extern NSString *getExecutablePath(void);
extern NSString* rootHelperPath(void);
extern NSString* getNSStringFromFile(int fd);
extern void printMultilineNSString(NSString* stringToPrint);
Expand Down
12 changes: 7 additions & 5 deletions Shared/TSUtil.m
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#import <Foundation/Foundation.h>
#import <spawn.h>
#import <sys/sysctl.h>
#import <mach-o/dyld.h>

@interface PSAppDataUsagePolicyCache : NSObject
+ (instancetype)sharedInstance;
Expand All @@ -26,17 +27,18 @@ void chineseWifiFixup(void)
}
}

extern char*** _NSGetArgv();
NSString* safe_getExecutablePath()
NSString *getExecutablePath(void)
{
char* executablePathC = **_NSGetArgv();
return [NSString stringWithUTF8String:executablePathC];
uint32_t len = PATH_MAX;
char selfPath[len];
_NSGetExecutablePath(selfPath, &len);
return [NSString stringWithUTF8String:selfPath];
}

#ifdef EMBEDDED_ROOT_HELPER
NSString* rootHelperPath(void)
{
return safe_getExecutablePath();
return getExecutablePath();
}
#else
NSString* rootHelperPath(void)
Expand Down
8 changes: 8 additions & 0 deletions TrollHelper/Makefile
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
export EMBEDDED_ROOT_HELPER ?= 0
export LEGACY_CT_BUG ?= 0

TARGET := iphone:clang:16.4:14.0
INSTALL_TARGET_PROCESSES = TrollStorePersistenceHelper
ARCHS = arm64

ifneq ($(LEGACY_CT_BUG),1)
TARGET_CODESIGN = ../Exploits/fastPathSign/fastPathSign
endif

include $(THEOS)/makefiles/common.mk

Expand All @@ -14,7 +17,12 @@ TrollStorePersistenceHelper_FILES = $(wildcard *.m) $(wildcard ../Shared/*.m)
TrollStorePersistenceHelper_FRAMEWORKS = UIKit CoreGraphics CoreServices
TrollStorePersistenceHelper_PRIVATE_FRAMEWORKS = Preferences MobileContainerManager
TrollStorePersistenceHelper_CFLAGS = -fobjc-arc -I../Shared

ifeq ($(LEGACY_CT_BUG),1)
TrollStorePersistenceHelper_CODESIGN_FLAGS = -Sentitlements.plist -K../legacy.p12
else
TrollStorePersistenceHelper_CODESIGN_FLAGS = --entitlements entitlements.plist
endif

ifeq ($(EMBEDDED_ROOT_HELPER),1)
TrollStorePersistenceHelper_CFLAGS += -DEMBEDDED_ROOT_HELPER=1
Expand Down
2 changes: 1 addition & 1 deletion TrollHelper/TSHRootViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ - (NSMutableArray*)specifiers
[_specifiers addObject:installTrollStoreSpecifier];
}

NSString* backupPath = [safe_getExecutablePath() stringByAppendingString:@"_TROLLSTORE_BACKUP"];
NSString* backupPath = [getExecutablePath() stringByAppendingString:@"_TROLLSTORE_BACKUP"];
if([[NSFileManager defaultManager] fileExistsAtPath:backupPath])
{
PSSpecifier* uninstallHelperGroupSpecifier = [PSSpecifier emptyGroupSpecifier];
Expand Down
File renamed without changes.

0 comments on commit e0a580c

Please sign in to comment.