mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-12 10:17:22 +01:00
Move AntiDebug to xivfixes (#2264)
* Move AntiDebug to xivfixes * Update BootEnabledGameFixes * Check BootEnabledGameFixes * Apply suggestions from code review Co-authored-by: KazWolfe <KazWolfe@users.noreply.github.com> --------- Co-authored-by: KazWolfe <KazWolfe@users.noreply.github.com>
This commit is contained in:
parent
4dce0c00e8
commit
33605e3ace
6 changed files with 45 additions and 121 deletions
|
|
@ -648,6 +648,48 @@ void xivfixes::symbol_load_patches(bool bApply) {
|
|||
}
|
||||
}
|
||||
|
||||
void xivfixes::disable_game_debugging_protection(bool bApply) {
|
||||
static const char* LogTag = "[xivfixes:disable_game_debugging_protection]";
|
||||
static const std::vector<uint8_t> patchBytes = {
|
||||
0x31, 0xC0, // XOR EAX, EAX
|
||||
0x90, // NOP
|
||||
0x90, // NOP
|
||||
0x90, // NOP
|
||||
0x90 // NOP
|
||||
};
|
||||
|
||||
if (!bApply)
|
||||
return;
|
||||
|
||||
if (!g_startInfo.BootEnabledGameFixes.contains("disable_game_debugging_protection")) {
|
||||
logging::I("{} Turned off via environment variable.", LogTag);
|
||||
return;
|
||||
}
|
||||
|
||||
// Find IsDebuggerPresent in Framework.Tick()
|
||||
const char* matchPtr = utils::signature_finder()
|
||||
.look_in(utils::loaded_module(g_hGameInstance), ".text")
|
||||
.look_for_hex("FF 15 ?? ?? ?? ?? 85 C0 74 13 41")
|
||||
.find_one()
|
||||
.Match.data();
|
||||
|
||||
if (!matchPtr) {
|
||||
logging::E("{} Failed to find signature.", LogTag);
|
||||
return;
|
||||
}
|
||||
|
||||
void* address = const_cast<void*>(static_cast<const void*>(matchPtr));
|
||||
|
||||
DWORD oldProtect;
|
||||
if (VirtualProtect(address, patchBytes.size(), PAGE_EXECUTE_READWRITE, &oldProtect)) {
|
||||
memcpy(address, patchBytes.data(), patchBytes.size());
|
||||
VirtualProtect(address, patchBytes.size(), oldProtect, &oldProtect);
|
||||
logging::I("{} Patch applied at address 0x{:X}.", LogTag, reinterpret_cast<uintptr_t>(address));
|
||||
} else {
|
||||
logging::E("{} Failed to change memory protection.", LogTag);
|
||||
}
|
||||
}
|
||||
|
||||
void xivfixes::apply_all(bool bApply) {
|
||||
for (const auto& [taskName, taskFunction] : std::initializer_list<std::pair<const char*, void(*)(bool)>>
|
||||
{
|
||||
|
|
@ -658,6 +700,7 @@ void xivfixes::apply_all(bool bApply) {
|
|||
{ "backup_userdata_save", &backup_userdata_save },
|
||||
{ "prevent_icmphandle_crashes", &prevent_icmphandle_crashes },
|
||||
{ "symbol_load_patches", &symbol_load_patches },
|
||||
{ "disable_game_debugging_protection", &disable_game_debugging_protection },
|
||||
}
|
||||
) {
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ namespace xivfixes {
|
|||
void backup_userdata_save(bool bApply);
|
||||
void prevent_icmphandle_crashes(bool bApply);
|
||||
void symbol_load_patches(bool bApply);
|
||||
void disable_game_debugging_protection(bool bApply);
|
||||
|
||||
void apply_all(bool bApply);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue