All pastes #839361 Raw Edit

Someone

public cpp v1 · immutable
#839361 ·published 2007-12-31 00:02 UTC
rendered paste body
L2SP::L2SP(){	dwProcessID = GetCurrentProcessId();	L2Server = OpenProcess(PROCESS_ALL_ACCESS | PROCESS_VM_READ | PROCESS_VM_WRITE, false, dwProcessID);	if (!L2Server)	{		MessageBox(NULL, "Unable to open L2Server's Process! Please restart the server.", "Error", MB_OK);		ExitProcess(1);	}}L2SP *L2SP::Instance(){	static L2SP Ex;	return &Ex;}void L2SP::WriteMemory(DWORD *pAddress, LPCVOID pData, BYTE length){	if(!L2Server)	{		dwProcessID = GetCurrentProcessId();		L2Server = OpenProcess(PROCESS_ALL_ACCESS | PROCESS_VM_READ | PROCESS_VM_WRITE, false, dwProcessID);		if (!L2Server)		{			MessageBox(NULL, "Unable to open L2Server's Process! Please restart the server.", "Error", MB_OK);				ExitProcess(1);		}	}		DWORD dwOldProtect = NULL;	SIZE_T bWritten = NULL;	if (!VirtualProtect((LPVOID)(pAddress), length, PAGE_EXECUTE_READWRITE, &dwOldProtect))	{		//error	}	if (!WriteProcessMemory(L2Server, (LPVOID)(pAddress), (LPCVOID)pData, length, &bWritten))	{		//error		return;	}	if (!VirtualProtect((LPVOID)(pAddress), length, dwOldProtect, &dwOldProtect))	{		//error	}}void L2SP::WriteHook(BYTE opcode, BYTE *pAddress, DWORD *pFunction, BYTE bNops){	WriteMemory((DWORD *)(pAddress), (LPCVOID)&opcode, 1);	DWORD pFuncAddress = (DWORD)pFunction - (DWORD)(pAddress+5);	WriteMemory((DWORD *)(pAddress + 1), (LPCVOID)(&pFuncAddress), sizeof(pFuncAddress));	while (bNops != 0)	{		int i = 6;		WriteMemory((DWORD *)(pAddress + i), (LPCVOID)&NOP, 1);		++i;		--bNops;	}}static const BYTE CALL = 0xE8;L2SP::Instance()->WriteHook(CALL, (BYTE*)ADR_LOADDATA_HOOK, (DWORD*)Hooks::LoadDataHook, 0);