internal static void SetupDetour() { _modifyWarden = DisableWarden; // get PTR for our c# function var addrToDetour = Marshal.GetFunctionPointerForDelegate(_modifyWarden); string[] asmCode = { SendOvers.WardenLoadDetour[0], SendOvers.WardenLoadDetour[1], SendOvers.WardenLoadDetour[2], SendOvers.WardenLoadDetour[3], SendOvers.WardenLoadDetour[4].Replace("[|addr|]",((uint)addrToDetour).ToString()), SendOvers.WardenLoadDetour[5], SendOvers.WardenLoadDetour[6], SendOvers.WardenLoadDetour[7], }; var WardenDetour = Memory.InjectAsm(asmCode, "WardenLoadDetour"); Memory.InjectAsm(0x006CA22E, "jmp " + WardenDetour, "WardenLoadDetourJmp"); }
static HookWardenMemScan() { Console.WriteLine("HookWardenMemScan created"); _modifyWarden = DisableWarden; // get PTR for our c# function var addrToDetour = Marshal.GetFunctionPointerForDelegate(_modifyWarden); string[] asmCode = { SendOvers.WardenLoadDetour[0], SendOvers.WardenLoadDetour[1], SendOvers.WardenLoadDetour[2], SendOvers.WardenLoadDetour[3], SendOvers.WardenLoadDetour[4].Replace("[|addr|]",((uint)addrToDetour).ToString()), SendOvers.WardenLoadDetour[5], SendOvers.WardenLoadDetour[6], SendOvers.WardenLoadDetour[7], }; var wardenDetour = Memory.InjectAsm(asmCode, "WardenLoadDetour"); Memory.InjectAsm(0x006CA22E, "jmp " + wardenDetour, "WardenLoadDetourJmp"); }
static HookWardenMemScan() { Console.WriteLine("HookWardenMemScan created"); _modifyWarden = DisableWarden; // get PTR for our c# function var addrToDetour = Marshal.GetFunctionPointerForDelegate(_modifyWarden); string[] asmCode = { "MOV [0xCE8978], EAX", "pushfd", "pushad", "push EAX", "call " + (uint)addrToDetour, "popad", "popfd", "jmp 0x006CA233" }; var wardenDetour = Memory.InjectAsm(asmCode, "WardenLoadDetour"); Memory.InjectAsm(0x006CA22E, "jmp " + wardenDetour, "WardenLoadDetourJmp"); }