Skip to content

Commit

Permalink
Merge remote-tracking branch 'ichi/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
Baw-Appie committed Jun 14, 2020
2 parents 5569cf4 + cbe1b78 commit d0d7e41
Show file tree
Hide file tree
Showing 8 changed files with 163 additions and 9 deletions.
13 changes: 12 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,15 @@ theos/
_/
obj/
packages/
*.deb
*.deb
*.o
.theos/*
debs/*
*.deb
*.dylib
**/.theos/*
*/.theos/*
*.sublime-workspace
_/*
*/obj/*
obj/*
22 changes: 19 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
ARCHS = arm64
ARCHS = arm64 arm64e

include $(THEOS)/makefiles/common.mk

Expand All @@ -17,7 +17,9 @@ ifdef USE_JELBREK_LIB
changerootfs_LDFLAGS = $(LIB_DIR)/jelbrekLib.dylib
endif

include $(THEOS)/makefiles/common.mk
include $(THEOS_MAKE_PATH)/tool.mk
include $(THEOS_MAKE_PATH)/aggregate.mk

ifdef USE_JELBREK_LIB
before-package::
Expand All @@ -27,8 +29,22 @@ endif
before-package::
mkdir -p $(THEOS_STAGING_DIR)/usr/lib/
cp $(LIB_DIR)/jelbrekLib.dylib $(THEOS_STAGING_DIR)/usr/lib
$(THEOS)/toolchain/linux/iphone/bin/ldid -S./ent.plist $(THEOS_STAGING_DIR)/usr/bin/changerootfs
$(THEOS)/toolchain/linux/iphone/bin/ldid -S./ent.plist $(THEOS_STAGING_DIR)/usr/bin/preparerootfs
ldid -S./ent.plist $(THEOS_STAGING_DIR)/usr/bin/changerootfs
ldid -S./ent.plist $(THEOS_STAGING_DIR)/usr/bin/preparerootfs
ldid -S./ent.plist $(THEOS_STAGING_DIR)/usr/bin/changerootfs
sudo chown -R root:wheel $(THEOS_STAGING_DIR)
sudo chmod -R 755 $(THEOS_STAGING_DIR)
sudo chmod 6755 $(THEOS_STAGING_DIR)/usr/bin/kernbypassd
sudo chmod 666 $(THEOS_STAGING_DIR)/DEBIAN/control


SUBPROJECTS += zzzzzzzzznotifychroot
SUBPROJECTS += kernbypassd
include $(THEOS_MAKE_PATH)/aggregate.mk

after-package::
make clean
sudo rm -rf .theos/_

after-install::
install.exec "killall backboardd"
2 changes: 1 addition & 1 deletion control
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Package: jp.akusio.kernbypass
Name: KernBypass
Version: 0.0.3
Version: 0.0.4
Depends: mobilesubstrate, applist, preferenceloader, com.comex.attachanddetach, Firmware(>=12.0)
Architecture: iphoneos-arm
Description: kernel level jailbreak detection bypass.
Expand Down
10 changes: 10 additions & 0 deletions kernbypassd/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
DEBUG = 0
ARCHS = arm64 arm64e

TOOL_NAME = kernbypassd
kernbypassd_FILES = kernbypassd.m
kernbypassd_CFLAGS = -objc-arc
kernbypassd_CODESIGN_FLAGS = -S../ent.plist

include $(THEOS)/makefiles/common.mk
include $(THEOS_MAKE_PATH)/tool.mk
62 changes: 62 additions & 0 deletions kernbypassd/kernbypassd.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#include <spawn.h>
#import <dlfcn.h>
#import <sys/sysctl.h>

#define FLAG_PLATFORMIZE (1 << 1)

static void easy_spawn(const char* args[]) {
pid_t pid;
int status;
posix_spawn(&pid, args[0], NULL, NULL, (char* const*)args, NULL);
waitpid(pid, &status, WEXITED);
}

void platformize_me() {
void* handle = dlopen("/usr/lib/libjailbreak.dylib", RTLD_LAZY);
if (!handle) return;
// Reset errors
dlerror();
typedef void (*fix_entitle_prt_t)(pid_t pid, uint32_t what);
fix_entitle_prt_t ptr = (fix_entitle_prt_t)dlsym(handle, "jb_oneshot_entitle_now");

const char *dlsym_error = dlerror();
if (dlsym_error) return;

ptr(getpid(), FLAG_PLATFORMIZE);
}

void patch_setuid() {
void* handle = dlopen("/usr/lib/libjailbreak.dylib", RTLD_LAZY);
if (!handle) return;
// Reset errors
dlerror();
typedef void (*fix_setuid_prt_t)(pid_t pid);
fix_setuid_prt_t ptr = (fix_setuid_prt_t)dlsym(handle, "jb_oneshot_fix_setuid_now");

const char *dlsym_error = dlerror();
if (dlsym_error) return;

ptr(getpid());
}

int main(int argc, char **argv, char **envp) {
@autoreleasepool {
patch_setuid();
platformize_me();
setuid(0);
if((chdir("/")) < 0) {
exit(EXIT_FAILURE);
}

printf("/usr/bin/changerootfs &\n");
easy_spawn((const char *[]){"/usr/bin/changerootfs", "&", NULL});

sleep(3);

printf("disown %%1\n");
easy_spawn((const char *[]){"disown", "%1", NULL});

printf("RUNNING DAEMON\n");
}
return 0;
}
23 changes: 23 additions & 0 deletions layout/DEBIAN/postinst
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/bin/sh

if ! [ -d /var/MobileSoftwareUpdate/mnt1 ]; then
echo "/var/MobileSoftwareUpdate/mnt1 FOLDER NOT FOUND"

mkdir -p /var/MobileSoftwareUpdate/mnt1
chmod 700 /var/MobileSoftwareUpdate/mnt1
chown root:wheel /var/MobileSoftwareUpdate/mnt1

echo "/var/MobileSoftwareUpdate/mnt1 FOLDER CREATED SUCCESS"
fi

/usr/bin/changerootfs &

echo "/usr/bin/changerootfs &"
sleep 3

disown %1
echo "disown %1"

echo "RUNNING DAEMON"

exit 0
5 changes: 5 additions & 0 deletions layout/DEBIAN/postrm
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/sh

echo "Reboot after uninstalling."

exit 0
35 changes: 31 additions & 4 deletions zzzzzzzzznotifychroot/Tweak.x
Original file line number Diff line number Diff line change
@@ -1,13 +1,32 @@
#import <Foundation/Foundation.h>
#import <CoreFoundation/CoreFoundation.h>
#import "Tweak.h"
#include <spawn.h>

#define kCFCoreFoundationVersionNumber_iOS_12_0 1556.00

#define PLIST_PATH @"/var/mobile/Library/Preferences/jp.akusio.kernbypass.plist"
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

static void easy_spawn(const char* args[]){
pid_t pid;
int status;
posix_spawn(&pid, args[0], NULL, NULL, (char* const*)args, NULL);
waitpid(pid, &status, WEXITED);
}

// Automatically enabled on ldrestart and Re-Jailbreak
%group SpringBoardHook %hook SpringBoard
- (void)applicationDidFinishLaunching:(id)arg1{
%orig;
easy_spawn((const char *[]){"/usr/bin/kernbypassd", NULL});
}
%end %end

extern CFNotificationCenterRef CFNotificationCenterGetDistributedCenter(void);

BOOL isEnableApplication(NSString *bundleID){
BOOL isEnableApplication(){

NSDictionary* pref = [NSDictionary dictionaryWithContentsOfFile:PLIST_PATH];
if(!pref || pref[bundleID] == nil){
return NO;
Expand All @@ -16,9 +35,17 @@ BOOL isEnableApplication(NSString *bundleID){
return ret;
}

void bypassApplication(NSString *bundleID){
int pid = [[%c(FBSSystemService) sharedService] pidForApplication:bundleID];
if(!isEnableApplication(bundleID) || pid == -1){
%ctor{
// SpringBoard Hook
NSString* identifier = [[NSBundle mainBundle] bundleIdentifier];

if(kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iOS_12_0 &&
[identifier isEqualToString:@"com.apple.springboard"] &&
[[NSFileManager defaultManager] fileExistsAtPath:@"/usr/bin/kernbypassd"]){
%init(SpringBoardHook);
}

if(!isEnableApplication()){
return;
}
NSDictionary* info = @{
Expand Down

0 comments on commit d0d7e41

Please sign in to comment.