diff --git a/README.md b/README.md index 72d770e..718185e 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@

StikJIT

-

~ A on-device JIT enabler for iOS versions 17.4+ (excluding iOS 18.4 beta 1), powered by idevice ~

+

A on-device JIT enabler for iOS versions 17.4+ (excluding iOS 18.4 beta 1), powered by idevice

@@ -33,7 +33,7 @@
## Requirements -[StossVPN](https://testflight.apple.com/join/hBUbg4ZJ) is required. This allows the device to connect to itself. +[StosVPN](https://testflight.apple.com/join/hBUbg4ZJ) is required. This allows the device to connect to itself. ## Features - On-device Just-In-Time (JIT) compilation for supported apps via [`idevice`](https://github.com/jkcoxson/idevice). diff --git a/StikJIT.xcodeproj/project.pbxproj b/StikJIT.xcodeproj/project.pbxproj index f19d859..0cddf18 100644 --- a/StikJIT.xcodeproj/project.pbxproj +++ b/StikJIT.xcodeproj/project.pbxproj @@ -6,11 +6,6 @@ objectVersion = 77; objects = { -/* Begin PBXBuildFile section */ - DC5716262D95648B0099302E /* em_proxy.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC5716242D9564760099302E /* em_proxy.xcframework */; }; - DC5716272D95648B0099302E /* em_proxy.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DC5716242D9564760099302E /* em_proxy.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; -/* End PBXBuildFile section */ - /* Begin PBXContainerItemProxy section */ DC6F1D492D94EADF0071B2B6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -28,20 +23,6 @@ }; /* End PBXContainerItemProxy section */ -/* Begin PBXCopyFilesBuildPhase section */ - DC5716282D95648B0099302E /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - DC5716272D95648B0099302E /* em_proxy.xcframework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - /* Begin PBXFileReference section */ DC5716242D9564760099302E /* em_proxy.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = em_proxy.xcframework; sourceTree = ""; }; DC6F1D372D94EADD0071B2B6 /* StikJIT.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = StikJIT.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -85,7 +66,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DC5716262D95648B0099302E /* em_proxy.xcframework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -145,7 +125,6 @@ DC6F1D332D94EADD0071B2B6 /* Sources */, DC6F1D342D94EADD0071B2B6 /* Frameworks */, DC6F1D352D94EADD0071B2B6 /* Resources */, - DC5716282D95648B0099302E /* Embed Frameworks */, ); buildRules = ( ); diff --git a/StikJIT/StikJIT-Bridging-Header.h b/StikJIT/StikJIT-Bridging-Header.h index c042347..f8d7974 100644 --- a/StikJIT/StikJIT-Bridging-Header.h +++ b/StikJIT/StikJIT-Bridging-Header.h @@ -4,3 +4,5 @@ #include "idevice/JITEnableContext.h" #include "idevice/idevice.h" +#include "idevice/em_proxy.h" + diff --git a/StikJIT/StikJITApp.swift b/StikJIT/StikJITApp.swift index f5de8c9..197e05a 100644 --- a/StikJIT/StikJITApp.swift +++ b/StikJIT/StikJITApp.swift @@ -7,7 +7,6 @@ import SwiftUI import Network -import em_proxy import UniformTypeIdentifiers let fileManager = FileManager.default diff --git a/StikJIT/Utilities/AppStoreIconFetcher.swift b/StikJIT/Utilities/AppStoreIconFetcher.swift index c093386..6542d51 100644 --- a/StikJIT/Utilities/AppStoreIconFetcher.swift +++ b/StikJIT/Utilities/AppStoreIconFetcher.swift @@ -19,15 +19,19 @@ class AppStoreIconFetcher { return } - iconFetchDispatchQueue.sync { + iconFetchDispatchQueue.async { do { let ans = try JITEnableContext.shared.getAppIcon(withBundleId: bundleID) - iconCache[bundleID] = ans - completion(ans) + DispatchQueue.main.async { + iconCache[bundleID] = ans + completion(ans) + } } catch { print("Failed to get icon: \(error)") - completion(nil) + DispatchQueue.main.async { + completion(nil) + } } } } -} +} diff --git a/StikJIT/idevice/em_proxy.h b/StikJIT/idevice/em_proxy.h new file mode 100644 index 0000000..fd09f4f --- /dev/null +++ b/StikJIT/idevice/em_proxy.h @@ -0,0 +1,40 @@ +// Jackson Coxson + +#include +#include +#include +#include +#include + + +/** + * Starts your emotional damage + * # Arguments + * * `bind_addr` - The UDP socket to listen to + * # Returns + * A handle to stop further emotional damage. + * Null on failure + * # Safety + * Don't be stupid + */ +int start_emotional_damage(const char *bind_addr); + +/** + * Stops further emotional damage + * # Arguments + * * `handle` - The coping mechanism generated by start_emotional_damage + * # Returns + * The knowledge of knowing that you couldn't handle failure + * # Safety + * Don't be stupid + */ +void stop_emotional_damage(void); + +/** + * Blocks until Wireguard is ready + * # Arguments + * * `timeout` - The timeout in miliseconds to wait for Wireguard + * # Returns + * 0 on success, -1 on failure + */ +int test_emotional_damage(int timeout); diff --git a/StikJIT/idevice/libem_proxy.a b/StikJIT/idevice/libem_proxy.a new file mode 100644 index 0000000..934bdf5 Binary files /dev/null and b/StikJIT/idevice/libem_proxy.a differ