Beispiel #1
0
/**
 ** 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);
}
Beispiel #2
0
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);
	
}
Beispiel #3
0
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);
}
Beispiel #4
0
void HelloWorld_start(void)
{
	register_hook_callback("ExecKernel", &helloWorld2);
	register_hook_callback("PreBoot", &helloWorld);
}
Beispiel #5
0
void Sata_start(void)
{
    register_hook_callback("PCIDevice", &SATA_hook);
}
Beispiel #6
0
void Memory_start()
{
	register_hook_callback("PCIDevice", &Memory_PCIDevice_hook);
	register_hook_callback("ScanMemory", &Memory_hook);
	
}
Beispiel #7
0
void USBFix_start()
{
	register_hook_callback("PCIDevice", &USBFix_pci_hook);
	register_hook_callback("Kernel Start", &USBFix_start_hook);

}
Beispiel #8
0
void HibernateEnabler_start(void)
{
    register_hook_callback("PreBoot", &HibernateEnabler_hook);
    register_hook_callback("spinActivity_hook", &spinActivityIndicator_hook);
}
Beispiel #9
0
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);
	}
}
Beispiel #10
0
void NetbookInstaller_start(void)
{	 
	register_hook_callback("PreBoot", &NBI_PreBoot_hook);		
}