All pastes #526773 Raw Edit

Unnamed

public cpp v1 · immutable
#526773 ·published 2007-05-31 23:24 UTC
rendered paste body
// CohEngineInjectee.cpp : Defines the entry point for the DLL application.//#include "stdafx.h"#include "AsmRewrites.h"#include "ModInterface.h"#include "Scar_Internet.h" // comment out to disable scar internet#ifdef _MANAGED#pragma managed(push, off)#endifbool g_bHaxxApplied;bool g_bReLaunch;char g_sConfigName[MAX_PATH + 1];char g_sEngineFolder[MAX_PATH + 1];void WritePtr(unsigned char* pDest, char* pStr){	char ** pp = (char **)pDest;	*pp = pStr;}void HaxxNotApplied(){	HWND hCoH = FindWindow("Plat::Window {DB3DC0D7-BBA3-4d06-BCD8-40CD448B4AE3}", 0);	SendMessage(hCoH, WM_CLOSE, 0, 0);	g_bReLaunch = true;}extern "C"{/*	Function called by injector as a thread.	Called after DllMain has finished but before the main thread is resumed.	Exported as _Haxx@4*/DWORD __declspec(dllexport) WINAPI Haxx(LPVOID pIgnored){	unsigned char* pInjectLoc = (unsigned char*) AssemblerUtil::ScanForString("\x74\x11\x68\x96\x00\x00\x00", 7, 0x7D0000);	// Allow engine data folder to be loaded by nopping a few bytes	pInjectLoc[51] = 0x90; pInjectLoc[52] = 0x90; // .text:007D68F7 jz short loc_7D692B --> nop nop	pInjectLoc[62] = 0x90; pInjectLoc[63] = 0x90; // .text:007D6902 jnz short loc_7D692B --> nop nop	// Set engine data folder	WritePtr(pInjectLoc + 8, g_sEngineFolder);	WritePtr(pInjectLoc + 71, g_sEngineFolder);#ifdef _SCAR_INTERNET_H_	Haxx_ApplyScarInternet();#endif	g_bHaxxApplied = true;	return 0x1337;}};BOOL APIENTRY DllMain( HMODULE hModule,                       DWORD  ul_reason_for_call,                       LPVOID lpReserved					 ){	if(ul_reason_for_call == DLL_PROCESS_ATTACH)	{#ifdef _SCAR_INTERNET_H_		g_hNetConnection = 0;#endif		// load our settins		char *pTmp;		if(GetModuleFileName(hModule, g_sConfigName, MAX_PATH) == 0) return FALSE;		pTmp = strstr(g_sConfigName, "Mod.dll");		if(pTmp) *pTmp = 0;		strcat(g_sConfigName, ".module");		char sDllName[256];		GetPrivateProfileString("corsix", "DllName", "NoMod", sDllName, 255, g_sConfigName);		GetPrivateProfileString("corsix", "Engine", "", g_sEngineFolder, 255, g_sConfigName);		// go go go		new CModInterface(sDllName);		g_bHaxxApplied = false;		g_bReLaunch = false;	}	else if(ul_reason_for_call == DLL_PROCESS_DETACH)	{#ifdef _SCAR_INTERNET_H_	if(g_hNetConnection != 0) InternetCloseHandle(g_hNetConnection);#endif		delete CModInterface::GetSingleton();		if(g_bReLaunch)		{			PROCESS_INFORMATION piApp;			STARTUPINFO suiStartUp = {0};			suiStartUp.cb = sizeof(STARTUPINFO);			char sDllName[MAX_PATH + 1];			GetModuleFileName(hModule, sDllName, MAX_PATH);			char *pTmp;			pTmp = strstr(sDllName, "Mod.dll");			if(pTmp) *pTmp = 0;			strcat(sDllName, "Mod.exe");			BOOL bMadeProcess = CreateProcess(sDllName,GetCommandLine(),NULL,NULL,TRUE,NORMAL_PRIORITY_CLASS,NULL, NULL,&suiStartUp, &piApp);		}	}    return TRUE;}#ifdef _MANAGED#pragma managed(pop)#endif