fix v8 hook x64

This commit is contained in:
Akash Mozumdar 2020-02-11 23:35:23 -07:00
parent 666b0a49c0
commit e14c9b6a09
3 changed files with 12 additions and 13 deletions

View File

@ -4,7 +4,7 @@
// 8/23/2013 jichi // 8/23/2013 jichi
// Branch: ITH/common.h, rev 128 // Branch: ITH/common.h, rev 128
enum { STRING = 12, MESSAGE_SIZE = 500, PIPE_BUFFER_SIZE = 2000, SHIFT_JIS = 932, MAX_MODULE_SIZE = 120, PATTERN_SIZE = 30, HOOK_NAME_SIZE = 30, FIXED_SPLIT_VALUE = 0x10001 }; enum { STRING = 12, MESSAGE_SIZE = 500, PIPE_BUFFER_SIZE = 10000, SHIFT_JIS = 932, MAX_MODULE_SIZE = 120, PATTERN_SIZE = 30, HOOK_NAME_SIZE = 30, FIXED_SPLIT_VALUE = 0x10001 };
enum WildcardByte { XX = 0x11 }; enum WildcardByte { XX = 0x11 };
enum HostCommandType { HOST_COMMAND_NEW_HOOK, HOST_COMMAND_REMOVE_HOOK, HOST_COMMAND_FIND_HOOK, HOST_COMMAND_MODIFY_HOOK, HOST_COMMAND_HIJACK_PROCESS, HOST_COMMAND_DETACH }; enum HostCommandType { HOST_COMMAND_NEW_HOOK, HOST_COMMAND_REMOVE_HOOK, HOST_COMMAND_FIND_HOOK, HOST_COMMAND_MODIFY_HOOK, HOST_COMMAND_HIJACK_PROCESS, HOST_COMMAND_DETACH };

View File

@ -10351,16 +10351,15 @@ bool InsertV8Hook(HMODULE module)
0x5d, // pop ebp 0x5d, // pop ebp
0xc2 // ret 0xc2 // ret
}; };
if (hp.address) if (DWORD addr = MemDbg::findBytes(bytes, sizeof(bytes), hp.address, hp.address + 0x30))
if (DWORD addr = MemDbg::findBytes(bytes, sizeof(bytes), hp.address, hp.address + 0x30)) {
{ hp.address = addr;
hp.address = addr; hp.offset = 0x8 + *(BYTE*)(addr + 2); // second argument + amount that the stack pointer is offset from arguments
hp.offset = 0x8 + *(BYTE*)(addr + 2); // second argument + amount that the stack pointer is offset from arguments hp.type = USING_UNICODE | USING_STRING | NO_CONTEXT;
hp.type = USING_UNICODE | USING_STRING | NO_CONTEXT; hp.length_offset = (0x10 + *(BYTE*)(addr + 2)) / 4; // fourth argument + amount that the stack pointer is offset from arguments
hp.length_offset = (0x10 + *(BYTE*)(addr + 2)) / 4; // fourth argument + amount that the stack pointer is offset from arguments hp.text_fun = nullptr;
hp.text_fun = nullptr; NewHook(hp, "JavaScript2");
NewHook(hp, "JavaScript2"); }
}
return true; return true;
} }

View File

@ -104,7 +104,7 @@ namespace Engine
even though this should get the true length mono uses internally even though this should get the true length mono uses internally
there's still some garbage picked up on https://vndb.org/v20403 demo, don't know why */ there's still some garbage picked up on https://vndb.org/v20403 demo, don't know why */
int len = *(int*)(data - 4); int len = *(int*)(data - 4);
return len > 0 && len < 1000 ? len * 2 : 0; return len > 0 && len < PIPE_BUFFER_SIZE ? len * 2 : 0;
}; };
NewHook(hp, name); NewHook(hp, name);
} }
@ -139,7 +139,7 @@ namespace Engine
hp.length_fun = [](uintptr_t, uintptr_t data) hp.length_fun = [](uintptr_t, uintptr_t data)
{ {
int len = *(int*)(data - 4); int len = *(int*)(data - 4);
return len > 0 && len < 1000 ? len * 2 : 0; return len > 0 && len < PIPE_BUFFER_SIZE ? len * 2 : 0;
}; };
NewHook(hp, "JavaScript"); NewHook(hp, "JavaScript");
return true; return true;