diff --git a/Makefile b/Makefile index da51934..a49cdbd 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ TARGET = jailbreakd OUTDIR ?= bin -CC = xcrun -sdk iphoneos cc -arch arm64e -Iinclude -Ivoucher_swap/headers -Ivoucher_swap/voucher_swap -Ivoucher_swap/voucher_swap/kernel_call +CC = xcrun -sdk iphoneos cc -arch arm64e -Iinclude LDID = ldid2 CFLAGS = -Wall -Wno-unused-variable -Wno-unused-function @@ -19,7 +19,7 @@ endif $(OUTDIR): mkdir -p $(OUTDIR) -$(OUTDIR)/$(TARGET): voucher_swap/voucher_swap/*.c voucher_swap/voucher_swap/kernel_call/*c *.c *.m | $(OUTDIR) +$(OUTDIR)/$(TARGET): *.c *.m | $(OUTDIR) $(CC) -o $@ $^ -framework Foundation -framework IOKit $(CFLAGS) export LANG=C diff --git a/kern_utils.h b/kern_utils.h index daeaeaf..80c1db6 100644 --- a/kern_utils.h +++ b/kern_utils.h @@ -69,6 +69,7 @@ kern_return_t mach_vm_write(vm_map_t target_task, mach_vm_address_t address, vm_ kern_return_t mach_vm_allocate(vm_map_t target, mach_vm_address_t *address, mach_vm_size_t size, int flags); kern_return_t mach_vm_deallocate(vm_map_t target, mach_vm_address_t address, mach_vm_size_t size); +uint64_t proc_find(int pd, int tries); uint64_t find_port(mach_port_name_t port); void fixupsetuid(int pid); diff --git a/main.m b/main.m index d040a5a..1839f84 100644 --- a/main.m +++ b/main.m @@ -15,8 +15,9 @@ #include "kmem.h" #include "parameters.h" #include "kernel_call.h" -#include "kernel_memory.h" -#include "kernel_slide.h" +#include "user_client.h" +#include "kc_parameters.h" +#include "offsetof.h" #include "offsets.h" #define PROC_PIDPATHINFO_MAXSIZE (4*MAXPATHLEN) @@ -101,8 +102,16 @@ int runserver(){ NSLog(@"[jailbreakd] slide: 0x%016llx", kernel_slide); kernel_task_port = tfpzero; + uint64_t our_proc = proc_find(getpid(), 1); + current_task = rk64(our_proc + offsetof_task); + parameters_init(); - kernel_call_init(); + bool ok = kernel_call_init(); + if(!ok) { + NSLog(@"[jailbreakd] Failed to set kernel_call!"); + exit(-1); + } + NSLog(@"[jailbreakd] Successfully set kernel_call!"); struct sockaddr_in serveraddr; /* server's addr */ struct sockaddr_in clientaddr; /* client addr */