/** ** Module startup code. Replace console only print functions as well as ** replace various menu functions. Finaly, initialize the gui and hook ** into important events. **/ void GUI_start() { // Hoot for the boot screen //ExecKernel register_hook_callback("Kernel Start", &GUI_Kernel_Start_hook); register_hook_callback("ExecKernel", &GUI_ExecKernel_hook); register_hook_callback("PreBoot", &GUI_PreBoot_hook); register_hook_callback("ModulesLoaded", &GUI_ModulesLoaded_hook); }
void Memory_start(void) { if (pci_config_read16(PCIADDR(0, 0x00, 0), 0x00) != 0x8086) return; register_hook_callback("PCIDevice", &Memory_PCIDevice_hook); register_hook_callback("ScanMemory", &Memory_hook); register_hook_callback("isMemoryRegistred", &is_Memory_Registred_Hook); }
void KernelPatcher_start(void) { register_kernel_patch(patch_cpuid_set_info_all, KERNEL_ANY, CPUID_MODEL_UNKNOWN); register_kernel_patch(patch_commpage_stuff_routine, KERNEL_ANY, CPUID_MODEL_ANY); register_kernel_patch(patch_lapic_init, KERNEL_ANY, CPUID_MODEL_ANY); // NOTE: following is currently 32bit only register_kernel_patch(patch_lapic_configure, KERNEL_32, CPUID_MODEL_ANY); register_kernel_symbol(KERNEL_ANY, "_panic"); register_kernel_symbol(KERNEL_ANY, "_cpuid_set_info"); register_kernel_symbol(KERNEL_ANY, "_pmCPUExitHaltToOff"); register_kernel_symbol(KERNEL_ANY, "_lapic_init"); register_kernel_symbol(KERNEL_ANY, "_commpage_stuff_routine"); // lapic_configure symbols register_kernel_symbol(KERNEL_ANY, "_lapic_configure"); register_kernel_symbol(KERNEL_ANY, "_lapic_start"); register_kernel_symbol(KERNEL_ANY, "_lapic_interrupt_base"); // lapic_interrup symbols //register_kernel_patch(patch_lapic_interrupt, KERNEL_ANY, CPUID_MODEL_ANY); //register_kernel_symbol(KERNEL_ANY, "_lapic_interrupt"); // TODO: register needed symbols register_hook_callback("ExecKernel", &patch_kernel); replace_system_function("_getKernelCachePath", &kernel_patcher_ignore_cache); }
void HelloWorld_start(void) { register_hook_callback("ExecKernel", &helloWorld2); register_hook_callback("PreBoot", &helloWorld); }
void Sata_start(void) { register_hook_callback("PCIDevice", &SATA_hook); }
void Memory_start() { register_hook_callback("PCIDevice", &Memory_PCIDevice_hook); register_hook_callback("ScanMemory", &Memory_hook); }
void USBFix_start() { register_hook_callback("PCIDevice", &USBFix_pci_hook); register_hook_callback("Kernel Start", &USBFix_start_hook); }
void HibernateEnabler_start(void) { register_hook_callback("PreBoot", &HibernateEnabler_hook); register_hook_callback("spinActivity_hook", &spinActivityIndicator_hook); }
void NBI_PreBoot_hook(void* arg1, void* arg2, void* arg3, void* arg4, void* arg5, void* arg6) { bool dummyVal = 0; config_file_t systemVersion; char valid = false; const char *val; int len; const char* gPrevMacOSBuildVersion; if (!loadConfigFile("System/Library/CoreServices/SystemVersion.plist", &systemVersion)) { valid = true; } else if (!loadConfigFile("System/Library/CoreServices/ServerVersion.plist", &systemVersion)) { valid = true; } if (valid) { if (getValueForKey("ProductBuildVersion", &val, &len, &systemVersion)) { if (!loadConfigFile("Extra/SystemVersion.LastPatched.plist", &systemVersion)) { if(getValueForKey("ProductBuildVersion", &gPrevMacOSBuildVersion, &len, &systemVersion)) { if(strlen(val) != strlen(gPrevMacOSBuildVersion) || strcmp(val, gPrevMacOSBuildVersion) != 0 ) { runNetbookInstaller = 1; } else { // Only allow restore from hibernation if the system hasn't changed, probably a bad idea though //char* val="/private/var/vm/sleepimage"; // Do this first to be sure that root volume is mounted //ret = GetFileInfo(0, val, &flags, &sleeptime); //printf("System version has not changed\n"); //runNetbookInstaller = 0; } } } } } if (!runNetbookInstaller && getBoolForKey("recovery", &dummyVal, DEFAULT_BOOT_CONFIG) && dummyVal) { if(dummyVal) runNetbookInstaller = 2; } if(runNetbookInstaller) { replace_system_function("_LoadDrivers", &NBI_LoadDrivers); if(runNetbookInstaller == 1 ) { if (execute_hook("isRamDiskRegistred", NULL, NULL, NULL, NULL, NULL, NULL) == EFI_SUCCESS) { replace_function_any("_md0Ramdisk", &NBI_md0Ramdisk); } else { register_hook_callback("md0Ramdisk", NBI_md0Ramdisk_hook); } } // Force arch=i386 + -v safe_set_env(envarchCpuType, CPU_TYPE_I386); safe_set_env(envgVerboseMode, true); } }
void NetbookInstaller_start(void) { register_hook_callback("PreBoot", &NBI_PreBoot_hook); }