⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cachedext.cpp

📁 L2CasheD Extender [ClanSystem]
💻 CPP
字号:
#include "CachedExt.h"

CachedExt::CachedExt()
{
	hCACHED = OpenProcess(PROCESS_ALL_ACCESS, false, GetCurrentProcessId());

	if (!hCACHED)
	{
		//Close process
		ExitProcess(0);
	}
}

CachedExt *CachedExt::In()
{
	static CachedExt CE;

	return &CE;
}

CachedExt::~CachedExt()
{
	CloseHandle(hCACHED);
}

void CachedExt::ReplaceMem(DWORD dwBaseAddr, LPCVOID pData, SIZE_T nSize)
{
	DWORD dwOldProtect = NULL;
	SIZE_T BytesWritten = NULL;
	if(!VirtualProtect((LPVOID)dwBaseAddr, nSize, PAGE_EXECUTE_READWRITE, &dwOldProtect))
	{
		//Error while setting new protect
	}
	if (!WriteProcessMemory(hCACHED, (LPVOID)(dwBaseAddr), pData, nSize, &BytesWritten))
	{
		ExitProcess(0);
	}
	if(!VirtualProtect((LPVOID)dwBaseAddr, nSize, dwOldProtect, &dwOldProtect))
	{
		//Error while setting old protect
	}

}

void CachedExt::SetHook(BYTE OpCode, DWORD dwBaseAddr, DWORD dwTargetAddr, int nNops)
{
	DWORD dwOldProtect = NULL;
	SIZE_T BytesWritten = NULL;
	int nTempSize = 5+nNops;
	BYTE *buffer = new BYTE[nTempSize];
	if(nNops==0)
	{
		ZeroMemory(buffer,5);
		buffer[0]=OpCode;
		dwTargetAddr-=dwBaseAddr+5;
		memcpy(buffer+1,&dwTargetAddr,4);
	}else
	{
		ZeroMemory(buffer, nTempSize);
		buffer[0]=OpCode;
		dwTargetAddr-=dwBaseAddr+5;
		memcpy(buffer+1,&dwTargetAddr,4);
		for(unsigned int n=6; n < nTempSize; n++)
			buffer[n]=0x90;
	}

	if(!VirtualProtect((LPVOID)dwBaseAddr, (nTempSize), PAGE_EXECUTE_READWRITE, &dwOldProtect))
	{
		//Error while setting new protect
	}
	if (!WriteProcessMemory(hCACHED, (LPVOID)(dwBaseAddr), buffer, (nTempSize), &BytesWritten))
	{
		ExitProcess(0);
	}
	if(!VirtualProtect((LPVOID)dwBaseAddr, (nTempSize), dwOldProtect, &dwOldProtect))
	{
		//Error while setting old protect
	}

	delete buffer;
}

void CachedExt::HookDummyPacket()
{
	DWORD dwFuncAddr = (DWORD)PacketHandler;
	ReplaceMem(0x0056A960,(BYTE*)&dwFuncAddr, 4); //overwriting address, our function will be called instead of DummyPacket from cached
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -