Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.44 KB | None | 0 0
  1. private static void DisableWarden(IntPtr parWardenPtr1)
  2. {
  3.     //var second = Memory.Reader.Read<IntPtr>(parWardenPtr1);
  4.     var wardenModuleStart = parWardenPtr1.ReadAs<IntPtr>();
  5.     var memScanPtr = IntPtr.Add(wardenModuleStart, (int) Ptr.Warden.WardenMemScanStart);
  6.     var pageScanPtr = IntPtr.Add(wardenModuleStart, (int) Ptr.Warden.WardenPageScan);
  7.  
  8.     Console.WriteLine(pageScanPtr.ToString("X"));
  9.  
  10.     if (pageScanPtr != WardensPageScanFuncPtr)
  11.     {
  12.         var CurrentBytes = Memory.Reader.ReadBytes(pageScanPtr, 5);
  13.         //var CurrrentBytes = (tmpPtr).ReadAs<Byte>(); //How do I read 5 bytes?
  14.         var isEqual = CurrentBytes.SequenceEqual(PageScanOriginalBytes);
  15.         if (!isEqual) return;
  16.  
  17.         if (AddrToWardenPageScan == IntPtr.Zero)
  18.         {
  19.             _wardenPageScanDelegate = WardenPageScanHook;
  20.             AddrToWardenPageScan = Marshal.GetFunctionPointerForDelegate(_wardenPageScanDelegate);
  21.             if (WardenPageScanDetourPtr == IntPtr.Zero)
  22.             {
  23.                 // IntPtr readBase, int readOffset, IntPtr writeTo
  24.                 string[] asmCode =
  25.                 {
  26.                     SendOvers.WardenPageScanDetour[0],
  27.                     SendOvers.WardenPageScanDetour[1],
  28.                     SendOvers.WardenPageScanDetour[2],
  29.                     SendOvers.WardenPageScanDetour[3],
  30.                     SendOvers.WardenPageScanDetour[4],
  31.                     SendOvers.WardenPageScanDetour[5],
  32.                     SendOvers.WardenPageScanDetour[6],
  33.                     SendOvers.WardenPageScanDetour[7],
  34.                     SendOvers.WardenPageScanDetour[8],
  35.                     SendOvers.WardenPageScanDetour[9].Replace("[|addr|]", ((uint)AddrToWardenPageScan).ToString()),
  36.                     SendOvers.WardenPageScanDetour[10],
  37.                     SendOvers.WardenPageScanDetour[11],
  38.                     SendOvers.WardenPageScanDetour[12],
  39.                     SendOvers.WardenPageScanDetour[13].Replace("[|addr|]", ((uint)wardenModuleStart + 0x2B2C).ToString())
  40.                 };
  41.                 WardenPageScanDetourPtr = Memory.InjectAsm(asmCode, "WardenPageScanDetour");
  42.             }
  43.         }
  44.  
  45.         Memory.InjectAsm((uint) pageScanPtr,
  46.             "jmp 0x" + WardenPageScanDetourPtr.ToString("X"),
  47.             "WardenPageScanJmp");
  48.         WardensPageScanFuncPtr = pageScanPtr;
  49.     }
  50.  
  51.     if (memScanPtr != WardensMemScanFuncPtr)
  52.     {
  53.         var CurrentBytes = Memory.Reader.ReadBytes(memScanPtr, 5);
  54.         //var CurrrentBytes = (tmpPtr).ReadAs<Byte>(); //How do I read 5 bytes?
  55.         var isEqual = CurrentBytes.SequenceEqual(MemScanOriginalBytes);
  56.         if (!isEqual) return;
  57.  
  58.         if (AddrToWardenMemCpy == IntPtr.Zero)
  59.         {
  60.             _wardenMemCpyDelegate = WardenMemCpyHook;
  61.             AddrToWardenMemCpy = Marshal.GetFunctionPointerForDelegate(_wardenMemCpyDelegate);
  62.  
  63.             if (WardenMemCpyDetourPtr == IntPtr.Zero)
  64.             {
  65.                 string[] asmCodeOnline =
  66.                 {
  67.                     SendOvers.WardenMemCpyDetour[0],
  68.                     SendOvers.WardenMemCpyDetour[1],
  69.                     SendOvers.WardenMemCpyDetour[2],
  70.                     SendOvers.WardenMemCpyDetour[3],
  71.                     SendOvers.WardenMemCpyDetour[4],
  72.                     SendOvers.WardenMemCpyDetour[5],
  73.                     SendOvers.WardenMemCpyDetour[6],
  74.                     SendOvers.WardenMemCpyDetour[7],
  75.                     SendOvers.WardenMemCpyDetour[8],
  76.                     SendOvers.WardenMemCpyDetour[9],
  77.                     SendOvers.WardenMemCpyDetour[10],
  78.                     SendOvers.WardenMemCpyDetour[11],
  79.                     SendOvers.WardenMemCpyDetour[12],
  80.                     SendOvers.WardenMemCpyDetour[13].Replace("[|addr|]", "0x" + ((uint) AddrToWardenMemCpy).ToString("X")),
  81.                     SendOvers.WardenMemCpyDetour[14],
  82.                     SendOvers.WardenMemCpyDetour[15],
  83.                     SendOvers.WardenMemCpyDetour[16],
  84.                     SendOvers.WardenMemCpyDetour[17],
  85.                     SendOvers.WardenMemCpyDetour[18].Replace("[|addr|]", "0x" + ((uint) (memScanPtr + 0x24)).ToString("X"))
  86.                 };
  87.                 WardenMemCpyDetourPtr = Memory.InjectAsm(asmCodeOnline, "WardenMemCpyDetour");
  88.             }
  89.         }
  90.  
  91.         Memory.InjectAsm((uint) memScanPtr, "jmp 0x" + WardenMemCpyDetourPtr.ToString("X"), "WardenMemCpyJmp");
  92.         WardensMemScanFuncPtr = memScanPtr;
  93.     }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement