37 lines
884 B
C++
37 lines
884 B
C++
|
|
#include "pch.h"
|
|||
|
|
#include "inlinehook.h"
|
|||
|
|
|
|||
|
|
#include <Windows.h>
|
|||
|
|
|
|||
|
|
|
|||
|
|
DWORD inlinehook::Motify_memory_attributes(int address, DWORD attributes)
|
|||
|
|
{
|
|||
|
|
DWORD Old_attributes;
|
|||
|
|
VirtualProtect(reinterpret_cast<void*>(address), Byte_Length, attributes, &Old_attributes);
|
|||
|
|
return Old_attributes;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void inlinehook::Motify_address()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
DWORD attributes = Motify_memory_attributes(m_original_address);
|
|||
|
|
|
|||
|
|
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD><EFBFBD>BYTE ʵ<><CAB5> hook
|
|||
|
|
memcpy(reinterpret_cast<void*>(m_original_address), m_self_byte, Byte_Length);
|
|||
|
|
|
|||
|
|
//<2F>ָ<EFBFBD><D6B8>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Motify_memory_attributes(m_original_address, attributes);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void inlinehook::Restore_address()
|
|||
|
|
{
|
|||
|
|
DWORD attributes = Motify_memory_attributes(m_original_address);
|
|||
|
|
|
|||
|
|
//д<><D0B4>ԭʼ<D4AD><CABC>BYTE ʵ<><CAB5> hook
|
|||
|
|
memcpy(reinterpret_cast<void*>(m_original_address), m_original_byte, Byte_Length);
|
|||
|
|
|
|||
|
|
//<2F>ָ<EFBFBD><D6B8>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Motify_memory_attributes(m_original_address, attributes);
|
|||
|
|
}
|