From 299cce6f9d8acc4e9727e100fd665e6322630391 Mon Sep 17 00:00:00 2001 From: syto203 <26351342+syto203@users.noreply.github.com> Date: Tue, 23 Feb 2021 08:58:04 +0200 Subject: [PATCH] added using Substitute as an option --- .gitignore | 1 - README.md | 3 + install | 72 +++- module/bin/ipa_substitute.sh | 125 +++++++ module/common_substitute.mk | 70 ++++ .../CydiaSubstrate.framework/CydiaSubstrate | Bin 0 -> 52352 bytes .../Headers/substrate.h | 309 ++++++++++++++++++ .../lib/CydiaSubstrate.framework/Info.plist | Bin 0 -> 773 bytes module/lib/libsubstitute.0.dylib | Bin 0 -> 172416 bytes module/lib/libsubstitute.dylib | Bin 0 -> 172416 bytes 10 files changed, 565 insertions(+), 15 deletions(-) create mode 100755 module/bin/ipa_substitute.sh create mode 100644 module/common_substitute.mk create mode 100755 module/lib/CydiaSubstrate.framework/CydiaSubstrate create mode 100644 module/lib/CydiaSubstrate.framework/Headers/substrate.h create mode 100644 module/lib/CydiaSubstrate.framework/Info.plist create mode 100755 module/lib/libsubstitute.0.dylib create mode 100755 module/lib/libsubstitute.dylib diff --git a/.gitignore b/.gitignore index 1f7a179..315da9c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ module/bin/update -module/lib/CydiaSubstrate*.framework addons/*/.theos addons/*/obj diff --git a/README.md b/README.md index 92f046b..9ed7c74 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,10 @@ To begin developing your first jailed tweak, head over to [Installation](https:/ * Works with the latest and greatest - iOS 8 and up + with your choice of: - CydiaSubstrate.framework (instead of the outdated libsubstrate.dylib) + OR + - Latest [Substitute](https://apt.bingner.com/info/com.ex.substitute/.) * Functions as a module, so it plugs in to Theos. This means you can always use the latest version of Theos with it * Colored terminal output (see [Example output](#example-output)) * Uses `make package install` instead of a shell script --- just like in jailbroken tweaks diff --git a/install b/install index 6cb2f22..4922161 100755 --- a/install +++ b/install @@ -13,27 +13,71 @@ SUBSTRATE="lib/CydiaSubstrate_$SUBSTRATE_VERSION.framework" [ -d "$THEOS" ] || error "\"$THEOS\" is not a directory. Aborting…" -# Install Substrate -if [[ ! -d module/$SUBSTRATE ]]; then - echo "Downloading CydiaSubstrate.framework ($SUBSTRATE_VERSION)…" - curl -#Lo substrate.deb "http://apt.saurik.com/debs/mobilesubstrate_${SUBSTRATE_VERSION}_iphoneos-arm.deb" - ar -x substrate.deb data.tar.lzma - tar --lzma --strip-components 3 -xf data.tar.lzma "$SUBSTRATE_PATH" - rm -rf substrate.deb data.tar.lzma - # remove any older copies of Substrate before moving the new one into place - rm -rf module/lib/CydiaSubstrate*.framework - mv CydiaSubstrate.framework "module/$SUBSTRATE" - echo "Successfully installed CydiaSubstrate.framework" -fi -plutil -convert binary1 "module/$SUBSTRATE/Info.plist" || true -rm -rf "module/$SUBSTRATE/Libraries" "module/$SUBSTRATE/Commands" +echo -e "\n*Choose: \n 1) Install CydiaSubstrate.\nOR \n 2) Install Substitute. \n\nEnter a Number: " +read CHOICE; +if [ "$CHOICE" -eq 1 ]; then + # Install Substrate + if [[ ! -d module/$SUBSTRATE ]]; then + echo "Downloading CydiaSubstrate.framework ($SUBSTRATE_VERSION)…" + curl -#Lo substrate.deb "http://apt.saurik.com/debs/mobilesubstrate_${SUBSTRATE_VERSION}_iphoneos-arm.deb" + ar -x substrate.deb data.tar.lzma + tar --lzma --strip-components 3 -xf data.tar.lzma "$SUBSTRATE_PATH" + rm -rf substrate.deb data.tar.lzma + # remove any older copies of Substrate and Substitute before moving the new one into place + rm -rf module/lib/CydiaSubstrate*.framework + rm -f module/lib/libsubstitute.dylib + rm -f module/lib/libsubstitute.0.dylib + mv CydiaSubstrate.framework "module/$SUBSTRATE" + echo "Successfully installed CydiaSubstrate.framework" + fi + plutil -convert binary1 "module/$SUBSTRATE/Info.plist" || true + rm -rf "module/$SUBSTRATE/Libraries" "module/$SUBSTRATE/Commands" + +elif [ "$CHOICE" -eq 2 ]; then +# find 'com.ex.substitute' | list last one | using "sed" remove everything before ' ' +LATEST_SUBSTITUTE="$(wget -q -O - https://apt.bingner.com/debs/1443.00 | grep 'com.ex.substitute' | tail -1 | sed -e 's/.*\.*//')" +SUBSTITUTE_PATH="./usr/lib/libsubstitute.dylib" + if [ -z "${LATEST_SUBSTITUTE}" ]; then + LATEST_SUBSTITUTE=com.ex.substitute_2.0.7_iphoneos-arm.deb + fi +# Install Substitute + if [[ ! -d module/$SUBSTITUTE_PATH ]]; then + echo "Downloading Substitute ($LATEST_SUBSTITUTE)…" + curl -#Lo substitute.deb "https://apt.bingner.com/debs/1443.00/${LATEST_SUBSTITUTE}" + ar -x substitute.deb data.tar.lzma + tar --lzma --strip-components 2 -xf data.tar.lzma "$SUBSTITUTE_PATH" + rm -rf substitute.deb data.tar.lzma + # thinning the binary to remove arm64e + lipo -thin arm64 -output libsubstitute.dylib libsubstitute.dylib + # change LC_ID to run from rpath + install_name_tool -id "@rpath/libsubstitute.0.dylib" libsubstitute.dylib + # remove any older copies of Substrate before moving the new one into place + rm -rf module/lib/CydiaSubstrate${SUBSTRATE_VERSION}.framework + rm -f module/lib/libsubstitute.dylib + rm -f module/lib/libsubstitute.0.dylib + cp libsubstitute.dylib "module/lib/" + cp libsubstitute.dylib "module/lib/libsubstitute.0.dylib" + rm libsubstitute.dylib + # mv CydiaSubstrate_stub.framework "module/lib/CydiaSubstrate.framework" + echo "Successfully installed Substitute" + fi +fi # Install module ln -fs "$PWD/update" "module/bin/update" mkdir -p "$MODULE_PATH" rm -rf "$MODULE_PATH"/* cp -a module/* "$MODULE_PATH" +if [ "$CHOICE" -eq 1 ]; then mv "$MODULE_PATH/$SUBSTRATE" "$MODULE_PATH/lib/CydiaSubstrate.framework" +rm "${MODULE_PATH}bin/ipa_substitute.sh" +rm "${MODULE_PATH}common_substitute.mk" +elif [ "$CHOICE" -eq 2 ]; then +rm "${MODULE_PATH}bin/ipa.sh" +mv "${MODULE_PATH}bin/ipa_substitute.sh" "${MODULE_PATH}bin/ipa.sh" +rm "${MODULE_PATH}common.mk" +mv "${MODULE_PATH}common_substitute.mk" "${MODULE_PATH}common.mk" +fi echo "*" > "$MODULE_PATH/.gitignore" echo "Successfully installed module." diff --git a/module/bin/ipa_substitute.sh b/module/bin/ipa_substitute.sh new file mode 100755 index 0000000..4dd09fe --- /dev/null +++ b/module/bin/ipa_substitute.sh @@ -0,0 +1,125 @@ +#!/bin/bash + +source "$STAGE" + +function copy { + rsync -a "$@" --exclude _MTN --exclude .git --exclude .svn --exclude .DS_Store --exclude ._* +} + +if [[ -d $RESOURCES_DIR ]]; then + log 2 "Copying resources" + copy "$RESOURCES_DIR"/ "$appdir" --exclude "/Info.plist" +fi + +function change_bundle_id { + bundle_id=$(/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "$1") + /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $BUNDLE_ID${bundle_id#$app_bundle_id}" "$1" +} + +if [[ -n $BUNDLE_ID ]]; then + log 2 "Setting bundle ID" + export -f change_bundle_id + export app_bundle_id + find "$appdir" -name "*.appex" -print0 | xargs -I {} -0 bash -c "change_bundle_id '{}/Info.plist'" + /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $BUNDLE_ID" "$info_plist" +fi + +if [[ -n $DISPLAY_NAME ]]; then + log 2 "Setting display name" + /usr/libexec/PlistBuddy -c "Add :CFBundleDisplayName string" "$info_plist" + /usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName $DISPLAY_NAME" "$info_plist" +fi + +if [[ -f $RESOURCES_DIR/Info.plist ]]; then + log 2 "Merging Info.plist" + copy "$RESOURCES_DIR/Info.plist" "$STAGING_DIR" + /usr/libexec/PlistBuddy -c "Merge $info_plist" "$STAGING_DIR/Info.plist" + mv "$STAGING_DIR/Info.plist" "$appdir" +fi + +log 2 "Copying dependencies" +inject_files=("$DYLIB" $INJECT_DYLIBS) +copy_files=($EMBED_FRAMEWORKS $EMBED_LIBRARIES) +[[ $USE_CYCRIPT = 1 ]] && inject_files+=("$CYCRIPT") +[[ $USE_FLEX = 1 ]] && inject_files+=("$FLEX") +[[ $USE_OVERLAY = 1 ]] && inject_files+=("$OVERLAY") +[[ $GENERATOR == "MobileSubstrate" ]] && copy_files+=("$SUBSTRATE" "$LIBSUBSTRATE" "$LIBSUBSTRATE0") + +full_copy_path="$appdir/$COPY_PATH" +mkdir -p "$full_copy_path" +for file in "${inject_files[@]}" "${copy_files[@]}"; do + copy "$file" "$full_copy_path" +done + +log 3 "Injecting dependencies" +app_binary="$appdir/$(/usr/libexec/PlistBuddy -c "Print :CFBundleExecutable" "$info_plist")" +install_name_tool -add_rpath "@executable_path/$COPY_PATH" "$app_binary" +for file in "${inject_files[@]}"; do + filename=$(basename "$file") + install_name_tool -change "$STUB_SUBSTRATE_INSTALL_PATH" "$SUBSTRATE_INSTALL_PATH" "$full_copy_path/$filename" + "$INSERT_DYLIB" --inplace --all-yes "@rpath/$(basename "$file")" "$app_binary" + if [[ $? != 0 ]]; then + error "Failed to inject $filename into $app" + fi +done + +chmod +x "$app_binary" + +if [[ $_CODESIGN_IPA = 1 ]]; then + log 4 "Signing $app" + + if [[ ! -r $PROFILE ]]; then + bundleprofile=$(grep -Fl "iOS Team Provisioning Profile: $PROFILE" ~/Library/MobileDevice/Provisioning\ Profiles/* | head -1) + if [[ ! -r $bundleprofile ]]; then + error "Could not find profile '$PROFILE'" + fi + PROFILE="$bundleprofile" + fi + + if [[ $_EMBED_PROFILE = 1 ]]; then + copy "$PROFILE" "$appdir/embedded.mobileprovision" + fi + + security cms -Di "$PROFILE" -o "$PROFILE_FILE" + if [[ $? != 0 ]]; then + error "Failed to generate entitlements" + fi + + if [[ -n $DEV_CERT_NAME ]]; then + codesign_name=$(security find-certificate -c "$DEV_CERT_NAME" login.keychain | grep alis | cut -f4 -d\" | cut -f1 -d\") + else + # http://maniak-dobrii.com/extracting-stuff-from-provisioning-profile/ + codesign_name=$(/usr/libexec/PlistBuddy -c "Print :DeveloperCertificates:0" "$PROFILE_FILE" | openssl x509 -noout -inform DER -subject | sed -E 's/^.*CN=([^\/]*)\/.*$/\1/') + fi + if [[ -z $codesign_name ]]; then + error "Failed to get codesign name" + fi + + /usr/libexec/PlistBuddy -x -c "Print :Entitlements" "$PROFILE_FILE" > "$ENTITLEMENTS" + if [[ $? != 0 ]]; then + error "Failed to generate entitlements" + fi + + find "$appdir" \( -name "*.framework" -or -name "*.dylib" -or -name "*.appex" \) -not -path "*.framework/*" -print0 | xargs -0 codesign --entitlements "$ENTITLEMENTS" -fs "$codesign_name" + if [[ $? != 0 ]]; then + error "Codesign failed" + fi + + codesign -fs "$codesign_name" --entitlements "$ENTITLEMENTS" "$appdir" + if [[ $? != 0 ]]; then + error "Failed to sign $app" + fi +fi + +cd "$STAGING_DIR" +if [[ "${OUTPUT_NAME##*.}" = "app" ]]; then + cp -a "$appdir" "$PACKAGES_DIR/$OUTPUT_NAME" +else + log 4 "Repacking $app" + zip -yqr$COMPRESSION "$OUTPUT_NAME" Payload/ + if [[ $? != 0 ]]; then + error "Failed to repack $app" + fi + rm -rf "$PACKAGES_DIR"/*.ipa "$PACKAGES_DIR"/*.app + mv "$OUTPUT_NAME" "$PACKAGES_DIR/" +fi diff --git a/module/common_substitute.mk b/module/common_substitute.mk new file mode 100644 index 0000000..5fc0d04 --- /dev/null +++ b/module/common_substitute.mk @@ -0,0 +1,70 @@ +# Module paths +THEOS_JAILED_PATH := $(THEOS_MODULE_PATH)/jailed +THEOS_JAILED_BIN := $(THEOS_JAILED_PATH)/bin +THEOS_JAILED_LIB := $(THEOS_JAILED_PATH)/lib + +# Shell scripts +export MESSAGES := $(THEOS_JAILED_BIN)/messages.sh +export STAGE := $(THEOS_JAILED_BIN)/stage.sh +export INSERT_DYLIB := $(THEOS_JAILED_BIN)/insert_dylib +export INFO_TEMPLATE := $(THEOS_JAILED_BIN)/info.txt +export INFO_SCRIPT := $(THEOS_JAILED_BIN)/info.sh +export IPA_SCRIPT := $(THEOS_JAILED_BIN)/ipa.sh +export EXO_SCRIPT := $(THEOS_JAILED_BIN)/exo.sh +export INSTALL_SCRIPT := $(THEOS_JAILED_BIN)/install.sh +export UPDATE_SCRIPT := $(THEOS_JAILED_BIN)/update + +# Directories +export RESOURCES_DIR ?= Resources +export STAGING_DIR = $(THEOS_STAGING_DIR) +export PACKAGES_DIR = $(THEOS_PROJECT_DIR)/$(THEOS_PACKAGE_DIR) + +# Resources +export COPY_PATH ?= Frameworks +export IPA ?= $(strip $($(TWEAK_NAME)_IPA)) +export DYLIB ?= $(THEOS_OBJ_DIR)/$(TWEAK_NAME).dylib +export INJECT_DYLIBS = $($(TWEAK_NAME)_INJECT_DYLIBS) +export OUTPUT_NAME ?= $(TWEAK_NAME)$(_THEOS_INTERNAL_PACKAGE_VERSION)-syto203-iOS14.ipa +export EMBED_FRAMEWORKS = $(strip $($(TWEAK_NAME)_EMBED_FRAMEWORKS)) +export EMBED_LIBRARIES = $(strip $($(TWEAK_NAME)_EMBED_LIBRARIES)) + +# Codesigning +export PROFILE ?= * +export PROFILE_FILE = $(STAGING_DIR)/profile.plist +export ENTITLEMENTS = $(STAGING_DIR)/entitlements.plist +export _CODESIGN_IPA = $(call __theos_bool,$(or $(CODESIGN_IPA),$(_THEOS_TRUE))) +export _EMBED_PROFILE = $(call __theos_bool,$(or $(EMBED_PROFILE),$(_THEOS_TRUE))) + +# Cycript +export USE_CYCRIPT = $(call __theos_bool,$(or $($(TWEAK_NAME)_USE_CYCRIPT),$(DEBUG))) +export CYCRIPT ?= $(THEOS_JAILED_LIB)/Cycript.dylib + +# FLEX +export USE_FLEX = $(call __theos_bool,$($(TWEAK_NAME)_USE_FLEX)) +export FLEX ?= $(THEOS_JAILED_LIB)/FLEX.dylib + +# Overlay +export USE_OVERLAY = $(call __theos_bool,$($(TWEAK_NAME)_USE_OVERLAY)) +export OVERLAY ?= $(THEOS_JAILED_LIB)/Overlay.dylib + +# # CydiaSubstrate +# export GENERATOR = $(or $($(TWEAK_NAME)_LOGOS_DEFAULT_GENERATOR),$(LOGOS_DEFAULT_GENERATOR),$(_THEOS_TARGET_LOGOS_DEFAULT_GENERATOR),MobileSubstrate) +# export SUBSTRATE ?= $(THEOS_JAILED_LIB)/CydiaSubstrate.framework +# export STUB_SUBSTRATE_INSTALL_PATH = /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate +# export SUBSTRATE_INSTALL_PATH = @rpath/CydiaSubstrate.framework/CydiaSubstrate + +# LibSubstitute +export GENERATOR = $(or $($(TWEAK_NAME)_LOGOS_DEFAULT_GENERATOR),$(LOGOS_DEFAULT_GENERATOR),$(_THEOS_TARGET_LOGOS_DEFAULT_GENERATOR),MobileSubstrate) +export SUBSTRATE ?= $(THEOS_JAILED_LIB)/CydiaSubstrate.framework +export LIBSUBSTRATE = $(THEOS_JAILED_LIB)/libsubstitute.dylib +export LIBSUBSTRATE0 = $(THEOS_JAILED_LIB)/libsubstitute.0.dylib +export STUB_SUBSTRATE_INSTALL_PATH = /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate +export SUBSTRATE_INSTALL_PATH = @rpath/CydiaSubstrate.framework/CydiaSubstrate + +# Extensify Exo +export EXO_STAGING_DIR = $(STAGING_DIR)/$(TWEAK_NAME) +export EXO_RESOURCES_DIR = $(EXO_STAGING_DIR)/ExoResources +export EXO_OUTPUT_NAME = $(TWEAK_NAME)$(_THEOS_INTERNAL_PACKAGE_VERSION).zip + +# Miscellaneous +export TWEAK_NAME BUNDLE_ID DEV_CERT_NAME DISPLAY_NAME PRINT_FORMAT_MAKING PRINT_FORMAT_STAGE PRINT_FORMAT_ERROR _THEOS_VERBOSE _THEOS_RSYNC_EXCLUDE_COMMANDLINE diff --git a/module/lib/CydiaSubstrate.framework/CydiaSubstrate b/module/lib/CydiaSubstrate.framework/CydiaSubstrate new file mode 100755 index 0000000000000000000000000000000000000000..2da7647785afc2f360beacb7ec552eb5dc2407e4 GIT binary patch literal 52352 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 CaR(j% literal 0 HcmV?d00001 diff --git a/module/lib/CydiaSubstrate.framework/Headers/substrate.h b/module/lib/CydiaSubstrate.framework/Headers/substrate.h new file mode 100644 index 0000000..b9232e2 --- /dev/null +++ b/module/lib/CydiaSubstrate.framework/Headers/substrate.h @@ -0,0 +1,309 @@ +/* Cydia Substrate - Powerful Code Insertion Platform + * Copyright (C) 2008-2011 Jay Freeman (saurik) +*/ + +/* Modified from git revision 904d20f414c79a2716680f4d29d833e6ce0dcea2 by comex + * to act as a compatibility shim for libsubstitute; the changes consist of + * removing MSHookMessage, MSHookProcess (for now), and some internal + * functions, and setting custom asm names for all non-inline functions. + * + * The purpose of the custom asm names is to allow the shim to be applied at + * either the source or binary level (the latter mainly for testing purposes). + * Normally, due to two-level name lookup, exposing the regular names in + * libsubstitute.dylib would suffice for this, even if it's loaded in the same + * process as Substrate, but not with DYLD_FORCE_FLAT_NAMESPACE etc. + * Therefore, making a binary use this requires hacking it up with sed. With + * source, just put the directory containing this file in your include path. + */ + +/* GNU Lesser General Public License, Version 3 {{{ */ +/* + * Substrate is free software: you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Substrate is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Substrate. If not, see . +**/ +/* }}} */ + +#ifndef SUBSTRATE_H_ +#define SUBSTRATE_H_ + +#ifdef __APPLE__ +#ifdef __cplusplus +extern "C" { +#endif +#include +#ifdef __cplusplus +} +#endif + +#include +#include +#endif + +#include +#include + +#define _finline \ + inline __attribute__((__always_inline__)) +#define _disused \ + __attribute__((__unused__)) + +#define _extern \ + extern "C" __attribute__((__visibility__("default"))) + +#ifdef __cplusplus +#define _default(value) = value +#else +#define _default(value) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef const void *MSImageRef; + +MSImageRef MSGetImageByName(const char *file) +__asm__("SubGetImageByName"); +void *MSFindSymbol(MSImageRef image, const char *name) +__asm__("SubFindSymbol"); + +void MSHookFunction(void *symbol, void *replace, void **result) +__asm__("SubHookFunction"); + +void MSHookMemory(void *target, const void *data, size_t size) +__asm__("SubHookMemory"); + +#ifdef __APPLE__ +void MSHookMessageEx(Class _class, SEL sel, IMP imp, IMP *result) +__asm__("SubHookMessageEx"); +#endif + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus + +#ifdef __APPLE__ + +namespace etl { + +template +struct Case { + static char value[Case_ + 1]; +}; + +typedef Case Yes; +typedef Case No; + +namespace be { + template + static Yes CheckClass_(void (Checked_::*)()); + + template + static No CheckClass_(...); +} + +template +struct IsClass { + void gcc32(); + + static const bool value = (sizeof(be::CheckClass_(0).value) == sizeof(Yes::value)); +}; + +} + +#ifdef __arm__ +template +__attribute__((__deprecated__)) +static inline Type_ *MSHookMessage(Class _class, SEL sel, Type_ *imp, const char *prefix = NULL) { + return reinterpret_cast(MSHookMessage(_class, sel, reinterpret_cast(imp), prefix)); +} +#endif + +template +static inline void MSHookMessage(Class _class, SEL sel, Type_ *imp, Type_ **result) { + return MSHookMessageEx(_class, sel, reinterpret_cast(imp), reinterpret_cast(result)); +} + +template +static inline Type_ &MSHookIvar(id self, const char *name) { + Ivar ivar(class_getInstanceVariable(object_getClass(self), name)); + void *pointer(ivar == NULL ? NULL : reinterpret_cast(self) + ivar_getOffset(ivar)); + return *reinterpret_cast(pointer); +} + +#define MSAddMessage0(_class, type, arg0) \ + class_addMethod($ ## _class, @selector(arg0), (IMP) &$ ## _class ## $ ## arg0, type); +#define MSAddMessage1(_class, type, arg0) \ + class_addMethod($ ## _class, @selector(arg0:), (IMP) &$ ## _class ## $ ## arg0 ## $, type); +#define MSAddMessage2(_class, type, arg0, arg1) \ + class_addMethod($ ## _class, @selector(arg0:arg1:), (IMP) &$ ## _class ## $ ## arg0 ## $ ## arg1 ## $, type); +#define MSAddMessage3(_class, type, arg0, arg1, arg2) \ + class_addMethod($ ## _class, @selector(arg0:arg1:arg2:), (IMP) &$ ## _class ## $ ## arg0 ## $ ## arg1 ## $ ## arg2 ## $, type); +#define MSAddMessage4(_class, type, arg0, arg1, arg2, arg3) \ + class_addMethod($ ## _class, @selector(arg0:arg1:arg2:arg3:), (IMP) &$ ## _class ## $ ## arg0 ## $ ## arg1 ## $ ## arg2 ## $ ## arg3 ## $, type); +#define MSAddMessage5(_class, type, arg0, arg1, arg2, arg3, arg4) \ + class_addMethod($ ## _class, @selector(arg0:arg1:arg2:arg3:arg4:), (IMP) &$ ## _class ## $ ## arg0 ## $ ## arg1 ## $ ## arg2 ## $ ## arg3 ## $ ## arg4 ## $, type); +#define MSAddMessage6(_class, type, arg0, arg1, arg2, arg3, arg4, arg5) \ + class_addMethod($ ## _class, @selector(arg0:arg1:arg2:arg3:arg4:arg5:), (IMP) &$ ## _class ## $ ## arg0 ## $ ## arg1 ## $ ## arg2 ## $ ## arg3 ## $ ## arg4 ## $ ## arg5 ## $, type); + +#define MSHookMessage0(_class, arg0) \ + MSHookMessage($ ## _class, @selector(arg0), MSHake(_class ## $ ## arg0)) +#define MSHookMessage1(_class, arg0) \ + MSHookMessage($ ## _class, @selector(arg0:), MSHake(_class ## $ ## arg0 ## $)) +#define MSHookMessage2(_class, arg0, arg1) \ + MSHookMessage($ ## _class, @selector(arg0:arg1:), MSHake(_class ## $ ## arg0 ## $ ## arg1 ## $)) +#define MSHookMessage3(_class, arg0, arg1, arg2) \ + MSHookMessage($ ## _class, @selector(arg0:arg1:arg2:), MSHake(_class ## $ ## arg0 ## $ ## arg1 ## $ ## arg2 ## $)) +#define MSHookMessage4(_class, arg0, arg1, arg2, arg3) \ + MSHookMessage($ ## _class, @selector(arg0:arg1:arg2:arg3:), MSHake(_class ## $ ## arg0 ## $ ## arg1 ## $ ## arg2 ## $ ## arg3 ## $)) +#define MSHookMessage5(_class, arg0, arg1, arg2, arg3, arg4) \ + MSHookMessage($ ## _class, @selector(arg0:arg1:arg2:arg3:arg4:), MSHake(_class ## $ ## arg0 ## $ ## arg1 ## $ ## arg2 ## $ ## arg3 ## $ ## arg4 ## $)) +#define MSHookMessage6(_class, arg0, arg1, arg2, arg3, arg4, arg5) \ + MSHookMessage($ ## _class, @selector(arg0:arg1:arg2:arg3:arg4:arg5:), MSHake(_class ## $ ## arg0 ## $ ## arg1 ## $ ## arg2 ## $ ## arg3 ## $ ## arg4 ## $ ## arg5 ## $)) + +#define MSRegister_(name, dollar, colon) \ + static class C_$ ## name ## $ ## dollar { public: _finline C_$ ## name ## $ ##dollar() { \ + MSHookMessage($ ## name, @selector(colon), MSHake(name ## $ ## dollar)); \ + } } V_$ ## name ## $ ## dollar; \ + +#define MSIgnore_(name, dollar, colon) + +#define MSMessage_(extra, type, _class, name, dollar, colon, call, args...) \ + static type _$ ## name ## $ ## dollar(Class _cls, type (*_old)(_class, SEL, ## args, ...), type (*_spr)(struct objc_super *, SEL, ## args, ...), _class self, SEL _cmd, ## args); \ + MSHook(type, name ## $ ## dollar, _class self, SEL _cmd, ## args) { \ + Class const _cls($ ## name); \ + type (* const _old)(_class, SEL, ## args, ...) = reinterpret_cast(_ ## name ## $ ## dollar); \ + typedef type (*msgSendSuper_t)(struct objc_super *, SEL, ## args, ...); \ + msgSendSuper_t const _spr(::etl::IsClass::value ? reinterpret_cast(&objc_msgSendSuper_stret) : reinterpret_cast(&objc_msgSendSuper)); \ + return _$ ## name ## $ ## dollar call; \ + } \ + extra(name, dollar, colon) \ + static _finline type _$ ## name ## $ ## dollar(Class _cls, type (*_old)(_class, SEL, ## args, ...), type (*_spr)(struct objc_super *, SEL, ## args, ...), _class self, SEL _cmd, ## args) + +/* for((x=1;x!=7;++x)){ echo -n "#define MSMessage${x}_(extra, type, _class, name";for((y=0;y!=x;++y));do echo -n ", sel$y";done;for((y=0;y!=x;++y));do echo -n ", type$y, arg$y";done;echo ") \\";echo -n " MSMessage_(extra, type, _class, name,";for((y=0;y!=x;++y));do if [[ $y -ne 0 ]];then echo -n " ##";fi;echo -n " sel$y ## $";done;echo -n ", ";for((y=0;y!=x;++y));do echo -n "sel$y:";done;echo -n ", (_cls, _old, _spr, self, _cmd";for((y=0;y!=x;++y));do echo -n ", arg$y";done;echo -n ")";for((y=0;y!=x;++y));do echo -n ", type$y arg$y";done;echo ")";} */ + +#define MSMessage0_(extra, type, _class, name, sel0) \ + MSMessage_(extra, type, _class, name, sel0, sel0, (_cls, _old, _spr, self, _cmd)) +#define MSMessage1_(extra, type, _class, name, sel0, type0, arg0) \ + MSMessage_(extra, type, _class, name, sel0 ## $, sel0:, (_cls, _old, _spr, self, _cmd, arg0), type0 arg0) +#define MSMessage2_(extra, type, _class, name, sel0, sel1, type0, arg0, type1, arg1) \ + MSMessage_(extra, type, _class, name, sel0 ## $ ## sel1 ## $, sel0:sel1:, (_cls, _old, _spr, self, _cmd, arg0, arg1), type0 arg0, type1 arg1) +#define MSMessage3_(extra, type, _class, name, sel0, sel1, sel2, type0, arg0, type1, arg1, type2, arg2) \ + MSMessage_(extra, type, _class, name, sel0 ## $ ## sel1 ## $ ## sel2 ## $, sel0:sel1:sel2:, (_cls, _old, _spr, self, _cmd, arg0, arg1, arg2), type0 arg0, type1 arg1, type2 arg2) +#define MSMessage4_(extra, type, _class, name, sel0, sel1, sel2, sel3, type0, arg0, type1, arg1, type2, arg2, type3, arg3) \ + MSMessage_(extra, type, _class, name, sel0 ## $ ## sel1 ## $ ## sel2 ## $ ## sel3 ## $, sel0:sel1:sel2:sel3:, (_cls, _old, _spr, self, _cmd, arg0, arg1, arg2, arg3), type0 arg0, type1 arg1, type2 arg2, type3 arg3) +#define MSMessage5_(extra, type, _class, name, sel0, sel1, sel2, sel3, sel4, type0, arg0, type1, arg1, type2, arg2, type3, arg3, type4, arg4) \ + MSMessage_(extra, type, _class, name, sel0 ## $ ## sel1 ## $ ## sel2 ## $ ## sel3 ## $ ## sel4 ## $, sel0:sel1:sel2:sel3:sel4:, (_cls, _old, _spr, self, _cmd, arg0, arg1, arg2, arg3, arg4), type0 arg0, type1 arg1, type2 arg2, type3 arg3, type4 arg4) +#define MSMessage6_(extra, type, _class, name, sel0, sel1, sel2, sel3, sel4, sel5, type0, arg0, type1, arg1, type2, arg2, type3, arg3, type4, arg4, type5, arg5) \ + MSMessage_(extra, type, _class, name, sel0 ## $ ## sel1 ## $ ## sel2 ## $ ## sel3 ## $ ## sel4 ## $ ## sel5 ## $, sel0:sel1:sel2:sel3:sel4:sel5:, (_cls, _old, _spr, self, _cmd, arg0, arg1, arg2, arg3, arg4, arg5), type0 arg0, type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) + +#define MSInstanceMessage0(type, _class, args...) MSMessage0_(MSIgnore_, type, _class *, _class, ## args) +#define MSInstanceMessage1(type, _class, args...) MSMessage1_(MSIgnore_, type, _class *, _class, ## args) +#define MSInstanceMessage2(type, _class, args...) MSMessage2_(MSIgnore_, type, _class *, _class, ## args) +#define MSInstanceMessage3(type, _class, args...) MSMessage3_(MSIgnore_, type, _class *, _class, ## args) +#define MSInstanceMessage4(type, _class, args...) MSMessage4_(MSIgnore_, type, _class *, _class, ## args) +#define MSInstanceMessage5(type, _class, args...) MSMessage5_(MSIgnore_, type, _class *, _class, ## args) +#define MSInstanceMessage6(type, _class, args...) MSMessage6_(MSIgnore_, type, _class *, _class, ## args) + +#define MSClassMessage0(type, _class, args...) MSMessage0_(MSIgnore_, type, Class, $ ## _class, ## args) +#define MSClassMessage1(type, _class, args...) MSMessage1_(MSIgnore_, type, Class, $ ## _class, ## args) +#define MSClassMessage2(type, _class, args...) MSMessage2_(MSIgnore_, type, Class, $ ## _class, ## args) +#define MSClassMessage3(type, _class, args...) MSMessage3_(MSIgnore_, type, Class, $ ## _class, ## args) +#define MSClassMessage4(type, _class, args...) MSMessage4_(MSIgnore_, type, Class, $ ## _class, ## args) +#define MSClassMessage5(type, _class, args...) MSMessage5_(MSIgnore_, type, Class, $ ## _class, ## args) +#define MSClassMessage6(type, _class, args...) MSMessage6_(MSIgnore_, type, Class, $ ## _class, ## args) + +#define MSInstanceMessageHook0(type, _class, args...) MSMessage0_(MSRegister_, type, _class *, _class, ## args) +#define MSInstanceMessageHook1(type, _class, args...) MSMessage1_(MSRegister_, type, _class *, _class, ## args) +#define MSInstanceMessageHook2(type, _class, args...) MSMessage2_(MSRegister_, type, _class *, _class, ## args) +#define MSInstanceMessageHook3(type, _class, args...) MSMessage3_(MSRegister_, type, _class *, _class, ## args) +#define MSInstanceMessageHook4(type, _class, args...) MSMessage4_(MSRegister_, type, _class *, _class, ## args) +#define MSInstanceMessageHook5(type, _class, args...) MSMessage5_(MSRegister_, type, _class *, _class, ## args) +#define MSInstanceMessageHook6(type, _class, args...) MSMessage6_(MSRegister_, type, _class *, _class, ## args) + +#define MSClassMessageHook0(type, _class, args...) MSMessage0_(MSRegister_, type, Class, $ ## _class, ## args) +#define MSClassMessageHook1(type, _class, args...) MSMessage1_(MSRegister_, type, Class, $ ## _class, ## args) +#define MSClassMessageHook2(type, _class, args...) MSMessage2_(MSRegister_, type, Class, $ ## _class, ## args) +#define MSClassMessageHook3(type, _class, args...) MSMessage3_(MSRegister_, type, Class, $ ## _class, ## args) +#define MSClassMessageHook4(type, _class, args...) MSMessage4_(MSRegister_, type, Class, $ ## _class, ## args) +#define MSClassMessageHook5(type, _class, args...) MSMessage5_(MSRegister_, type, Class, $ ## _class, ## args) +#define MSClassMessageHook6(type, _class, args...) MSMessage6_(MSRegister_, type, Class, $ ## _class, ## args) + +#define MSOldCall(args...) \ + _old(self, _cmd, ## args) +#define MSSuperCall(args...) \ + _spr(& (struct objc_super) {self, class_getSuperclass(_cls)}, _cmd, ## args) + +#define MSIvarHook(type, name) \ + type &name(MSHookIvar(self, #name)) + +#define MSClassHook(name) \ + @class name; \ + static Class $ ## name = objc_getClass(#name); +#define MSMetaClassHook(name) \ + @class name; \ + static Class $$ ## name = object_getClass($ ## name); + +#endif/*__APPLE__*/ + +template +static inline void MSHookFunction(Type_ *symbol, Type_ *replace, Type_ **result) { + return MSHookFunction( + reinterpret_cast(symbol), + reinterpret_cast(replace), + reinterpret_cast(result) + ); +} + +template +static inline void MSHookFunction(Type_ *symbol, Type_ *replace) { + return MSHookFunction(symbol, replace, reinterpret_cast(NULL)); +} + +template +static inline void MSHookSymbol(Type_ *&value, const char *name, MSImageRef image = NULL) { + value = reinterpret_cast(MSFindSymbol(image, name)); +} + +template +static inline void MSHookFunction(const char *name, Type_ *replace, Type_ **result = NULL) { + Type_ *symbol; + MSHookSymbol(symbol, name); + return MSHookFunction(symbol, replace, result); +} + +#endif + +#define MSHook(type, name, args...) \ + _disused static type (*_ ## name)(args); \ + static type $ ## name(args) + +#ifdef __cplusplus +#define MSHake(name) \ + &$ ## name, &_ ## name +#else +#define MSHake(name) \ + &$ ## name, (void **) &_ ## name +#endif + +#define MSInitialize \ + __attribute__((__constructor__)) static void _MSInitialize(void) + +#define Foundation_f "/System/Library/Frameworks/Foundation.framework/Foundation" +#define UIKit_f "/System/Library/Frameworks/UIKit.framework/UIKit" +#define JavaScriptCore_f "/System/Library/PrivateFrameworks/JavaScriptCore.framework/JavaScriptCore" +#define IOKit_f "/System/Library/Frameworks/IOKit.framework/IOKit" + +#endif//SUBSTRATE_H_ diff --git a/module/lib/CydiaSubstrate.framework/Info.plist b/module/lib/CydiaSubstrate.framework/Info.plist new file mode 100644 index 0000000000000000000000000000000000000000..c09dc1ca2fe12bbbf1ffd39723dfd789df6fb67f GIT binary patch literal 773 zcmY*W%Wl&^6!i?R0HtvnN*}cJ!JC3*w@GOiEYg^wD3pZQApwP&i9L0Pjy=YYLZl*u z5F1$W0W8Xz4L`sSbX$ofJNEnmlf+iaZ0Sowi3w5X$mzaTLH~$4{I*l{$Uq z?9jR4w3r#mo*%t1Ha;;qesOAgW_E7=^4yiH*RJ1KFvRRyM5wia%x&W0iq=DhI8j_* zi(HFh74KroJO{gB4cmmdhB%UN_upVM3Q?QlBgK-%rDTg>-w>x0Wy#%QDltRuM}FrC z_5+@^67~^tc!z8PtH|6zHr6{HuTCaaZJYUF?9@V^xb{&p@;pvst4dM0#e63)#B}0} zP0v)l$Q+N*?qq3IPo%vUZw_#On#`au@M~(hr+%vHJnae_s@^o2gtBCm6>Jvrep*Eo;Bsgd;%7y&WYTmA4ceB{B2-2c< z5c(+O8<}CgEwz2*TFmt*a(ATv722{S>+2hhvZhG#{-q|VZnN&sK2{8I-eiu1Jda|D zXT4nn5~aJ2Wb#h7q!@BTSt+b6t>&7<>-t!rD>+GNC8!H@Wl`a}#lqd3yre7qnr}C6 zi9m$=x9iAvmUBW%$O~n`7WRZM!Vlr6a47r*!(bLHfP3H}cmZ}m1m1#A;4AnJ4!|M! x1^&Pk9D*4*3di6qoQDr!1vcSx_!2Vs8t%b&@ICwhKMK7AK|cz2;ur_``5%+7?EnA( literal 0 HcmV?d00001 diff --git a/module/lib/libsubstitute.0.dylib b/module/lib/libsubstitute.0.dylib new file mode 100755 index 0000000000000000000000000000000000000000..5e0231c081165d41c8727799ff38235fc1340c6c GIT binary patch literal 172416 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 z%0D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 z%0D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