MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / PatchCPUID

Method PatchCPUID

rEFIt_UEFI/Platform/kernel_patcher.cpp:820–851  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

818
819
820BOOLEAN LOADER_ENTRY::PatchCPUID(const UINT8* Location, INT32 LenLoc,
821 const UINT8* Search4, const UINT8* Search10, const UINT8* ReplaceModel,
822 const UINT8* ReplaceExt, INT32 Len)
823{
824 INT32 patchLocation=0, patchLocation1=0;
825 INT32 Adr = 0, Num;
826 BOOLEAN Patched = FALSE;
827 UINT8 FakeModel = (KernelAndKextPatches.FakeCPUID >> 4) & 0x0f;
828 UINT8 FakeExt = (KernelAndKextPatches.FakeCPUID >> 0x10) & 0x0f;
829 for (Num = 0; Num < 2; Num++) {
830 Adr = FindBin(&KernelData[Adr], 0x800000 - Adr, Location, (UINT32)LenLoc);
831 if (Adr < 0) {
832 break;
833 }
834 DBG_RT( "found location at %x\n", Adr);
835 patchLocation = FindBin(&KernelData[Adr], 0x100, Search4, (UINT32)Len);
836 if (patchLocation > 0 && patchLocation < 70) {
837 //found
838 DBG_RT( "found Model location at %x\n", Adr + patchLocation);
839 CopyMem(&KernelData[Adr + patchLocation], ReplaceModel, Len);
840 KernelData[Adr + patchLocation + 1] = FakeModel;
841 patchLocation1 = FindBin(&KernelData[Adr], 0x100, Search10, (UINT32)Len);
842 if (patchLocation1 > 0 && patchLocation1 < 100) {
843 DBG_RT( "found ExtModel location at %x\n", Adr + patchLocation1);
844 CopyMem(&KernelData[Adr + patchLocation1], ReplaceExt, Len);
845 KernelData[Adr + patchLocation1 + 1] = FakeExt;
846 }
847 Patched = TRUE;
848 }
849 }
850 return Patched;
851}
852
853VOID LOADER_ENTRY::KernelCPUIDPatch()
854{

Callers

nothing calls this directly

Calls 2

FindBinFunction · 0.85
CopyMemFunction · 0.50

Tested by

no test coverage detected