Browse Source

run firmware.sh in the proper location. unlink a bunch of cycript stuff and link inject_critical_d into /usr/bin/cycript also make symbolic link that will allow scp to work. Added nitoTV.deb installation. it makes it easier to update nitoTV build and works around some weird launch issues that were occurring. added missing xcasset folder. Updated tweakinject to fix a major bug where it was only allowing one lib to inject per process

Kevin Bradley 5 years ago
parent
commit
971fb2d6ea
40 changed files with 248 additions and 16 deletions
  1. BIN
      Meridian/Meridian/bootstrap/meridian-bootstrap.tar
  2. BIN
      Meridian/Meridian/bootstrap/meridian-bootstrap/meridian/jailbreakd/jailbreakd
  3. 1 1
      Meridian/Meridian/build_time
  4. 23 3
      Meridian/Meridian/jailbreak.m
  5. 21 0
      Meridian/meridian.xcodeproj/project.pbxproj
  6. BIN
      Meridian/meridian.xcodeproj/project.xcworkspace/xcuserdata/kevinbradley.xcuserdatad/UserInterfaceState.xcuserstate
  7. 10 2
      Meridian/meridian.xcodeproj/xcuserdata/kevinbradley.xcuserdatad/xcschemes/xcschememanagement.plist
  8. 16 0
      Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json
  9. 6 0
      Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json
  10. 17 0
      Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json
  11. 16 0
      Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json
  12. 6 0
      Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json
  13. 16 0
      Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json
  14. 6 0
      Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json
  15. 6 0
      Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json
  16. 17 0
      Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json
  17. 6 0
      Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json
  18. 16 0
      Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json
  19. 6 0
      Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json
  20. BIN
      Meridian/meridianTV/Assets.xcassets/LaunchImage.launchimage/launchImage-1.png
  21. BIN
      Meridian/meridianTV/Assets.xcassets/LaunchImage.launchimage/launchImage.png
  22. 21 0
      Meridian/meridianTV/Assets.xcassets/back.imageset/Contents.json
  23. BIN
      Meridian/meridianTV/Assets.xcassets/back.imageset/back.png
  24. 12 0
      Meridian/meridianTV/Assets.xcassets/first.imageset/Contents.json
  25. BIN
      Meridian/meridianTV/Assets.xcassets/first.imageset/first.pdf
  26. 12 0
      Meridian/meridianTV/Assets.xcassets/second.imageset/Contents.json
  27. BIN
      Meridian/meridianTV/Assets.xcassets/second.imageset/second.pdf
  28. BIN
      Meridian/meridianTV/bootstrap.tar.gz
  29. 1 1
      Meridian/meridianTV/electra/the fun part/bootstrap.c
  30. 1 1
      Meridian/meridianTV/electra_extras/sbinject/.theos/_/DEBIAN/control
  31. BIN
      Meridian/meridianTV/electra_extras/sbinject/.theos/_/usr/lib/TweakInject.dylib
  32. BIN
      Meridian/meridianTV/electra_extras/sbinject/.theos/fakeroot
  33. 1 1
      Meridian/meridianTV/electra_extras/sbinject/.theos/last_package
  34. BIN
      Meridian/meridianTV/electra_extras/sbinject/.theos/obj/appletv/debug/TweakInject.dylib
  35. BIN
      Meridian/meridianTV/electra_extras/sbinject/.theos/obj/appletv/debug/arm64/TweakInject.dylib
  36. 1 1
      Meridian/meridianTV/electra_extras/sbinject/Makefile
  37. 10 6
      Meridian/meridianTV/electra_extras/sbinject/SBInject.x
  38. BIN
      Meridian/meridianTV/nitotv.deb
  39. BIN
      Meridian/meridianTV/nitotv_2.2-11_appletvos-arm64.deb
  40. 0 0
      Meridian/tvos_make.sh

BIN
Meridian/Meridian/bootstrap/meridian-bootstrap.tar


BIN
Meridian/Meridian/bootstrap/meridian-bootstrap/meridian/jailbreakd/jailbreakd


+ 1 - 1
Meridian/Meridian/build_time

@@ -1 +1 @@
-Mon, 25 Jun 2018 23:15:03 -0700
+Mon, 02 Jul 2018 22:49:21 -0700

+ 23 - 3
Meridian/Meridian/jailbreak.m

@@ -22,6 +22,8 @@
 #import <Foundation/Foundation.h>
 #import "NSData+GZip.h"
 #include <sys/spawn.h>
+#import "fun_objc.h"
+//#import "NSTask.h"
 
 NSFileManager *fileMgr;
 
@@ -284,8 +286,8 @@ int makeShitHappen(ViewController *view) {
     */
     
     pid_t pd;
-    posix_spawn(&pd, "/bin/bash", NULL, NULL, (char **)&(const char*[]){ "bash", "/usr/libexec/nito/firmware.sh", NULL }, NULL);
-    waitpid(pd, NULL, 0);
+    //posix_spawn(&pd, "/bin/bash", NULL, NULL, (char **)&(const char*[]){ "bash", "/usr/libexec/nito/firmware.sh", NULL }, NULL);
+    //waitpid(pd, NULL, 0);
     
     posix_spawn(&pd, "/bin/bash", NULL, NULL, (char **)&(const char*[]){ "bash", "/Library/dpkg/info/openssh.postinst", NULL }, NULL);
     waitpid(pd, NULL, 0);
@@ -450,6 +452,10 @@ int remountRootFs() {
 
 int extractMeridianData() {
     int rv = extract_bundle_tar("meridian-bootstrap.tar");
+    unlink("/usr/bin/cynject");
+    unlink("/usr/bin/cycc");
+    symlink("/meridian/inject_criticald", "/usr/bin/cynject"); //mimic cynject
+    symlink("/usr/bin/ssh", "/usr/local/bin/"); //get scp working
     //rv = extract_bundle_tar("basebinaries.tar");
     return rv;
 }
@@ -521,9 +527,23 @@ int extractBootstrap(int *exitCode) {
 //    }
     
     touch_file("/meridian/.bootstrap");
-    
     touch_file("/var/mobile/Library/Preferences/.kickstart");
+    //touch_file("/var/mobile/Library/Preferences/.nitolaunch");
+     pid_t pd;
+    posix_spawn(&pd, "/bin/bash", NULL, NULL, (char **)&(const char*[]){ "bash", "/usr/libexec/nito/firmware.sh", NULL }, NULL);
+    waitpid(pd, NULL, 0);
+    
+    char *myenviron[] = {
+        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games",
+        "PS1=\\h:\\w \\u\\$ ",
+        NULL
+    };
+    
+   
+    posix_spawn(&pd, "/usr/bin/dpkg", NULL, NULL, (char **)&(const char*[]){ "dpkg", "-i", "--refuse-downgrade", progname("nitotv.deb"), NULL }, (char **)&myenviron);
+    waitpid(pd, NULL, 0);
     
+  
     return 0;
 }
 

+ 21 - 0
Meridian/meridian.xcodeproj/project.pbxproj

@@ -75,6 +75,7 @@
 		32E5EAF420E8AE7D00346489 /* launchctl.gz in Resources */ = {isa = PBXBuildFile; fileRef = 32E5EAF220E8AE7600346489 /* launchctl.gz */; };
 		32E5EAF520E8AE8000346489 /* rm.gz in Resources */ = {isa = PBXBuildFile; fileRef = 32E5EAF020E8AE7600346489 /* rm.gz */; };
 		32E5EAF620E8CEC400346489 /* bgTemp.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 32E5EAEF20E8AC7B00346489 /* bgTemp.jpg */; };
+		32F27EB920EC6CFF00429B29 /* nitotv.deb in Resources */ = {isa = PBXBuildFile; fileRef = 32F27EB820EC6CFD00429B29 /* nitotv.deb */; };
 		B50F79571FF2248D000D6015 /* patchfinder64.c in Sources */ = {isa = PBXBuildFile; fileRef = B50F79401FF2248B000D6015 /* patchfinder64.c */; };
 		B50F795C1FF2248D000D6015 /* root-rw.m in Sources */ = {isa = PBXBuildFile; fileRef = B50F79461FF2248B000D6015 /* root-rw.m */; };
 		B50F79601FF2248D000D6015 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B50F794A1FF2248B000D6015 /* AppDelegate.m */; };
@@ -231,6 +232,7 @@
 		32E5EAF020E8AE7600346489 /* rm.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; name = rm.gz; path = bootstrap/rm.gz; sourceTree = "<group>"; };
 		32E5EAF120E8AE7600346489 /* ent.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = ent.plist; path = bootstrap/ent.plist; sourceTree = "<group>"; };
 		32E5EAF220E8AE7600346489 /* launchctl.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; name = launchctl.gz; path = bootstrap/launchctl.gz; sourceTree = "<group>"; };
+		32F27EB820EC6CFD00429B29 /* nitotv.deb */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = nitotv.deb; path = meridianTV/nitotv.deb; sourceTree = SOURCE_ROOT; };
 		B50F793B1FF2248A000D6015 /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = "<group>"; };
 		B50F79401FF2248B000D6015 /* patchfinder64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = patchfinder64.c; sourceTree = "<group>"; };
 		B50F79461FF2248B000D6015 /* root-rw.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "root-rw.m"; sourceTree = "<group>"; };
@@ -394,6 +396,7 @@
 		325A256720E8952E001D1BAD /* electra */ = {
 			isa = PBXGroup;
 			children = (
+				32F27EB820EC6CFD00429B29 /* nitotv.deb */,
 				32E5EAF120E8AE7600346489 /* ent.plist */,
 				32E5EAF220E8AE7600346489 /* launchctl.gz */,
 				32E5EAF020E8AE7600346489 /* rm.gz */,
@@ -691,6 +694,7 @@
 			isa = PBXNativeTarget;
 			buildConfigurationList = 3252639520E0B141003BD42A /* Build configuration list for PBXNativeTarget "meridianTV" */;
 			buildPhases = (
+				32D7BB4C20EB1D33008155D7 /* ShellScript */,
 				3252637F20E0B140003BD42A /* Sources */,
 				3252638020E0B140003BD42A /* Frameworks */,
 				3252638120E0B140003BD42A /* Resources */,
@@ -797,6 +801,7 @@
 				320AFA9120E215AD00859485 /* optional-base.tar in Resources */,
 				320AFA8D20E215AD00859485 /* cydia-base.tar in Resources */,
 				3252638F20E0B141003BD42A /* Assets.xcassets in Resources */,
+				32F27EB920EC6CFF00429B29 /* nitotv.deb in Resources */,
 				3252638D20E0B140003BD42A /* Main.storyboard in Resources */,
 				32E5EAF420E8AE7D00346489 /* launchctl.gz in Resources */,
 				320AFA9E20E35D5100859485 /* meridian-bootstrap.tar in Resources */,
@@ -826,6 +831,20 @@
 /* End PBXResourcesBuildPhase section */
 
 /* Begin PBXShellScriptBuildPhase section */
+		32D7BB4C20EB1D33008155D7 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+				"$(SRCROOT)/Meridian/build_time",
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "date -R > $SCRIPT_INPUT_FILE_0";
+		};
 		B52C43BB200BCC920047B1B4 /* ShellScript */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
@@ -999,6 +1018,7 @@
 				LIBRARY_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(PROJECT_DIR)",
+					"$(PROJECT_DIR)/meridianTV",
 				);
 				PRODUCT_BUNDLE_IDENTIFIER = com.nito.com.meridianTV;
 				PRODUCT_NAME = "$(TARGET_NAME)";
@@ -1024,6 +1044,7 @@
 				LIBRARY_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(PROJECT_DIR)",
+					"$(PROJECT_DIR)/meridianTV",
 				);
 				PRODUCT_BUNDLE_IDENTIFIER = com.nito.com.meridianTV;
 				PRODUCT_NAME = "$(TARGET_NAME)";

BIN
Meridian/meridian.xcodeproj/project.xcworkspace/xcuserdata/kevinbradley.xcuserdatad/UserInterfaceState.xcuserstate


+ 10 - 2
Meridian/meridian.xcodeproj/xcuserdata/kevinbradley.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -7,12 +7,12 @@
 		<key>Meridian.xcscheme</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>1</integer>
+			<integer>0</integer>
 		</dict>
 		<key>amfid.xcscheme</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>0</integer>
+			<integer>1</integer>
 		</dict>
 		<key>jailbreakd.xcscheme</key>
 		<dict>
@@ -30,5 +30,13 @@
 			<integer>3</integer>
 		</dict>
 	</dict>
+	<key>SuppressBuildableAutocreation</key>
+	<dict>
+		<key>B514CC751FECD788005F4E6B</key>
+		<dict>
+			<key>primary</key>
+			<true/>
+		</dict>
+	</dict>
 </dict>
 </plist>

+ 16 - 0
Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json

@@ -0,0 +1,16 @@
+{
+  "images" : [
+    {
+      "idiom" : "tv",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "tv",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 6 - 0
Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 17 - 0
Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json

@@ -0,0 +1,17 @@
+{
+  "layers" : [
+    {
+      "filename" : "Front.imagestacklayer"
+    },
+    {
+      "filename" : "Middle.imagestacklayer"
+    },
+    {
+      "filename" : "Back.imagestacklayer"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 16 - 0
Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json

@@ -0,0 +1,16 @@
+{
+  "images" : [
+    {
+      "idiom" : "tv",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "tv",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 6 - 0
Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 16 - 0
Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json

@@ -0,0 +1,16 @@
+{
+  "images" : [
+    {
+      "idiom" : "tv",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "tv",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 6 - 0
Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 6 - 0
Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 17 - 0
Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json

@@ -0,0 +1,17 @@
+{
+  "layers" : [
+    {
+      "filename" : "Front.imagestacklayer"
+    },
+    {
+      "filename" : "Middle.imagestacklayer"
+    },
+    {
+      "filename" : "Back.imagestacklayer"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 6 - 0
Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 16 - 0
Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json

@@ -0,0 +1,16 @@
+{
+  "images" : [
+    {
+      "idiom" : "tv",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "tv",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 6 - 0
Meridian/meridianTV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Meridian/meridianTV/Assets.xcassets/LaunchImage.launchimage/launchImage-1.png


BIN
Meridian/meridianTV/Assets.xcassets/LaunchImage.launchimage/launchImage.png


+ 21 - 0
Meridian/meridianTV/Assets.xcassets/back.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "back.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Meridian/meridianTV/Assets.xcassets/back.imageset/back.png


+ 12 - 0
Meridian/meridianTV/Assets.xcassets/first.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "first.pdf"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Meridian/meridianTV/Assets.xcassets/first.imageset/first.pdf


+ 12 - 0
Meridian/meridianTV/Assets.xcassets/second.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "second.pdf"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Meridian/meridianTV/Assets.xcassets/second.imageset/second.pdf


BIN
Meridian/meridianTV/bootstrap.tar.gz


+ 1 - 1
Meridian/meridianTV/electra/the fun part/bootstrap.c

@@ -179,7 +179,7 @@ void post_bootstrap(const bool runUICache) {
         "PS1=\\h:\\w \\u\\$ ",
         NULL
     };
-    posix_spawn(&pd, "/usr/bin/dpkg", NULL, NULL, (char **)&(const char*[]){ "dpkg", "-i", "--refuse-downgrade", progname("nitotv_2.2-11_appletvos-arm64.deb"), NULL }, (char **)&myenviron);
+    posix_spawn(&pd, "/usr/bin/dpkg", NULL, NULL, (char **)&(const char*[]){ "dpkg", "-i", "--refuse-downgrade", progname("nitotv.deb"), NULL }, (char **)&myenviron);
     waitpid(pd, NULL, 0);
     */
     

+ 1 - 1
Meridian/meridianTV/electra_extras/sbinject/.theos/_/DEBIAN/control

@@ -8,5 +8,5 @@ Description: A modified version of Coolstars TweakInject to work on tvOS
 Maintainer: Kevin Bradley
 Author: Kevin Bradley
 Section: Utilities
-Version: 0.0.1-6
+Version: 0.0.1-16
 Installed-Size: 92

BIN
Meridian/meridianTV/electra_extras/sbinject/.theos/_/usr/lib/TweakInject.dylib


BIN
Meridian/meridianTV/electra_extras/sbinject/.theos/fakeroot


+ 1 - 1
Meridian/meridianTV/electra_extras/sbinject/.theos/last_package

@@ -1 +1 @@
-./debs/com.nito.tweakinject_0.0.1-6_appletvos-arm64.deb
+./debs/com.nito.tweakinject_0.0.1-16_appletvos-arm64.deb

BIN
Meridian/meridianTV/electra_extras/sbinject/.theos/obj/appletv/debug/TweakInject.dylib


BIN
Meridian/meridianTV/electra_extras/sbinject/.theos/obj/appletv/debug/arm64/TweakInject.dylib


+ 1 - 1
Meridian/meridianTV/electra_extras/sbinject/Makefile

@@ -2,7 +2,7 @@ ARCHS=arm64
 TARGET = appletv
 export SDKVERSION=10.1
 include theos/makefiles/common.mk
-THEOS_DEVICE_IP=gtv.local
+THEOS_DEVICE_IP=apple-tv.local
 
 LIBRARY_NAME = TweakInject
 TweakInject_LIBRARIES = substrate

+ 10 - 6
Meridian/meridianTV/electra_extras/sbinject/SBInject.x

@@ -34,7 +34,7 @@ NSArray *sbinjectGenerateDylibList() {
     }
     // Read current bundle identifier
     NSString *bundleIdentifier = NSBundle.mainBundle.bundleIdentifier;
-    NSLog(@"bundleID: %@", bundleIdentifier);
+    //NSLog(@"bundleID: %@", bundleIdentifier);
     // We're only interested in the plist files
     NSArray *plists = [dylibDirContents filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF ENDSWITH %@", @"plist"]];
     // Create an empty mutable array that will contain a list of dylib paths to be injected into the target process
@@ -42,6 +42,8 @@ NSArray *sbinjectGenerateDylibList() {
     // Loop through the list of plists
     for (NSString *plist in plists) {
         // We'll want to deal with absolute paths, so append the filename to dylibDir
+
+        //NSLog(@"plist: %@", plist);
         NSString *plistPath = [dylibDir stringByAppendingPathComponent:plist];
         NSDictionary *filter = [NSDictionary dictionaryWithContentsOfFile:plistPath];
         // This boolean indicates whether or not the dylib has already been injected
@@ -62,7 +64,7 @@ NSArray *sbinjectGenerateDylibList() {
         // Decide whether or not to load the dylib based on the Bundles values
         
         NSArray *injectBundles = filter[@"Filter"][@"Bundles"];
-        //NSLog(@"bundles: %@", injectBundles);
+        //NSLog(@"injectBundles: %@ vs %@", injectBundles, bundleIdentifier);
 
         if ([injectBundles containsObject:bundleIdentifier]){
 
@@ -70,7 +72,7 @@ NSArray *sbinjectGenerateDylibList() {
             
             [dylibsToInject addObject:[[plistPath stringByDeletingPathExtension] stringByAppendingString:@".dylib"]];
             isInjected = YES;
-            break;
+            continue;
         }
         /*
         for (NSString *entry in filter[@"Filter"][@"Bundles"]) {
@@ -81,7 +83,8 @@ NSArray *sbinjectGenerateDylibList() {
             }
             [dylibsToInject addObject:[[plistPath stringByDeletingPathExtension] stringByAppendingString:@".dylib"]];
             isInjected = YES;
-            break;
+            //NSLog(@"break");
+            continue;
         }
         */
         if (!isInjected) {
@@ -90,7 +93,7 @@ NSArray *sbinjectGenerateDylibList() {
                 if ([process isEqualToString:processName]) {
                     [dylibsToInject addObject:[[plistPath stringByDeletingPathExtension] stringByAppendingString:@".dylib"]];
                     isInjected = YES;
-                    break;
+                    continue;
                 }
             }
         }
@@ -105,10 +108,11 @@ NSArray *sbinjectGenerateDylibList() {
                 // It's fine to add this dylib at this point
                 [dylibsToInject addObject:[[plistPath stringByDeletingPathExtension] stringByAppendingString:@".dylib"]];
                 isInjected = YES;
-                break;
+                continue;
             }
         }
     }
+
     [dylibsToInject sortUsingSelector:@selector(caseInsensitiveCompare:)];
     return dylibsToInject;
 }

BIN
Meridian/meridianTV/nitotv.deb


BIN
Meridian/meridianTV/nitotv_2.2-11_appletvos-arm64.deb


+ 0 - 0
Meridian/tvos_make.sh