Addresses (all needed for message boxes, aimbot, and ESP):
Code:
#define aMessageBox 0x17E990
#define oMBOne 0x77
#define oMBTwo 0x2F
#define oMBThree 0xE
#define aLTClientShell 0x12850DC
#define aGameStatus 0x12F42A4
#define aLTModel 0x1280ABC
#define aIntersectSegment 0x681230
#define oMyPlayer 0x1F4
#define oPlayerStart 0x1E8
#define oPlayerSize 0xD78
And source code to my new address logger (with example search pattern included!):
Code:
#pragma once
#include <Windows.h>
#include <IOStream>
#include <String>
#include <SStream>
#include <FStream>
std::string OutputPath = ("GLoggerV1.txt"); //add a specific path if you want, otherwise it shows in Z8Games/CrossFire folder..
DWORD aAddress = 0x0;
bool CompareData(const BYTE* Address, const BYTE* Pattern, const char* Mask) {
for( ; *Mask; ++Mask, ++Address, ++Pattern) {
if((*Mask == 'x') && (*Address != *Pattern)) {
return false;
};
};
return ((*Mask) == NULL);
};
DWORD FindPattern(DWORD StartAddress, DWORD MaxSearch, const char* Pattern, const char* Mask) {
BYTE* ConvertedPattern = ((BYTE*)(Pattern));
for (DWORD Key = 0; (Key < MaxSearch); Key++) {
if (CompareData(reinterpret_cast<BYTE*>(StartAddress + Key), ConvertedPattern, Mask)) {
return ((StartAddress + Key) + 0x400000);
};
};
return 0x0;
};
void LocateAddresses() {
DWORD CrossFire = reinterpret_cast<DWORD>(GetModuleHandle("crossfire.exe")); //to use in CShell just use CShell.dll
aAddress = FindPattern(CrossFire, 0xFFFFFF, "Pattern", "Mask");
if (aAddress != 0x0) {
aAddress = (aAddress + oOffset);
};
};
void OffsetAddresses() {
DWORD CrossFire = reinterpret_cast<DWORD>(GetModuleHandle("crossfire.exe")); //to use in CShell just use CShell.dll
if (aAddress != 0x0) {
aAddress = (aAddress - CrossFire);
};
};
std::string ToHexAddress(DWORD Address) {
std::ostringstream ConversionStream;
ConversionStream << std::uppercase << std::hex << Address;
return ConversionStream.str();
};
std::string ToOutput(std::string AddressName, std::string HexAddress) {
return std::string(std::string("#define a") + AddressName + std::string(" 0x") + HexAddress + std::string("\r\n"));
};
void WriteAddressesToFile() {
std::string FinalAddress = ToOutput("Address", ToHexAddress(aAddress));
std::ofstream OutputFile;
OutputFile.open(OutputPath);
OutputFile << FinalAddress;
OutputFile.close();
};
void InitializeLogger() {
do {
Sleep(150);
} while (!GetModuleHandle("ClientFx.fxd") || !GetModuleHandle("CShell.dll"));
LocateAddresses();
OffsetAddresses();
WriteAddressesToFile();
};
bool APIENTRY DllMain(HMODULE Internals, DWORD ReasonForCall, LPVOID) {
DisableThreadLibraryCalls(Internals);
if (ReasonForCall == DLL_PROCESS_ATTACH) {
CreateThread(NULL, 0, reinterpret_cast<PTHREAD_START_ROUTINE>(InitializeLogger), NULL, 0, 0);
};
return true;
};
Thank me if used
Credits to some people on this forum for teaching me more about this stuff and some patterns (kakashi, vaisefud, programmer, etc).