// https://prtsc.me/i/d68ef574.png // https://prtsc.me/i/f054717d.png // [8bytes] movss xmm0,[edi+148] <--- BA X X X X 66 0F 6E // [3bytes] xorps xmm7, xmm7 <--- C2 90 90 public static bool Process(ref byte[] buffer) { var index = BinScanner.FindPattern(buffer, "F3 0F 10 87 48 01 00 00 0F 57 FF"); if (index == 0) { return(false); } var valueBin = BitConverter.GetBytes(89f); buffer[index + 0] = 0xBA; buffer[index + 1] = valueBin[0]; buffer[index + 2] = valueBin[1]; buffer[index + 3] = valueBin[2]; buffer[index + 4] = valueBin[3]; buffer[index + 5] = 0x66; buffer[index + 6] = 0x0F; buffer[index + 7] = 0x6E; buffer[index + 8] = 0xC2; buffer[index + 9] = 0x90; buffer[index + 10] = 0x90; return(true); }
// [6bytes] eax,[esi+00000228] // [5bytes] xmm0,[eax+28] // [2bytes] jmp // [8bytes] movss xmm0,[?] // [3bytes] comiss xmm1,xmm0 <--- NOP public static bool Process(ref byte[] buffer) { var index = BinScanner.FindPattern(buffer, "8B 86 28 02 00 00 F3 0F 10 40 28 EB 08 F3 0F 10 05 ? ? ? ? 0F 2F C8"); if (index == 0) { return(false); } buffer[index + 21] = 0x90; buffer[index + 22] = 0x90; buffer[index + 23] = 0x90; return(true); }
// #1 // [2bytes] ja // [5bytes] movss xmm0,[eax+24] // [4bytes] maxss xmm0,xmm1 <--- MOVSS // #2 // [6bytes] mov eax,[esi+00000228] // [5bytes] movss xmm0,[eax+24] // [4bytes] maxss xmm0,xmm1 <--- MOVSS public static bool Process(ref byte[] buffer) { var index1 = BinScanner.FindPattern(buffer, "77 09 F3 0F 10 40 24 F3 0F 5F C1"); if (index1 == 0) { return(false); } var index2 = BinScanner.FindPattern(buffer, "8B 86 28 02 00 00 F3 0F 10 40 24 F3 0F 5F C1"); if (index2 == 0) { return(false); } buffer[index1 + 9] = 0x10; buffer[index2 + 13] = 0x10; return(true); }
// [2bytes] mov ecx,esi // [7bytes] mov [esi+48],0 // [6bytes] mov eax,[edi+158] <--- B8 X X X X 90 public static bool Process(ref byte[] buffer) { var index = BinScanner.FindPattern(buffer, "8B CE C7 46 48 00 00 00 00 8B 87 58 01 00 00"); if (index == 0) { return(false); } var textFrm = new TextForm(); textFrm.titleLbl.Text = $"FOV Value:{Environment.NewLine}(45 - default)"; textFrm.ShowDialog(); if (!textFrm.Success) { return(false); } var valueStr = textFrm.valueLbl.Text.Trim(); if (!float.TryParse(valueStr, out var value)) { return(false); } var valueBin = BitConverter.GetBytes(value); buffer[index + 9] = 0xB8; buffer[index + 10] = valueBin[0]; buffer[index + 11] = valueBin[1]; buffer[index + 12] = valueBin[2]; buffer[index + 13] = valueBin[3]; buffer[index + 14] = 0x90; return(true); }
// #1 // [8bytes] movss [esi+0000012C],xmm2 <--- NOP // [1byte] ja .. // #2 // [8bytes] movss [esi+00000138],xmm0 <--- NOP // [2bytes] jbe ... public static bool Process(ref byte[] buffer) { var index1 = BinScanner.FindPattern(buffer, "F3 0F 11 96 2C 01 00 00 77"); if (index1 == 0) { return(false); } var index2 = BinScanner.FindPattern(buffer, "F3 0F 11 86 34 01 00 00 0F 86"); if (index2 == 0) { return(false); } buffer[index1 + 0] = 0x90; buffer[index1 + 1] = 0x90; buffer[index1 + 2] = 0x90; buffer[index1 + 3] = 0x90; buffer[index1 + 4] = 0x90; buffer[index1 + 5] = 0x90; buffer[index1 + 6] = 0x90; buffer[index1 + 7] = 0x90; buffer[index2 + 0] = 0x90; buffer[index2 + 1] = 0x90; buffer[index2 + 2] = 0x90; buffer[index2 + 3] = 0x90; buffer[index2 + 4] = 0x90; buffer[index2 + 5] = 0x90; buffer[index2 + 6] = 0x90; buffer[index2 + 7] = 0x90; return(true); }