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