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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