| 1 | 
   | 
 #include "Daodan_Patch.h" | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2 | 
   | 
 #include <windows.h> | 
 
 
 
 
 
 
 
 
 | 3 | 
 + | 
 #include <stdlib.h> | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 4 | 
   | 
 #include <string.h> | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 5 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 6 | 
   | 
 bool DDrPatch_MakeJump(void* from, void* to) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 100 | 
   | 
                 return true; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 101 | 
   | 
         } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 102 | 
   | 
         else | 
 
 
 
 
 
 
 
 
 | 103 | 
 + | 
                 return false; | 
 
 
 
 
 
 
 
 
 | 104 | 
 + | 
 } | 
 
 
 
 
 
 
 
 
 | 105 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 106 | 
 + | 
 bool DDrPatch_NOOP(char* dest, unsigned int length) | 
 
 
 
 
 
 
 
 
 | 107 | 
 + | 
 { | 
 
 
 
 
 
 
 
 
 | 108 | 
 + | 
         DWORD oldp; | 
 
 
 
 
 
 
 
 
 | 109 | 
 + | 
          | 
 
 
 
 
 
 
 
 
 | 110 | 
 + | 
         if (VirtualProtect(dest, length, PAGE_EXECUTE_READWRITE, &oldp)) | 
 
 
 
 
 
 
 
 
 | 111 | 
 + | 
         { | 
 
 
 
 
 
 
 
 
 | 112 | 
 + | 
                 memset(dest, 0x90, length); | 
 
 
 
 
 
 
 
 
 | 113 | 
 + | 
                 VirtualProtect(dest, length, oldp, &oldp); | 
 
 
 
 
 
 
 
 
 | 114 | 
 + | 
                 return true; | 
 
 
 
 
 
 
 
 
 | 115 | 
 + | 
         } | 
 
 
 
 
 
 
 
 
 | 116 | 
 + | 
         else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 117 | 
   | 
                 return false; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 118 | 
   | 
 } |