Changeset 993 for Daodan/src/Daodan_Patch.c
- Timestamp:
- Apr 6, 2014, 7:06:02 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Daodan/src/Daodan_Patch.c
r990 r993 45 45 DISASM MyDisasm; 46 46 int i = 0; 47 DDrStartupMessage("");48 DDrStartupMessage("");47 STARTUPMESSAGE("", 0); 48 STARTUPMESSAGE("", 0); 49 49 50 50 memset (&MyDisasm, 0, sizeof(DISASM)); 51 51 MyDisasm.EIP = (UIntPtr) from; 52 52 i = 0; 53 DDrStartupMessage("Orig before @ 0x%06x", from);53 STARTUPMESSAGE("Orig before @ 0x%06x", from); 54 54 while (i<10){ 55 55 len = Disasm(&MyDisasm); 56 56 if (len != UNKNOWN_OPCODE) { 57 DDrStartupMessage("%s, Opcode: 0x%x, len: %d, branch: %d, to: 0x%06x", MyDisasm.CompleteInstr, MyDisasm.Instruction.Opcode, len, MyDisasm.Instruction.BranchType, MyDisasm.Instruction.AddrValue);58 DDrStartupMessage(" Cat: 0x%04x, prefix count: %d", MyDisasm.Instruction.Category & 0xffff, MyDisasm.Prefix.Number );57 STARTUPMESSAGE("%s, Opcode: 0x%x, len: %d, branch: %d, to: 0x%06x", MyDisasm.CompleteInstr, MyDisasm.Instruction.Opcode, len, MyDisasm.Instruction.BranchType, MyDisasm.Instruction.AddrValue); 58 STARTUPMESSAGE(" Cat: 0x%04x, prefix count: %d", MyDisasm.Instruction.Category & 0xffff, MyDisasm.Prefix.Number ); 59 59 MyDisasm.EIP += (UIntPtr)len; 60 60 i++; 61 61 } 62 62 }; 63 DDrStartupMessage("");63 STARTUPMESSAGE("", 0); 64 64 */ 65 65 … … 78 78 if ((disasm.Instruction.Category & 0xffff) == CONTROL_TRANSFER) { 79 79 if (disasm.Prefix.Number > 0) { 80 DDrStartupMessage("Daodan:Detour: Branch in trampoline area from address 0x%08x with prefixes", from);80 STARTUPMESSAGE("Detour: Branch in trampoline area from address 0x%08x with prefixes", from); 81 81 return (void*)-1; 82 82 } … … 145 145 break; 146 146 default: 147 DDrStartupMessage("Daodan:Detour: Unknown branch in trampoline area from address 0x%08x", from);147 STARTUPMESSAGE("Detour: Unknown branch in trampoline area from address 0x%08x", from); 148 148 return (void*)-1; 149 149 } … … 155 155 } 156 156 else { 157 DDrStartupMessage("Daodan:Detour: Unknown opcode in trampoline area from address 0x%08x", from);157 STARTUPMESSAGE("Detour: Unknown opcode in trampoline area from address 0x%08x", from); 158 158 return (void*)-1; 159 159 } … … 161 161 162 162 if (branches > 1) { 163 DDrStartupMessage("Daodan:Detour: Too many branches in trampoline'd code from address 0x%08x: %d", from, branches);163 STARTUPMESSAGE("Detour: Too many branches in trampoline'd code from address 0x%08x: %d", from, branches); 164 164 return (void*)-1; 165 165 } … … 171 171 DWORD oldp; 172 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);173 STARTUPMESSAGE("Detour: Could not mark page for trampoline as executable: from address 0x%08x", from); 174 174 return (void*)-1; 175 175 } … … 179 179 MyDisasm.EIP = (UIntPtr) trampoline; 180 180 i = 0; 181 DDrStartupMessage("Trampoline @ 0x%06x", trampoline);181 STARTUPMESSAGE("Trampoline @ 0x%06x", trampoline); 182 182 while (i<10){ 183 183 len = Disasm(&MyDisasm); 184 184 if (len != UNKNOWN_OPCODE) { 185 DDrStartupMessage(MyDisasm.CompleteInstr);185 STARTUPMESSAGE("%s", MyDisasm.CompleteInstr); 186 186 MyDisasm.EIP += (UIntPtr)len; 187 187 i++; 188 188 } 189 189 }; 190 DDrStartupMessage("");190 STARTUPMESSAGE("", 0); 191 191 192 192 memset (&MyDisasm, 0, sizeof(DISASM)); 193 193 MyDisasm.EIP = disasm.EIP; 194 194 i = 0; 195 DDrStartupMessage("Orig after @ 0x%06x", disasm.EIP);195 STARTUPMESSAGE("Orig after @ 0x%06x", disasm.EIP); 196 196 while (i<7){ 197 197 len = Disasm(&MyDisasm); 198 198 if (len != UNKNOWN_OPCODE) { 199 DDrStartupMessage(MyDisasm.CompleteInstr);199 STARTUPMESSAGE("%s", MyDisasm.CompleteInstr); 200 200 MyDisasm.EIP += (UIntPtr)len; 201 201 i++; 202 202 } 203 203 }; 204 DDrStartupMessage("");204 STARTUPMESSAGE("", 0); 205 205 206 206 memset (&MyDisasm, 0, sizeof(DISASM)); 207 207 MyDisasm.EIP = (UIntPtr) from; 208 208 i = 0; 209 DDrStartupMessage("Orig start after @ 0x%06x", from);209 STARTUPMESSAGE("Orig start after @ 0x%06x", from); 210 210 while (i<3){ 211 211 len = Disasm(&MyDisasm); 212 212 if (len != UNKNOWN_OPCODE) { 213 DDrStartupMessage(MyDisasm.CompleteInstr);213 STARTUPMESSAGE("%s", MyDisasm.CompleteInstr); 214 214 MyDisasm.EIP += (UIntPtr)len; 215 215 i++; 216 216 } 217 217 }; 218 DDrStartupMessage("");219 DDrStartupMessage("");220 DDrStartupMessage("");218 STARTUPMESSAGE("", 0); 219 STARTUPMESSAGE("", 0); 220 STARTUPMESSAGE("", 0); 221 221 */ 222 222
Note:
See TracChangeset
for help on using the changeset viewer.