From 4fab4e71f78041727f1e252980a44b6db2721f54 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 8 Dec 2022 15:24:53 -0800 Subject: [PATCH] Convert one Impulse Reactor check --- BurnOutSharp/ProtectionType/ImpulseReactor.cs | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/BurnOutSharp/ProtectionType/ImpulseReactor.cs b/BurnOutSharp/ProtectionType/ImpulseReactor.cs index b66fbabe..633df9c7 100644 --- a/BurnOutSharp/ProtectionType/ImpulseReactor.cs +++ b/BurnOutSharp/ProtectionType/ImpulseReactor.cs @@ -1,5 +1,6 @@ using System.Collections.Concurrent; using System.Collections.Generic; +using System.Linq; using BurnOutSharp.Interfaces; using BurnOutSharp.Matching; using BurnOutSharp.Tools; @@ -31,20 +32,15 @@ namespace BurnOutSharp.ProtectionType if (name?.Contains("ReactorActivate.exe") == true) return $"Stardock Product Activation {Utilities.GetInternalVersion(pex)}"; + // TODO: Check for CVP* instead? + bool containsCheck = pex.ExportNameTable?.Any(s => s.StartsWith("CVPInitializeClient")) ?? false; + // Get the .rdata section, if it exists if (pex.ContainsSection(".rdata")) { - // CVPInitializeClient - byte?[] check = new byte?[] - { - 0x43, 0x56, 0x50, 0x49, 0x6E, 0x69, 0x74, 0x69, - 0x61, 0x6C, 0x69, 0x7A, 0x65, 0x43, 0x6C, 0x69, - 0x65, 0x6E, 0x74 - }; - bool containsCheck = pex.GetFirstSectionData(".rdata").FirstPosition(check, out int position); - // TODO: Find what resource this is in // A + (char)0x00 + T + (char)0x00 + T + (char)0x00 + L + (char)0x00 + I + (char)0x00 + S + (char)0x00 + T + (char)0x00 + (char)0x00 + (char)0x00 + E + (char)0x00 + L + (char)0x00 + E + (char)0x00 + M + (char)0x00 + E + (char)0x00 + N + (char)0x00 + T + (char)0x00 + (char)0x00 + (char)0x00 + N + (char)0x00 + O + (char)0x00 + T + (char)0x00 + A + (char)0x00 + T + (char)0x00 + I + (char)0x00 + O + (char)0x00 + N + (char)0x00 + // ATTLIST\0ELEMENT\0NOTATION byte?[] check2 = new byte?[] { 0x41, 0x00, 0x54, 0x00, 0x54, 0x00, 0x4C, 0x00, @@ -59,7 +55,7 @@ namespace BurnOutSharp.ProtectionType if (containsCheck && containsCheck2) return $"Impulse Reactor Core Module {Utilities.GetInternalVersion(pex)}" + (includeDebug ? $" (Index {position}, {position2})" : string.Empty); else if (containsCheck && !containsCheck2) - return $"Impulse Reactor" + (includeDebug ? $" (Index {position})" : string.Empty); + return $"Impulse Reactor"; } return null;