From 81ab62324c6535b5d67c4e6d5902e95478dfc41e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=88=9A=28noham=29=C2=B2?= <100566912+NohamR@users.noreply.github.com> Date: Tue, 30 Jun 2026 17:31:36 +0200 Subject: [PATCH] Merge legacy and latest --- README.md | 3 +-- ServerCatPremium/Tweak.x | 15 ++++++++++--- ServerCatPremium/index.md | 15 +++++++------ ServerCatPremium_/.gitignore | 3 --- ServerCatPremium_/Makefile | 13 ------------ ServerCatPremium_/ServerCatPremium.plist | 7 ------ ServerCatPremium_/Tweak.x | 27 ------------------------ ServerCatPremium_/control | 9 -------- ServerCatPremium_/index.md | 26 ----------------------- 9 files changed, 21 insertions(+), 97 deletions(-) delete mode 100644 ServerCatPremium_/.gitignore delete mode 100644 ServerCatPremium_/Makefile delete mode 100644 ServerCatPremium_/ServerCatPremium.plist delete mode 100644 ServerCatPremium_/Tweak.x delete mode 100644 ServerCatPremium_/control delete mode 100644 ServerCatPremium_/index.md diff --git a/README.md b/README.md index ea5fb36..62154dc 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,7 @@ iOS tweaks built with [Theos](https://theos.dev), injected into IPAs via [cyan]( | Tweak | App | Target | | ------------------------------------------------------- | ---------------- | ---------- | -| [ServerCatPremium](ServerCatPremium/index.md) | ServerCat 1.30.0 | iOS 17+ | -| [ServerCatPremium (legacy)](ServerCatPremium_/index.md) | ServerCat 1.6.4 | iOS 15 | +| [ServerCatPremium](ServerCatPremium/index.md) | ServerCat 1.30.0 / 1.6.4 | iOS 15+ | | [TextasticPro](TextasticPro/index.md) | Textastic 10.9.2 | iOS 18+ | | [BusinessJB](BusinessJB/index.md) | Business 2.3.000 | iOS 15 | | [CreditAgricoleJB](CreditAgricoleJB/index.md) | Ma Banque 47.0.0 | iOS 15.8.6 | diff --git a/ServerCatPremium/Tweak.x b/ServerCatPremium/Tweak.x index ffefe43..43dcfb3 100644 --- a/ServerCatPremium/Tweak.x +++ b/ServerCatPremium/Tweak.x @@ -5,7 +5,16 @@ #define TARGET_MODULE "ServerCat" #define IDA_BASE 0x100000000 -#define ADDR_IS_PREMIUM 0x10009CD24 // Address of "isPremiumActive" in IDA (adjust if needed) + +/* + * EDIT THE HOOK ADDRESS OFFSET ACCORDING TO THE APP VERSION USED: + * + * ServerCat 1.30.0 (latest) -> 0x10009CD24 + * ServerCat 1.6.4 (legacy) -> 0x100454D70 + * + * Find the address of `isPremiumActive` in IDA and set it below. + */ +#define ADDR_IS_PREMIUM 0x10009CD24 static int (*orig_isPremiumActive)(void); @@ -26,7 +35,7 @@ static int hook_isPremiumActive(void) { } } -// iOS 16 Crash Fix +// iOS 16+ Crash Fix %hook CKContainer + (id)defaultContainer { return nil; @@ -34,4 +43,4 @@ static int hook_isPremiumActive(void) { + (id)containerWithIdentifier:(id) arg1 { return nil; } -%end \ No newline at end of file +%end diff --git a/ServerCatPremium/index.md b/ServerCatPremium/index.md index f1946ce..27aee8e 100644 --- a/ServerCatPremium/index.md +++ b/ServerCatPremium/index.md @@ -1,9 +1,13 @@ # ServerCatPremium -Unlocks premium features in ServerCat by forcing `isPremiumActive` (`sub_10009CD24`) to always return `1`. +Unlocks premium features in ServerCat by forcing `isPremiumActive` to always return `1`. - **App**: [ServerCat – SSH Terminal](https://apps.apple.com/us/app/servercat-ssh-terminal/id1501532023) -- **Tested on**: ServerCat 1.30.0 (600), iOS 18.3 +- **Tested on**: ServerCat 1.30.0 (iOS 18.3) and ServerCat 1.6.4 (iOS 15.8.6) + +Hook address offsets (edit in `Tweak.x`): +- `0x10009CD24` — ServerCat 1.30.0 +- `0x100454D70` — ServerCat 1.6.4 ## Build @@ -14,12 +18,9 @@ make clean && make package THEOS_PACKAGE_SCHEME=rootless DEBUG=0 ## Inject ```sh -cyan -i tech.baye.servercat-1.30.0.ipa \ - -o tech.baye.servercat-1.30.0_patched.ipa \ - -f xyz.nohamr_1.0.0-1_iphoneos-arm64.deb \ - -u +cyan -i -o -f xyz.nohamr_1.0.0-1_iphoneos-arm64.deb -u ``` ## Screenshots ![../docs/screens/ServerCatPremium/menu.png](../docs/screens/ServerCatPremium/menu.png) -![../docs/screens/ServerCatPremium/menu2.png](../docs/screens/ServerCatPremium/menu2.png) \ No newline at end of file +![../docs/screens/ServerCatPremium/menu2.png](../docs/screens/ServerCatPremium/menu2.png) diff --git a/ServerCatPremium_/.gitignore b/ServerCatPremium_/.gitignore deleted file mode 100644 index faf8687..0000000 --- a/ServerCatPremium_/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.theos/ -packages/ -.DS_Store diff --git a/ServerCatPremium_/Makefile b/ServerCatPremium_/Makefile deleted file mode 100644 index 8fbbd61..0000000 --- a/ServerCatPremium_/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -TARGET = iphone:latest:14.0 -INSTALL_TARGET_PROCESSES = ServerCat -ARCHS = arm64 arm64e - -include $(THEOS)/makefiles/common.mk - -TWEAK_NAME = ServerCatPremium - -ServerCatPremium_FILES = Tweak.x -ServerCatPremium_CFLAGS = -fobjc-arc -ServerCatPremium_FRAMEWORKS = Foundation - -include $(THEOS_MAKE_PATH)/tweak.mk diff --git a/ServerCatPremium_/ServerCatPremium.plist b/ServerCatPremium_/ServerCatPremium.plist deleted file mode 100644 index 9a6a0a2..0000000 --- a/ServerCatPremium_/ServerCatPremium.plist +++ /dev/null @@ -1,7 +0,0 @@ -{ - Filter = { - Bundles = ( - "tech.baye.servercat", - ); - }; -} \ No newline at end of file diff --git a/ServerCatPremium_/Tweak.x b/ServerCatPremium_/Tweak.x deleted file mode 100644 index 84d84a7..0000000 --- a/ServerCatPremium_/Tweak.x +++ /dev/null @@ -1,27 +0,0 @@ -#import -#import -#import -#import - -#define TARGET_MODULE "ServerCat" -#define IDA_BASE 0x100000000 -#define ADDR_IS_PREMIUM 0x100454D70 // Address of "isPremiumActive" in IDA (adjust if needed) - -static int (*orig_isPremiumActive)(void); - -static int hook_isPremiumActive(void) { - return 1; -} - -%ctor { - for (uint32_t i = 0; i < _dyld_image_count(); i++) { - const char *name = _dyld_get_image_name(i); - if (name && strstr(name, TARGET_MODULE)) { - uintptr_t base = (uintptr_t)_dyld_get_image_header(i); - uintptr_t addr = base + (ADDR_IS_PREMIUM - IDA_BASE); - MSHookFunction((void *)addr, (void *)hook_isPremiumActive, (void **)&orig_isPremiumActive); - NSLog(@"[ServerCatPremium] Hooked isPremiumActive at 0x%lx", addr); - return; - } - } -} diff --git a/ServerCatPremium_/control b/ServerCatPremium_/control deleted file mode 100644 index 33c0957..0000000 --- a/ServerCatPremium_/control +++ /dev/null @@ -1,9 +0,0 @@ -Package: xyz.nohamr.servercatpremiumlegacy -Name: ServerCatPremium (Legacy) -Version: 1.0.0 -Architecture: iphoneos-arm -Description: Unlocks premium features in ServerCat app. -Maintainer: NohamR -Author: NohamR -Section: Tweaks -Depends: mobilesubstrate (>= 0.9.5000) diff --git a/ServerCatPremium_/index.md b/ServerCatPremium_/index.md deleted file mode 100644 index 7add50f..0000000 --- a/ServerCatPremium_/index.md +++ /dev/null @@ -1,26 +0,0 @@ -# ServerCatPremium (legacy — iOS 15) - -Unlocks premium features in ServerCat by forcing `isPremiumActive` (`sub_100454D70`) to always return `1`. - -- **App**: [ServerCat – SSH Terminal](https://apps.apple.com/us/app/servercat-ssh-terminal/id1501532023) -- **Tested on**: ServerCat 1.6.4, iOS 15.8.6 -- **Note**: ServerCat 1.6.4 is the last version supporting iOS 15. Latest requires iOS 17+. - -## Build - -```sh -make clean && make package THEOS_PACKAGE_SCHEME=rootless DEBUG=0 -``` - -## Inject - -```sh -cyan -i tech.baye.servercat-1.6.4.ipa \ - -o tech.baye.servercat-1.6.4_patched.ipa \ - -f xyz.nohamr_1.0.0-1_iphoneos-arm64.deb \ - -u -``` - -## Screenshots -![../docs/screens/ServerCatPremium_/menu.png](../docs/screens/ServerCatPremium_/menu.png) -![../docs/screens/ServerCatPremium_/menu2.png](../docs/screens/ServerCatPremium_/menu2.png) \ No newline at end of file