From dddbc00694a9980c38ee7e9f41eaa395ba1958b6 Mon Sep 17 00:00:00 2001 From: Akash Mozumdar Date: Sun, 28 Oct 2018 02:35:19 -0400 Subject: [PATCH] small refactors --- GUI/host/host.cc | 4 +-- GUI/qtcommon.h | 1 - vnrhook/util/util.cc | 65 ++++++++++++++++++++++---------------------- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/GUI/host/host.cc b/GUI/host/host.cc index 28825a3..d012d5b 100644 --- a/GUI/host/host.cc +++ b/GUI/host/host.cc @@ -209,7 +209,7 @@ namespace Host void DetachProcess(DWORD processId) { - int command = HOST_COMMAND_DETACH; + auto command = HOST_COMMAND_DETACH; WriteFile(processRecordsByIds[processId].hostPipe, &command, sizeof(command), DUMMY, nullptr); } @@ -258,7 +258,7 @@ namespace Host ReadProcessMemory(pr.processHandle, hooks[i].hook_name, buffer.data(), hooks[i].name_length, nullptr); } ReleaseMutex(pr.sectionMutex); - return StringToWideString(buffer.c_str(), CP_UTF8); + return StringToWideString(buffer, CP_UTF8); } TextThread* GetThread(ThreadParam tp) diff --git a/GUI/qtcommon.h b/GUI/qtcommon.h index c162e16..07fc0db 100644 --- a/GUI/qtcommon.h +++ b/GUI/qtcommon.h @@ -2,6 +2,5 @@ #include "common.h" #include -#include #include #include diff --git a/vnrhook/util/util.cc b/vnrhook/util/util.cc index 10d5f41..3d5dd73 100644 --- a/vnrhook/util/util.cc +++ b/vnrhook/util/util.cc @@ -25,10 +25,30 @@ DWORD SigMask(DWORD sig) return 0xffffffff >> (count << 3); } +uint64_t SafeSearchMemory(uint64_t startAddr, uint64_t endAddr, const BYTE* bytes, short length) +{ + __try + { + for (int i = 0; i < endAddr - startAddr - length; ++i) + for (int j = 0; j <= length; ++j) + if (j == length) return startAddr + i; // not sure about this algorithm... + else if (*((BYTE*)startAddr + i + j) != *(bytes + j) && *(bytes + j) != 0x11) break; // 0x11 = wildcard + } + __except (EXCEPTION_EXECUTE_HANDLER) + { + ConsoleOutput("Textractor: SearchMemory ERROR (Textractor will likely still work fine, but please let Artikash know if this happens a lot!)"); + return 0; + } + return 0; +} + } // namespace unnamed +namespace Util +{ + // jichi 8/24/2013: binary search? -DWORD Util::GetCodeRange(DWORD hModule,DWORD *low, DWORD *high) +DWORD GetCodeRange(DWORD hModule,DWORD *low, DWORD *high) { IMAGE_DOS_HEADER *DosHdr; IMAGE_NT_HEADERS *NtHdr; @@ -49,7 +69,7 @@ DWORD Util::GetCodeRange(DWORD hModule,DWORD *low, DWORD *high) return 0; } -DWORD Util::FindCallAndEntryBoth(DWORD fun, DWORD size, DWORD pt, DWORD sig) +DWORD FindCallAndEntryBoth(DWORD fun, DWORD size, DWORD pt, DWORD sig) { //WCHAR str[0x40]; enum { reverse_length = 0x800 }; @@ -91,7 +111,7 @@ DWORD Util::FindCallAndEntryBoth(DWORD fun, DWORD size, DWORD pt, DWORD sig) return 0; } -DWORD Util::FindCallOrJmpRel(DWORD fun, DWORD size, DWORD pt, bool jmp) +DWORD FindCallOrJmpRel(DWORD fun, DWORD size, DWORD pt, bool jmp) { BYTE sig = (jmp) ? 0xe9 : 0xe8; for (DWORD i = 0x1000; i < size - 4; i++) @@ -106,7 +126,7 @@ DWORD Util::FindCallOrJmpRel(DWORD fun, DWORD size, DWORD pt, bool jmp) return 0; } -DWORD Util::FindCallOrJmpAbs(DWORD fun, DWORD size, DWORD pt, bool jmp) +DWORD FindCallOrJmpAbs(DWORD fun, DWORD size, DWORD pt, bool jmp) { WORD sig = jmp ? 0x25ff : 0x15ff; for (DWORD i = 0x1000; i < size - 4; i++) @@ -122,7 +142,7 @@ DWORD Util::FindCallOrJmpAbs(DWORD fun, DWORD size, DWORD pt, bool jmp) return 0; } -DWORD Util::FindCallBoth(DWORD fun, DWORD size, DWORD pt) +DWORD FindCallBoth(DWORD fun, DWORD size, DWORD pt) { for (DWORD i = 0x1000; i < size - 4; i++) { if (*(BYTE *)(pt + i) == 0xe8) { @@ -143,7 +163,7 @@ DWORD Util::FindCallBoth(DWORD fun, DWORD size, DWORD pt) return 0; } -DWORD Util::FindCallAndEntryAbs(DWORD fun, DWORD size, DWORD pt, DWORD sig) +DWORD FindCallAndEntryAbs(DWORD fun, DWORD size, DWORD pt, DWORD sig) { //WCHAR str[0x40]; enum { reverse_length = 0x800 }; @@ -168,7 +188,7 @@ DWORD Util::FindCallAndEntryAbs(DWORD fun, DWORD size, DWORD pt, DWORD sig) return 0; } -DWORD Util::FindCallAndEntryRel(DWORD fun, DWORD size, DWORD pt, DWORD sig) +DWORD FindCallAndEntryRel(DWORD fun, DWORD size, DWORD pt, DWORD sig) { //WCHAR str[0x40]; enum { reverse_length = 0x800 }; @@ -184,7 +204,7 @@ DWORD Util::FindCallAndEntryRel(DWORD fun, DWORD size, DWORD pt, DWORD sig) return 0; } -bool Util::CheckFile(LPCWSTR name) +bool CheckFile(LPCWSTR name) { WIN32_FIND_DATAW unused; HANDLE file = FindFirstFileW(name, &unused); @@ -206,7 +226,7 @@ bool Util::CheckFile(LPCWSTR name) return false; } -DWORD Util::FindEntryAligned(DWORD start, DWORD back_range) +DWORD FindEntryAligned(DWORD start, DWORD back_range) { start &= ~0xf; for (DWORD i = start, j = start - back_range; i > j; i-=0x10) { @@ -236,7 +256,7 @@ DWORD Util::FindEntryAligned(DWORD start, DWORD back_range) return 0; } -DWORD Util::FindImportEntry(DWORD hModule, DWORD fun) +DWORD FindImportEntry(DWORD hModule, DWORD fun) { IMAGE_DOS_HEADER *DosHdr; IMAGE_NT_HEADERS *NtHdr; @@ -260,7 +280,7 @@ DWORD Util::FindImportEntry(DWORD hModule, DWORD fun) } // Search string in rsrc section. This section usually contains version and copyright info. -bool Util::SearchResourceString(LPCWSTR str) +bool SearchResourceString(LPCWSTR str) { DWORD hModule = (DWORD)GetModuleHandleW(nullptr); IMAGE_DOS_HEADER *DosHdr; @@ -283,27 +303,7 @@ bool Util::SearchResourceString(LPCWSTR str) return false; } -namespace -{ - uint64_t SafeSearchMemory(uint64_t startAddr, uint64_t endAddr, const BYTE* bytes, short length) - { - __try - { - for (int i = 0; i < endAddr - startAddr - length; ++i) - for (int j = 0; j <= length; ++j) - if (j == length) return startAddr + i; // not sure about this algorithm... - else if (*((BYTE*)startAddr + i + j) != *(bytes + j) && *(bytes + j) != 0x11) break; // 0x11 = wildcard - } - __except (EXCEPTION_EXECUTE_HANDLER) - { - ConsoleOutput("Textractor: SearchMemory ERROR (Textractor will likely still work fine, but please let Artikash know if this happens a lot!)"); - return 0; - } - return 0; - } -} - -std::vector Util::SearchMemory(const BYTE* bytes, short length, DWORD protect) +std::vector SearchMemory(const BYTE* bytes, short length, DWORD protect) { std::vector> validMemory; for (BYTE* probe = NULL; (uint64_t)probe < 0x80000000;) // end of user memory space @@ -330,5 +330,6 @@ std::vector Util::SearchMemory(const BYTE* bytes, short length, DWORD return ret; } +} // EOF