summaryrefslogtreecommitdiff
path: root/ldrestart.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ldrestart.cpp')
-rw-r--r--ldrestart.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/ldrestart.cpp b/ldrestart.cpp
index 04f7a8b..a6d6cb6 100644
--- a/ldrestart.cpp
+++ b/ldrestart.cpp
@@ -30,6 +30,26 @@
#include <launch.h>
#include <sys/stat.h>
+/* Set platform binary flag */
+#define FLAG_PLATFORMIZE (1 << 1)
+#include <dlfcn.h>
+
+void platformizeme() {
+ 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 process(launch_data_t value, const char *name, void *baton) {
if (launch_data_get_type(value) != LAUNCH_DATA_DICTIONARY)
@@ -65,6 +85,7 @@ void process(launch_data_t value, const char *name, void *baton) {
}
int main(int argc, char *argv[]) {
+ platformizeme();
auto request(launch_data_new_string(LAUNCH_KEY_GETJOBS));
auto response(launch_msg(request));
launch_data_free(request);