int main(int argc, char **argv) { char* hijacked_executable = argv[0]; int result; if (NULL != strstr(hijacked_executable, "bootmenu")) { fprintf(stdout, "Run BootMenu..\n"); result = run_bootmenu(); sync(); return result; } else if (argc >= 3 && 0 == strcmp(argv[2], "userdata")) { real_execute(argc, argv); result = run_bootmenu(); bypass_sign("no"); sync(); return result; } else if (argc >= 3 && 0 == strcmp(argv[2], "pds")) { real_execute(argc, argv); exec_script(FILE_OVERCLOCK, DISABLE); result = exec_script(FILE_POST_MENU, DISABLE); bypass_sign("no"); sync(); return result; } else { return real_execute(argc, argv); } }
/** * main() * * Here is the hijack part, logwrapper is linked to bootmenu * we trap some of logged commands from init.rc * */ int main(int argc, char **argv) { char* executable = argv[0]; int result; if (argc == 2 && 0 == strcmp(argv[1], "postbootmenu")) { exec_script(FILE_OVERCLOCK, DISABLE); result = exec_script(FILE_POST_MENU, DISABLE); bypass_sign("no"); sync(); return result; } else if (NULL != strstr(executable, "bootmenu")) { fprintf(stdout, "Run BootMenu..\n"); result = run_bootmenu(); sync(); return result; } else if (argc >= 3 && 0 == strcmp(argv[2], "userdata")) { result = run_bootmenu(); real_execute(argc, argv); bypass_sign("no"); sync(); return result; } else if (argc >= 3 && 0 == strcmp(argv[2], "pds")) { //kept for stock rom compatibility, please use postbootmenu real_execute(argc, argv); exec_script(FILE_OVERCLOCK, DISABLE); result = exec_script(FILE_POST_MENU, DISABLE); bypass_sign("no"); sync(); return result; } else { return real_execute(argc, argv); } }