| 167 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 168 |  | DDrPatch_MakeJump(&trampoline[pos], (void*)disasm.EIP); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 169 |  | DDrPatch_NOOP(from, (void*)disasm.EIP - from); | 
 
 
 
 
 
 
 
 | 170 | + |  | 
 
 
 
 
 
 
 
 | 171 | + | DWORD oldp; | 
 
 
 
 
 
 
 
 | 172 | + | if (!VirtualProtect(trampoline, 40, PAGE_EXECUTE_READWRITE, &oldp)) { | 
 
 
 
 
 
 
 
 | 173 | + | DDrStartupMessage("Daodan: Detour: Could not mark page for trampoline as executable: from address 0x%08x", from); | 
 
 
 
 
 
 
 
 | 174 | + | return (void*)-1; | 
 
 
 
 
 
 
 
 | 175 | + | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 176 |  | DDrPatch_MakeJump(from, to); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 177 |  | /* | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 178 |  | memset (&MyDisasm, 0, sizeof(DISASM)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 218 |  | DDrStartupMessage(""); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 219 |  | DDrStartupMessage(""); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 220 |  | DDrStartupMessage(""); | 
 
 
 
 
 
 
 
 
 
 
 | 221 | < | */ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 221 | > | */ | 
 
 
 
 
 | 222 | > |  | 
 
 
 
 
 
 
 
 
 
 
 | 223 |  | return trampoline; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 224 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 225 |  |  |