diff --git a/.gitignore b/.gitignore index 8d0faca..efd7cc7 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ /CreditAgricoleTweak /RMHook /rootless -Build.md +Build.md \ No newline at end of file diff --git a/Infuse/Infuse-iOS/.gitignore b/Infuse/Infuse-iOS/.gitignore new file mode 100644 index 0000000..faf8687 --- /dev/null +++ b/Infuse/Infuse-iOS/.gitignore @@ -0,0 +1,3 @@ +.theos/ +packages/ +.DS_Store diff --git a/Infuse/Infuse-iOS/Infuse.plist b/Infuse/Infuse-iOS/Infuse.plist new file mode 100644 index 0000000..f8411b4 --- /dev/null +++ b/Infuse/Infuse-iOS/Infuse.plist @@ -0,0 +1,7 @@ +{ + Filter = { + Bundles = ( + "com.firecore.infuse", + ); + }; +} \ No newline at end of file diff --git a/Infuse/Infuse-iOS/Makefile b/Infuse/Infuse-iOS/Makefile new file mode 100644 index 0000000..269933f --- /dev/null +++ b/Infuse/Infuse-iOS/Makefile @@ -0,0 +1,13 @@ +TARGET = iphone:latest:14.0 +INSTALL_TARGET_PROCESSES = infuse +ARCHS = arm64 arm64e + +include $(THEOS)/makefiles/common.mk + +TWEAK_NAME = Infuse + +Infuse_FILES = Tweak.x +Infuse_CFLAGS = -fobjc-arc +Infuse_FRAMEWORKS = Foundation + +include $(THEOS_MAKE_PATH)/tweak.mk diff --git a/Infuse/Infuse-iOS/Tweak.x b/Infuse/Infuse-iOS/Tweak.x new file mode 100644 index 0000000..59f10fc --- /dev/null +++ b/Infuse/Infuse-iOS/Tweak.x @@ -0,0 +1,81 @@ +// changes : FCInAppPurchaseServiceFreemium block deleted, FCTraktIAPManager block deleted, layoutSubviews -> awakeFromNib on FCVersionView, and the dead return %orig lines after return statements cleaned up (they were unreachable in the old version too) + +#import +#import +#import + +%hook FCIAPGUIHelper ++(bool) isProAvailable { + return TRUE; +} ++(bool) isSubscriptionBought { + return TRUE; +} +%end + +%hook FCInAppPurchaseServiceBase +- (bool)isFeaturePurchased:(long long)arg1 tillDate:(id*)arg2 { + return 1; +} +- (bool)isFeaturePurchased:(long long)arg1 { + return 1; +} +%end + +%hook FCInAppPurchaseServiceDummy +- (bool)isFeaturePurchased:(long long)arg1 tillDate:(id*)arg2 { + return 1; +} +%end + +// REMOVED: FCInAppPurchaseServiceFreemium (class gone from binary, replaced by SK2) + +// SK2 IAP backend +%hook _TtC6infuse31InAppPurchaseServiceFreemiumSK2 +- (bool)isFeaturePurchased:(long long)arg1 tillDate:(id*)arg2 { + return 1; +} +- (long long)iapVersionStatus { + // FCUpgradeToProViewController.featureHasBought checks iapVersionStatus > 0 + return 1; +} +%end + +%hook FCProductCollectionCell +-(bool) featurePurchased { + return TRUE; +} +%end + +// REMOVED: FCTraktIAPManager (class gone from binary) + +%hook FCUpgradeToProViewController +-(bool) featureHasBought { + return TRUE; +} +%end + +// Add credits +@interface FCVersionView : UIView +@property (nonatomic, strong) UILabel *label; +@end + +%hook FCVersionView +- (void)awakeFromNib { + %orig; + UILabel *label = (UILabel *)[self valueForKey:@"label"]; + if ([label.text containsString:@"Infuse Pro"] && ![label.text hasPrefix:@"Infuse Team •"]) { + label.text = [NSString stringWithFormat:@"Infuse Team • %@", label.text]; + } +} +%end + +// iOS 16 Crash Fix +%hook CKContainer ++ (id)defaultContainer { + return nil; +} ++ (id)containerWithIdentifier:(id)arg1 { + return nil; +} +%end \ No newline at end of file diff --git a/Infuse/Infuse-iOS/control b/Infuse/Infuse-iOS/control new file mode 100644 index 0000000..9681aa0 --- /dev/null +++ b/Infuse/Infuse-iOS/control @@ -0,0 +1,10 @@ +Package: io.infuseteam.infuserootless +Name: Infuse (Rootless) +Version: 2.0 +Architecture: iphoneos-arm +Description: Unlock the full potential of Infuse +Maintainer: Infuse Team +Author: Infuse Team +Section: Tweaks +Depends: firmware (>= 18.3) +Conflicts: io.infuseteam.infuse, io.infuseteam.infuseroothide, io.infuseteam.infuselegacy, xyz.eshaydev.ignition, com.ippteam.infuse, com.strejda603.infuse6pro, xyz.eshaydev.infuse \ No newline at end of file diff --git a/Infuse/Infuse-iOS/index.md b/Infuse/Infuse-iOS/index.md new file mode 100644 index 0000000..c0965b2 --- /dev/null +++ b/Infuse/Infuse-iOS/index.md @@ -0,0 +1,26 @@ +# Infuse (iOS) + +Unlock the full potential of Infuse. + +- **App**: [Infuse](https://apps.apple.com/fr/app/infuse/id1136220934) +- **Tested version**: 8.4.2 +- **Target**: iOS 18+ (tested on iOS 18.7.1 using LiveContainer) + +## Build + +```sh +make package FINALPACKAGE=1 +``` + +## Inject + +```sh +cyan -i infuse-8.4.2.ipa \ + -o infuse-8.4.2_patched.ipa \ + -f io.infuseteam.infuserootless_2.0_iphoneos-arm.deb \ + -u +``` + +## Screenshots + +![mobile.png](../../docs/screens/Infuse/mobile.png) \ No newline at end of file diff --git a/Infuse/Infuse-tvOS/.gitignore b/Infuse/Infuse-tvOS/.gitignore new file mode 100644 index 0000000..faf8687 --- /dev/null +++ b/Infuse/Infuse-tvOS/.gitignore @@ -0,0 +1,3 @@ +.theos/ +packages/ +.DS_Store diff --git a/Infuse/Infuse-tvOS/Infuse.plist b/Infuse/Infuse-tvOS/Infuse.plist new file mode 100644 index 0000000..f8411b4 --- /dev/null +++ b/Infuse/Infuse-tvOS/Infuse.plist @@ -0,0 +1,7 @@ +{ + Filter = { + Bundles = ( + "com.firecore.infuse", + ); + }; +} \ No newline at end of file diff --git a/Infuse/Infuse-tvOS/Makefile b/Infuse/Infuse-tvOS/Makefile new file mode 100644 index 0000000..eea5ee5 --- /dev/null +++ b/Infuse/Infuse-tvOS/Makefile @@ -0,0 +1,17 @@ +TARGET = appletv:latest:18.3 +ARCHS = arm64 +INSTALL_TARGET_PROCESSES = infuse +THEOS_PACKAGE_SCHEME = rootless + +include $(THEOS)/makefiles/common.mk + +TWEAK_NAME = Infuse + +Infuse_FILES = Tweak.x +Infuse_CFLAGS = -fobjc-arc +Infuse_FRAMEWORKS = Foundation UIKit + +include $(THEOS_MAKE_PATH)/tweak.mk +test-print: + @echo "ARCH is $(THEOS_PACKAGE_ARCH)" + @echo "CONTROL is $(_THEOS_DEB_PACKAGE_CONTROL_PATH)" diff --git a/Infuse/Infuse-tvOS/Tweak.x b/Infuse/Infuse-tvOS/Tweak.x new file mode 100644 index 0000000..59f10fc --- /dev/null +++ b/Infuse/Infuse-tvOS/Tweak.x @@ -0,0 +1,81 @@ +// changes : FCInAppPurchaseServiceFreemium block deleted, FCTraktIAPManager block deleted, layoutSubviews -> awakeFromNib on FCVersionView, and the dead return %orig lines after return statements cleaned up (they were unreachable in the old version too) + +#import +#import +#import + +%hook FCIAPGUIHelper ++(bool) isProAvailable { + return TRUE; +} ++(bool) isSubscriptionBought { + return TRUE; +} +%end + +%hook FCInAppPurchaseServiceBase +- (bool)isFeaturePurchased:(long long)arg1 tillDate:(id*)arg2 { + return 1; +} +- (bool)isFeaturePurchased:(long long)arg1 { + return 1; +} +%end + +%hook FCInAppPurchaseServiceDummy +- (bool)isFeaturePurchased:(long long)arg1 tillDate:(id*)arg2 { + return 1; +} +%end + +// REMOVED: FCInAppPurchaseServiceFreemium (class gone from binary, replaced by SK2) + +// SK2 IAP backend +%hook _TtC6infuse31InAppPurchaseServiceFreemiumSK2 +- (bool)isFeaturePurchased:(long long)arg1 tillDate:(id*)arg2 { + return 1; +} +- (long long)iapVersionStatus { + // FCUpgradeToProViewController.featureHasBought checks iapVersionStatus > 0 + return 1; +} +%end + +%hook FCProductCollectionCell +-(bool) featurePurchased { + return TRUE; +} +%end + +// REMOVED: FCTraktIAPManager (class gone from binary) + +%hook FCUpgradeToProViewController +-(bool) featureHasBought { + return TRUE; +} +%end + +// Add credits +@interface FCVersionView : UIView +@property (nonatomic, strong) UILabel *label; +@end + +%hook FCVersionView +- (void)awakeFromNib { + %orig; + UILabel *label = (UILabel *)[self valueForKey:@"label"]; + if ([label.text containsString:@"Infuse Pro"] && ![label.text hasPrefix:@"Infuse Team •"]) { + label.text = [NSString stringWithFormat:@"Infuse Team • %@", label.text]; + } +} +%end + +// iOS 16 Crash Fix +%hook CKContainer ++ (id)defaultContainer { + return nil; +} ++ (id)containerWithIdentifier:(id)arg1 { + return nil; +} +%end \ No newline at end of file diff --git a/Infuse/Infuse-tvOS/control b/Infuse/Infuse-tvOS/control new file mode 100644 index 0000000..80b47e5 --- /dev/null +++ b/Infuse/Infuse-tvOS/control @@ -0,0 +1,10 @@ +Package: io.infuseteam.infuserootless +Name: Infuse (Rootless) +Version: 2.0 +Architecture: appletvos-arm64 +Description: Unlock the full potential of Infuse +Maintainer: Infuse Team +Author: Infuse Team +Section: Tweaks +Depends: firmware +Conflicts: io.infuseteam.infuse, io.infuseteam.infuseroothide, io.infuseteam.infuselegacy, xyz.eshaydev.ignition, com.ippteam.infuse, com.strejda603.infuse6pro, xyz.eshaydev.infuse \ No newline at end of file diff --git a/Infuse/Infuse-tvOS/index.md b/Infuse/Infuse-tvOS/index.md new file mode 100644 index 0000000..ac1edff --- /dev/null +++ b/Infuse/Infuse-tvOS/index.md @@ -0,0 +1,26 @@ +# Infuse tvOS + +Unlock pro features in Infuse. + +- **App**: [Infuse](https://apps.apple.com/fr/app/infuse/id1136220934) +- **Tested version**: 8.2.4 +- **Target**: tvOS 18.3 (tested on tvOS 18.3) + +## Build + +```sh +make package FINALPACKAGE=1 +``` + +## Inject + +```sh +cyan -i infuse-8.2.4.ipa \ + -o infuse-8.2.4_patched.ipa \ + -f io.infuseteam.infuserootless_2.0_tvos-arm64.deb \ + -u +``` + +## Screenshots + +![../docs/screens/Infuse/settings.png](../docs/screens/Infuse/settings.png) diff --git a/README.md b/README.md index 01c5581..90ad52e 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ iOS tweaks built with [Theos](https://theos.dev), injected into IPAs via [cyan]( | [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 | +| [Infuse](Infuse/Infuse-tvOS/index.md) | Infuse 8.2.4 | tvOS 18.3 | +| [Infuse (iOS)](Infuse/Infuse-iOS/index.md) | Infuse 8.4.2 | iOS 18+ | ## Build diff --git a/docs/screens/Infuse/mobile.png b/docs/screens/Infuse/mobile.png new file mode 100644 index 0000000..a01ae8b Binary files /dev/null and b/docs/screens/Infuse/mobile.png differ diff --git a/docs/screens/Infuse/settings.png b/docs/screens/Infuse/settings.png new file mode 100644 index 0000000..3a38faf Binary files /dev/null and b/docs/screens/Infuse/settings.png differ