Updated Patterns

This commit is contained in:
Silent 2018-04-02 20:11:06 +02:00
parent a0fd40d44d
commit 1a8bb9dd6c
No known key found for this signature in database
GPG key ID: AE53149BB0C45AF1
2 changed files with 6 additions and 35 deletions

View file

@ -45,12 +45,9 @@ typedef basic_fnv_1<fnv_prime, fnv_offset_basis> fnv_1;
namespace hook
{
ptrdiff_t baseAddressDifference;
// sets the base to the process main base
void set_base()
ptrdiff_t pattern::get_process_base()
{
set_base((uintptr_t)GetModuleHandle(nullptr));
return ptrdiff_t(GetModuleHandle(nullptr));
}
@ -112,13 +109,13 @@ private:
uintptr_t m_begin;
uintptr_t m_end;
public:
template<typename TReturn, typename TOffset>
TReturn* getRVA(TOffset rva)
{
return (TReturn*)(m_begin + rva);
}
public:
explicit executable_meta(uintptr_t module)
: m_begin(module)
{

View file

@ -16,34 +16,6 @@
namespace hook
{
extern ptrdiff_t baseAddressDifference;
// sets the base address difference based on an obtained pointer
inline void set_base(uintptr_t address)
{
#ifdef _M_IX86
uintptr_t addressDiff = (address - 0x400000);
#elif defined(_M_AMD64)
uintptr_t addressDiff = (address - 0x140000000);
#endif
// pointer-style cast to ensure unsigned overflow ends up copied directly into a signed value
baseAddressDifference = *(ptrdiff_t*)&addressDiff;
}
// sets the base to the process main base
void set_base();
inline uintptr_t getRVA(uintptr_t rva)
{
set_base();
#ifdef _M_IX86
return static_cast<uintptr_t>(baseAddressDifference + 0x400000 + rva);
#elif defined(_M_AMD64)
return static_cast<uintptr_t>(baseAddressDifference(0x140000000 + rva);
#endif
}
class pattern_match
{
private:
@ -81,6 +53,8 @@ namespace hook
uintptr_t m_rangeEnd;
private:
static ptrdiff_t get_process_base();
void Initialize(std::string_view pattern);
bool ConsiderHint(uintptr_t offset);
@ -104,7 +78,7 @@ namespace hook
public:
pattern(std::string_view pattern)
: pattern(getRVA(0))
: pattern(get_process_base())
{
Initialize(std::move(pattern));
}