forked from Public-Mirror/Textractor
cleaner output for mono
This commit is contained in:
parent
3ff31e0ac6
commit
2be920c50e
@ -30,4 +30,5 @@ enum HookParamType : unsigned
|
|||||||
HEX_DUMP = 0x4000,
|
HEX_DUMP = 0x4000,
|
||||||
HOOK_ENGINE = 0x8000,
|
HOOK_ENGINE = 0x8000,
|
||||||
HOOK_ADDITIONAL = 0x10000,
|
HOOK_ADDITIONAL = 0x10000,
|
||||||
|
KNOWN_UNSTABLE = 0x20000,
|
||||||
};
|
};
|
||||||
|
@ -16734,10 +16734,12 @@ void InsertMonoHook(HMODULE h)
|
|||||||
HookParam hp = {};
|
HookParam hp = {};
|
||||||
hp.address = addr;
|
hp.address = addr;
|
||||||
hp.type = USING_UNICODE | FULL_STRING;
|
hp.type = USING_UNICODE | FULL_STRING;
|
||||||
|
if (!loadedConfig) hp.type |= KNOWN_UNSTABLE;
|
||||||
hp.offset = 4;
|
hp.offset = 4;
|
||||||
char nameForUser[HOOK_NAME_SIZE] = {};
|
char nameForUser[HOOK_NAME_SIZE] = {};
|
||||||
strncpy_s(nameForUser, name + 1, HOOK_NAME_SIZE - 1);
|
strncpy_s(nameForUser, name + 1, HOOK_NAME_SIZE - 1);
|
||||||
if (char* end = strstr(nameForUser, " + 0x0")) *end = 0;
|
if (char* end = strstr(nameForUser, " + 0x0")) *end = 0;
|
||||||
|
if (char* end = strstr(nameForUser, "{")) *end = 0;
|
||||||
hp.text_fun = [](DWORD esp_base, HookParam*, BYTE, DWORD* data, DWORD* split, DWORD* len)
|
hp.text_fun = [](DWORD esp_base, HookParam*, BYTE, DWORD* data, DWORD* split, DWORD* len)
|
||||||
{
|
{
|
||||||
MonoString* string = (MonoString*)argof(1, esp_base);
|
MonoString* string = (MonoString*)argof(1, esp_base);
|
||||||
@ -16750,8 +16752,7 @@ void InsertMonoHook(HMODULE h)
|
|||||||
__except (EXCEPTION_EXECUTE_HANDLER) {}
|
__except (EXCEPTION_EXECUTE_HANDLER) {}
|
||||||
}(addr);
|
}(addr);
|
||||||
}
|
}
|
||||||
if (!loadedConfig) ConsoleOutput("Textractor: Mono Dynamic used brute force: if performance issues arise, please create a TextractorConfig.txt file"
|
if (!loadedConfig) ConsoleOutput("Textractor: Mono Dynamic used brute force: if performance issues arise, please specify the correct hook in the game configuration");
|
||||||
"next to the main executable and put the name of a working hook inside it");
|
|
||||||
return true;
|
return true;
|
||||||
failed:
|
failed:
|
||||||
ConsoleOutput("Textractor: Mono Dynamic failed");
|
ConsoleOutput("Textractor: Mono Dynamic failed");
|
||||||
|
@ -98,11 +98,13 @@ namespace Engine
|
|||||||
HookParam hp = {};
|
HookParam hp = {};
|
||||||
hp.address = addr;
|
hp.address = addr;
|
||||||
hp.type = USING_STRING | USING_UNICODE | FULL_STRING;
|
hp.type = USING_STRING | USING_UNICODE | FULL_STRING;
|
||||||
|
if (!loadedConfig) hp.type |= KNOWN_UNSTABLE;
|
||||||
hp.offset = -0x20; // rcx
|
hp.offset = -0x20; // rcx
|
||||||
hp.padding = 20;
|
hp.padding = 20;
|
||||||
char nameForUser[HOOK_NAME_SIZE] = {};
|
char nameForUser[HOOK_NAME_SIZE] = {};
|
||||||
strncpy_s(nameForUser, name + 1, HOOK_NAME_SIZE - 1);
|
strncpy_s(nameForUser, name + 1, HOOK_NAME_SIZE - 1);
|
||||||
if (char* end = strstr(nameForUser, " + 0x0")) *end = 0;
|
if (char* end = strstr(nameForUser, " + 0x0")) *end = 0;
|
||||||
|
if (char* end = strstr(nameForUser, "{")) *end = 0;
|
||||||
hp.length_fun = [](uintptr_t, uintptr_t data)
|
hp.length_fun = [](uintptr_t, uintptr_t data)
|
||||||
{
|
{
|
||||||
/* Artikash 6/18/2019:
|
/* Artikash 6/18/2019:
|
||||||
@ -117,8 +119,8 @@ namespace Engine
|
|||||||
__except (EXCEPTION_EXECUTE_HANDLER) {}
|
__except (EXCEPTION_EXECUTE_HANDLER) {}
|
||||||
}(addr);
|
}(addr);
|
||||||
}
|
}
|
||||||
if (!loadedConfig) ConsoleOutput("Textractor: Mono Dynamic used brute force: if performance issues arise, please create a TextractorConfig.txt file"
|
|
||||||
"next to the main executable and put the name of a working hook inside it");
|
if (!loadedConfig) ConsoleOutput("Textractor: Mono Dynamic used brute force: if performance issues arise, please specify the correct hook in the game configuration");
|
||||||
return true;
|
return true;
|
||||||
failed:
|
failed:
|
||||||
ConsoleOutput("Textractor: Mono Dynamic failed");
|
ConsoleOutput("Textractor: Mono Dynamic failed");
|
||||||
|
@ -201,7 +201,7 @@ void TextHook::Send(uintptr_t dwDataBase)
|
|||||||
}
|
}
|
||||||
__except (EXCEPTION_EXECUTE_HANDLER)
|
__except (EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
if (!err)
|
if (!err && !(hp.type & KNOWN_UNSTABLE))
|
||||||
{
|
{
|
||||||
err = true;
|
err = true;
|
||||||
ConsoleOutput("%s in %s", SEND_ERROR, hp.name);
|
ConsoleOutput("%s in %s", SEND_ERROR, hp.name);
|
||||||
@ -222,6 +222,7 @@ bool TextHook::InsertHookCode()
|
|||||||
else if (HMODULE moduleBase = GetModuleHandleW(hp.module)) address += (uint64_t)moduleBase;
|
else if (HMODULE moduleBase = GetModuleHandleW(hp.module)) address += (uint64_t)moduleBase;
|
||||||
else return ConsoleOutput(MODULE_MISSING), false;
|
else return ConsoleOutput(MODULE_MISSING), false;
|
||||||
|
|
||||||
|
VirtualProtect(location, 10, PAGE_EXECUTE_READWRITE, DUMMY);
|
||||||
void* original;
|
void* original;
|
||||||
MH_STATUS error;
|
MH_STATUS error;
|
||||||
while ((error = MH_CreateHook(location, trampoline, &original)) != MH_OK)
|
while ((error = MH_CreateHook(location, trampoline, &original)) != MH_OK)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user