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 |
|
|