修复蜜蜡
This commit is contained in:
@@ -212,7 +212,7 @@ class CMemPool
|
||||
{
|
||||
private:
|
||||
size_t SysPageSize;
|
||||
void *MemPool;
|
||||
void* MemPool;
|
||||
std::map<void*, size_t> AllocMap;
|
||||
std::map<void*, size_t> FreeMap;
|
||||
public:
|
||||
@@ -254,7 +254,7 @@ public:
|
||||
}
|
||||
void* alloc(size_t _size)
|
||||
{
|
||||
void *pBuf = NULL;
|
||||
void* pBuf = NULL;
|
||||
for (std::map<void*, size_t>::iterator iter = FreeMap.begin(); iter != FreeMap.end(); iter++)
|
||||
{
|
||||
if (iter->second >= _size)
|
||||
@@ -350,32 +350,58 @@ public:
|
||||
}
|
||||
private:
|
||||
bool Actived;
|
||||
void *Src;
|
||||
void **SrcPtr;
|
||||
void *Dst;
|
||||
void* Src;
|
||||
void** SrcPtr;
|
||||
void* Dst;
|
||||
unsigned char* HookCode;
|
||||
size_t SrcCodeSize;
|
||||
size_t HookCodeSize;
|
||||
};
|
||||
|
||||
class CodeHook
|
||||
class Mem
|
||||
{
|
||||
public:
|
||||
static void WriteUChar(void *Addr, unsigned char Value)
|
||||
static void WriteUChar(void* Addr, unsigned char Value)
|
||||
{
|
||||
WriteBytes(Addr, &Value, 1);
|
||||
}
|
||||
static void WriteUShort(void *Addr, unsigned short Value)
|
||||
static void WriteUShort(void* Addr, unsigned short Value)
|
||||
{
|
||||
WriteBytes(Addr, &Value, 2);
|
||||
}
|
||||
static void WriteUInt(void *Addr, unsigned int Value)
|
||||
static void WriteUInt(void* Addr, unsigned int Value)
|
||||
{
|
||||
WriteBytes(Addr, &Value, 4);
|
||||
}
|
||||
static void WriteBytes(void *Addr, void *Data, size_t Len)
|
||||
static void WriteBytes(void* Addr, void* Data, size_t Len)
|
||||
{
|
||||
CMemPool::GetInstance()->SetPageProtect(Addr, PROT_READ | PROT_WRITE | PROT_EXEC);
|
||||
memcpy(Addr, Data, Len);
|
||||
}
|
||||
|
||||
static void HookJmp(int base, int func_)
|
||||
{
|
||||
char Jmp[5] = {};
|
||||
*((char*)Jmp) = 0xE9;
|
||||
*((int*)(Jmp + 1)) = func_ - base - 5;
|
||||
WriteBytes((void*)base, Jmp, 5);
|
||||
}
|
||||
|
||||
static void HookCall(int base, int func_)
|
||||
{
|
||||
char Jmp[5] = {};
|
||||
*((char*)Jmp) = 0xE8;
|
||||
*((int*)(Jmp + 1)) = func_ - base - 5;
|
||||
WriteBytes((void*)base, Jmp, 5);
|
||||
}
|
||||
|
||||
static void HookCall_6(int base, int func_)
|
||||
{
|
||||
char Jmp[6] = {};
|
||||
*((char*)Jmp) = 0xE8;
|
||||
*((int*)(Jmp + 1)) = func_ - base - 5;
|
||||
*((char*)(Jmp + 5)) = 0x90;
|
||||
WriteBytes((void*)base, Jmp, 5);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user