Solved Writing Offset in ""common.dll"+13F3CC" by injection

Hexui Undetected CSGO Cheats Sinkicheat PUBG Cheat

Icew0lf

Software Ninjaneer
Dank Tier VIP
Fleep Tier Donator
Aug 20, 2013
614
17,558
43
hi!

im injecting a DLL into my game. the address i want to write in memory is: "common.dll"+13F3CC".
i found out allready that have to use GetModuleBase to work with that, but i have trouble.


C++:
BYTE TradelinespeedValue[] = { 0x88, 0x50, 0x0, 0x0 };

//////////////////////////////TRY////////////////////


UINT_PTR addr = (UINT_PTR)GetModuleHandle("common.dll") + 0x13F3CC;
HANDLE Freelancer = GetCurrentProcess();

DWORD WINAPI HACKthread( LPVOID param )
{
    // --- hack loop
	while (1) {

		if (TRADELINE)
		{
					WriteProcessMemory(Freelancer, (void*)addr, &TradelinespeedValue, 4, 0);
					Sleep(50);
		}
	}
	return 0;
}
i wonder whats wrong with this code? i know for a console application i have to find out the processID etc and work with this code instead:
C++:
DWORD GetModuleBaseExtern(const DWORD dwProcessId, const char *szModuleName)
{
#ifdef _GMBE_CHECK_PARAMS_
	if (!dwProcessID) || (!szModuleName) return 0;
#endif

	HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessId);
	if (!hSnap) return 0;

	MODULEENTRY32 me;
	me.dwSize = sizeof(MODULEENTRY32);

	DWORD dwReturn = 0;

	if (Module32First(hSnap, &me)) {
		while (Module32Next(hSnap, &me)) {
			if (lstrcmpi(me.szModule, szModuleName) == 0) {
				dwReturn = (DWORD)me.modBaseAddr;
				break;
			}
		}
	}

	CloseHandle(hSnap);

	return dwReturn;
}
but since im injecting i cant use it.
some1 have a tip?

normal read/write is no problem but that "*.DLL"+ ???? gives me a headache.

thanks
 
Last edited:

Icew0lf

Software Ninjaneer
Dank Tier VIP
Fleep Tier Donator
Aug 20, 2013
614
17,558
43
nope...im use a On/Off Toggle via ingame menu, it just nothing happens but i still can use other options from the menu (where i write normal exe values without using a DLL as base)
 
Last edited:

Icew0lf

Software Ninjaneer
Dank Tier VIP
Fleep Tier Donator
Aug 20, 2013
614
17,558
43
yeah..looked like this:

C++:
BYTE TradelinespeedValue[] = { 0x88, 0x50, 0x0, 0x0 };
DWORD Address = (DWORD)GetModuleHandle("common.dll");
HANDLE Freelancer = GetCurrentProcess();

DWORD WINAPI HACKthread( LPVOID param )
{
    // --- hack loop
	while (1) {

		if (TRADELINE)
		{
			WriteProcessMemory(Freelancer, (LPVOID)(Address+ 0x13F3CC), &TradelinespeedValue, 3, 0);
			Sleep(50);
		}
	}
	return 0;
}
:confused:

btw..is (Address+ 0x13F3CC) correct? or should it look like like Address+ 0x13F3CC without the brackets?
 
Last edited:

Icew0lf

Software Ninjaneer
Dank Tier VIP
Fleep Tier Donator
Aug 20, 2013
614
17,558
43
this is my whole main..its mostly a part from the D3D menu from Hans211, the part in the bottom is the hackthread...but i didnt worked yet

C++:
#include "d3dbase.h"
#include <stdio.h>
#include <windows.h>
#include <iostream>
#include <conio.h>
#include <string>
#include <fstream>
#include <float.h>
#include <TlHelp32.h>
#include <psapi.h>
#pragma comment(lib, "Psapi.lib")
using namespace std;


// group states
int		CH_ESP	  = 1;
int		CH_weap	      = 1;
// item  states
int		CH_stamina	  = 0;		// stealth as default
int		CH_fastammo   = 0;
int		CH_fastflag   = 0;
int		CH_nospread   = 0;
int		CH_fasthealth = 0;
int		CH_fastrepair = 0;
int		CH_norecoil   = 0;
int		CH_unlammo	  = 0;

// none standard options
char	*opt_Grp[]     = { "+","-" };
char	*opt_OffOn[]   = { "Off","On" };
char	*opt_Stamina[] = { "Off","Stealth","Full" };

D3DMenu	*pMenu=NULL;

//VirtualProtect((LPCVOID*)Address, sizeof(int), PAGE_EXECUTE_READWRITE, &oldprotection);

// Change this to make your own menu	
void RebuildMenu(void)
{
  pMenu->AddGroup("[ESP]" , &CH_ESP, opt_Grp);
  if (CH_ESP) {
	  //pMenu->AddItem("Stamina"       , &CH_stamina   , opt_Stamina, 3);
	  pMenu->AddItem("Player ESP"     , &CH_fastammo  , opt_OffOn);
	  pMenu->AddItem("Name ESP"   , &CH_fastrepair, opt_OffOn);
	  pMenu->AddItem("Distance ESP", &CH_fastrepair, opt_OffOn);
	  pMenu->AddItem("NPC ESP", &CH_fasthealth, opt_OffOn);
	  pMenu->AddItem("Wireframe modus", &CH_fastrepair, opt_OffOn);
	  
  }
  pMenu->AddGroup("[Other hacks]", &CH_weap  , opt_Grp);
  if (CH_weap) {
	  pMenu->AddItem("Tradelinehack"	 , &TRADELINE  , opt_OffOn);
	  pMenu->AddItem("Aimbot"	 , &CH_norecoil  , opt_OffOn);
	  pMenu->AddItem("Unlimited energy", &CH_unlammo   , opt_OffOn);
  }
}

// called with every EndScene
void DoMenu(pD3DdeviceX pDevice)
{
	if (pMenu==0) {												// first time , create the menu
	    pMenu = new D3DMenu("-=[AllSeeingEye]=-",100,160);	// title, maxitems,width
		pMenu->visible=1;										// make it visible
		pMenu->col_title=0xffffffff;							// change title color to white
	} else {
		
		if (pMenu->noitems==0) RebuildMenu();
		
	    pMenu->Show(pFont);
		pMenu->Nav();
	}
}


//////////////////////////////TRY////////////////////

DWORD WINAPI HACKthread( LPVOID param )
{

	while (1) {
		HANDLE hProc = GetCurrentProcess();
		BYTE TradelinespeedValue[] = { 0x88, 0x50, 0x00, 0x00 };
		DWORD dwCommonDllBase = 0, dwAddress = 0x13F3CC;

		while (!dwCommonDllBase){
			dwCommonDllBase = (DWORD)GetModuleHandle("common.dll");
		}
		dwAddress += dwCommonDllBase;

		if (TRADELINE)
		{
			
			WriteProcessMemory(hProc, (void*)dwAddress, &TradelinespeedValue, 4, 0);
			Sleep(50);
		}
	}
	return 0;
}
when i pasted
C++:
void HackThread(void*);
 
BOOL APIENTRY DllMain(HINSTANCE hDll,DWORD dwReason,void* pReserved)
{
     DisableThreadLibraryCalls(hDll);
     if(dwReason==DLL_PROCESS_ATTACH){
          _beginthread(&HackThread,0,0);
     }
     return TRUE;
}
the _beginthread was not defined, didnt know how to fix this so i dont included this part yet...will be the reason why it didnt worked yet :s
 

Icew0lf

Software Ninjaneer
Dank Tier VIP
Fleep Tier Donator
Aug 20, 2013
614
17,558
43
nah i allready included it...the function was called :Dmy main is just called d3dbase. i attached my files..its without a compiled DLL just the menu and hackbase files. like i said the menu works ingame and also writeprocessmemory...i included process.h now too but there is no difference..have a look. just nothing happens.

EDIT: needs approval yet
 

Attachments

Last edited:

squeenie

Hacker
Meme Tier VIP
Dank Tier Donator
Mar 6, 2013
677
5,478
37
You're on Fleep's website posting on Fleep's forum so why not watch some of Fleep's videos? Particularly the ones on dll injection?
Common sense bro!
 

Nether

The Angel Of Verdun
Meme Tier VIP
Dank Tier Donator
Dec 11, 2013
293
3,738
16
well first of all with dll injection you dont need to use WPM or any other header to write/read memory, something like this should suffice:

NOTE: this is not tested but it should get you off to a good start, also take into consideration what other people have said in this thread.

C++:
using namespace std;

DWORD WINAPI MainThread(LPVOID param);

BOOL WINAPI DllMain(HMODULE hModule, DWORD reason, LPVOID reserved)
{
	if (reason == DLL_PROCESS_ATTACH)
	{
		CreateThread(0, 0, MainThread, 0, 0, 0);
	}

	return TRUE;
}

DWORD WINAPI MainThread(LPVOID param)
{
	DWORD Base = (DWORD)GetModuleHandleA("common.dll");
	BYTE TradelinespeedValue[] = { 0x88, 0x50, 0x0, 0x0 };
	while (1)
	{
		if (TRADELINE)
		{
			*(BYTE*)(Base + 0x13F3CC) = *(BYTE*)TradelinespeedValue; // untested, shouldn't really use a byte array as a variable to write
			Sleep(50);
		}
	}

	return 0;
}
also instead of:

C++:
	BYTE TradelinespeedValue[] = { 0x88, 0x50, 0x0, 0x0 };
you should use int (4 bytes) or something a little easier to use/understand

like this:

C++:
*(int*)(Base + 0x13F3CC) = 20616; //I converted the bytes for you into 4 bytes :) think i got it correct, its either this or 34896
 
Last edited:

Icew0lf

Software Ninjaneer
Dank Tier VIP
Fleep Tier Donator
Aug 20, 2013
614
17,558
43
squeenie
ive seen most of his videos...the DLL tuts are very nice but dont include the case when u have to write an offset like "xyz.dll"+0x12345.
Nether
thanks for your help, ill try it directly when i come home! :D
 

Rake

Cesspool Admin
Administrator
Jan 21, 2014
12,164
78,998
2,398
C++:
// ModuleMgr.h

#ifndef _MOD_MANAGER_H
#define _MOD_MANAGER_H

#include <Windows.h>
#include <Psapi.h>

class ModuleManager {

public:
ModuleManager() {};
~ModuleManager() {};

MODULEINFO getModuleInfo(_In_ char* szModule);
};

#endif

// ModuleMgr.cpp

MODULEINFO ModuleManager::getModuleInfo(_In_ char* szModule) {

MODULEINFO lpmodinfo;
HMODULE hModule = GetModuleHandleA(szModule);
HANDLE hProcess = GetCurrentProcess();

memset(&lpmodinfo, 0, sizeof(lpmodinfo));

if (hModule != NULL && hProcess != NULL) {

    if (SUCCEEDED(GetModuleInformation(hProcess, hModule, &lpmodinfo, sizeof(MODULEINFO))))
        return lpmodinfo;
}

    return lpmodinfo;
}

// main.cpp

ModuleManager *ModMgr = new ModuleManager;

MODULEINFO moduleInfo = ModMgr->getModuleInfo("common.dll");

unsigned long myAddress = (unsigned long)moduleInfo.lpBaseOfDll + 0x13F3CC;

_cprintf("Module Base 0x%X + 0x13F3CC = 0x%X\n", moduleInfo.lpBaseOfDll, myAddress);
Of course, you can make another function that returns the address of what you need but I'll leave that up to you.

Enjoy. :rolleyes:
 
Last edited by a moderator:

Icew0lf

Software Ninjaneer
Dank Tier VIP
Fleep Tier Donator
Aug 20, 2013
614
17,558
43
ok...prepare for some noobish questions, but i want to learn :p

@ nether
i tried both of ur techniques u teached me, the "*(BYTE*)(Base + 0x13F3CC) = *(BYTE*)TradelinespeedValue;" and also the "*(int*)(Base + 0x13F3CC) = 20616;", both dont work but FREELANCER (my game) crashed 10 seconds later....maybe im just missing some privileges?! i see this as a good sign..it never crashed before :cool: do i need virtual protect maybe? guyishay told me that i might need it.
what could cause the crash?


@<include> (new name again?:) )
allright...thanks for your stuff! i think i almost managed to get it working.

i created the 3 files you suggested..those look like this:

Main:
C++:
#include <Windows.h>
#include <Psapi.h>
#include "ModuleMgr.h"
#include <conio.h>

int main(void)
{


	ModuleManager *ModMgr = new ModuleManager;

	MODULEINFO moduleInfo = ModMgr->getModuleInfo("common.dll");

	unsigned long myAddress = (unsigned long)moduleInfo.lpBaseOfDll + 0x13F3CC;
	_cprintf("Module Base 0x%X + 0x13F3CC = 0x%X\n", moduleInfo.lpBaseOfDll, myAddress);

	Sleep(100000);
}
ModuleMgr.h:
C++:
#ifndef _MOD_MANAGER_H
#define _MOD_MANAGER_H

#include <Windows.h>
#include <Psapi.h>

class ModuleManager {

public:
	ModuleManager() {};
	~ModuleManager() {};

	MODULEINFO getModuleInfo(_In_ char* szModule);
};

#endif
and ModuleMgr.cpp:
C++:
#include <Windows.h>
#include <Psapi.h>
#include "ModuleMgr.h"
#include <string>

MODULEINFO ModuleManager::getModuleInfo(_In_ char* szModule) {

	MODULEINFO lpmodinfo;
	HMODULE hModule = GetModuleHandleA(szModule);
	HANDLE hProcess = GetCurrentProcess();

	memset(&lpmodinfo, 0, sizeof(lpmodinfo));

	if (hModule != NULL && hProcess != NULL) {

		if (SUCCEEDED(GetModuleInformation(hProcess, hModule, &lpmodinfo, sizeof(MODULEINFO))))
			return lpmodinfo;
	}

	return lpmodinfo;
}
i have some questions now...
1. if i run this as console application it just writes: "Module Base 0x0 + 0x13F3CC = 0x13F3CC". if i start freelancer and then run it it returns the same, so i think i A. need to inject it (i tried this...but then there is no window which tells me the output) or B. i need to run this as console app but need to add some code in the ModuleMgr.cpp and need to change
C++:
HANDLE hProcess = GetCurrentProcess();
so that i need to selected a Process before?

i somehow need to let the program know where to search for the common.dll ?

im happy about some tipps...i want to feed this ModuleMgr now with the Freelancer.exe so it knows which process to search..or is it not neccessary?

EDIT: missed your last sentence <include>, seems i need another function...i read some articles..thanks so far!


thanks in advance guys! thanks for your time!

spectre
 
Last edited:

Rake

Cesspool Admin
Administrator
Jan 21, 2014
12,164
78,998
2,398
You need to inject it into the game. :)

I'll give you a DLL which you could inject in a few minutes.

[EDIT]

Here, give it a spin and see what it returns. Inject it in the game and a small console window will open. Hit Numpad 1 to see the stuff you want to see or Numpad 5 to unload the DLL. :)

[EDIT 2]

Press the DEL key (under INS) to get the stuff you want or press INS (above DEL) to unload the DLL. :)
 

Attachments

Last edited by a moderator:

Icew0lf

Software Ninjaneer
Dank Tier VIP
Fleep Tier Donator
Aug 20, 2013
614
17,558
43
unfortunately i use a ROCCAT RYOS TKL PRO... its a small keyboard,i dont have a numpad :eek: ;) can u change it to normal 1 and 5 maybe? ur a star!

btw in my main the injection looks like this:
C++:
int D3Dinit(void)
{
	DWORD		hD3D, adr, *vtbl;

	// --- wait for home key to start
	//while ((GetAsyncKeyState(VK_F5) & 0x8000) == 0)  Sleep(200);
	// wait for the d3dx dll
	hD3D=0;
	do {
		hD3D = (DWORD)GetModuleHandle(D3Ddllname);
		Sleep(10);
	} while(!hD3D);
	adr = FindPattern(hD3D, 0x128000, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx");
	if (adr) {
		memcpy(&vtbl,(void *)(adr+2),4);
		pReset	  = (oReset)	DetourCreate((PBYTE)vtbl[RESET]   , (PBYTE)myReset   ,5);
 		pEndScene = (oEndScene)	DetourCreate((PBYTE)vtbl[ENDSCENE], (PBYTE)myEndScene,5);
 	}
	CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)HACKthread, NULL, NULL, NULL);
	return 0;
}

BOOL WINAPI DllMain ( HMODULE hDll, DWORD dwReason, LPVOID lpReserved )
{
	DisableThreadLibraryCalls(hDll);
	if (dwReason == DLL_PROCESS_ATTACH) {		
		CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)D3Dinit, NULL, NULL, NULL);
			}
	return TRUE;
}
like u can see the D3Dinit is created first and from there the hackthread...shouldnt be a problem if its not created in the DllMain itself or? just want to make sure
 

Rake

Cesspool Admin
Administrator
Jan 21, 2014
12,164
78,998
2,398
unfortunately i use a ROCCAT RYOS TKL PRO... its a small keyboard,i dont have a numpad :eek: ;) can u change it to normal 1 and 5 maybe? ur a star!
New version uploaded! :)
 
Last edited by a moderator:

Icew0lf

Software Ninjaneer
Dank Tier VIP
Fleep Tier Donator
Aug 20, 2013
614
17,558
43
-ROUTINE STARTS-

Entry point: 0x639207F
Base of Module: 0x6260000
Size of Image: 0x344000

>> Module Base + 0x13F3CC = 0x639F3CC <<

ROUTINE ENDS

0x639F3CC is what cheatengine also told me for the offset for the TradelineSpeedvalue. i wonder why it crashes from what Nether told me to edit the address. protected somehow? like i said, i can change the value in CE and it works

ps: great dll!
 
Last edited:

Rake

Cesspool Admin
Administrator
Jan 21, 2014
12,164
78,998
2,398
-ROUTINE STARTS-

Entry point: 0x639207F
Base of Module: 0x6260000
Size of Image: 0x344000

>> Module Base + 0x13F3CC = 0x639F3CC <<

ROUTINE ENDS

0x639F3CC is what cheatengine also told me for the offset for the TradelineSpeedvalue. i wonder why it crashes from what Nether told me to edit the address. protected somehow? like i said, i can change the value in CE and it works

ps: great dll!
Great to see that it works. I'll put the source here so you can play around with it. :)
 

Icew0lf

Software Ninjaneer
Dank Tier VIP
Fleep Tier Donator
Aug 20, 2013
614
17,558
43
thanks...i think i will create a new project without the D3Dmenu to see if i can get the Value changed somehow ...maybe i messed it up somewhere.
 

Rake

Cesspool Admin
Administrator
Jan 21, 2014
12,164
78,998
2,398
thanks...i think i will create a new project without the D3Dmenu to see if i can get the Value changed somehow ...maybe i messed it up somewhere.
Sounds like a great plan! :)

C++:
//##############
/* MAIN.CPP */
//##############

#define WIN32_LEAN_AND_MEAN

#include <Windows.h>
#include <conio.h>

#include "modulemgr.h"

DWORD WINAPI Hax_Main(LPVOID param);

BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) {

    if (reason == DLL_PROCESS_ATTACH) {
        AllocConsole();
        AttachConsole(GetProcessId(instance));
        CreateThread(0, 0, Hax_Main, 0, 0, 0);
    } else if (reason == DLL_PROCESS_DETACH)
        FreeConsole();

    return TRUE;
}

DWORD WINAPI Hax_Main(LPVOID param) {

    while (true) {

        if (GetAsyncKeyState(VK_INSERT) & 1) {
            HMODULE myModule = GetModuleHandleA("<DLL_HERE>");
            FreeLibraryAndExitThread(myModule, NULL);
        }

        if (GetAsyncKeyState(VK_DELETE) & 1) {

            MODULEINFO modInfo = ModMgr->getModuleInfo("common.dll");

            unsigned long myAddress = (unsigned long)modInfo.lpBaseOfDll + 0x13F3CC;

            _cprintf("===[ ROUTINE STARTS ]===\n\n");
            _cprintf("[1] Entry Point = 0x%X\n", modInfo.EntryPoint);
            _cprintf("[2] Base of Module = 0x%X\n", modInfo.lpBaseOfDll);
            _cprintf("[3] Size of Image = 0x%X\n\n", modInfo.SizeOfImage);
            _cprintf(">> [4] Module Base + 0x13F3CC = 0x%X <<\n\n", myAddress);
            _cprintf("===[ ROUTINE ENDS ]===\n\n");
        }
    }
    return NULL;
}
C++:
//##############
/* MODULEMGR.H */
//##############

#ifndef _MOD_MANAGER_H
#define _MOD_MANAGER_H

#pragma once

#include <Windows.h>
#include <Psapi.h>

class ModuleManager {

public:
    ModuleManager() {};
    ~ModuleManager() {};

    MODULEINFO getModuleInfo(_In_ char* szModule );
};

extern ModuleManager *ModMgr;

#endif
C++:
//##############
/* MODULEMGR.CPP */
//##############

#include "modulemgr.h"

ModuleManager *ModMgr = new ModuleManager();

MODULEINFO ModuleManager::getModuleInfo( char* szModule ) {
    
    MODULEINFO lpmodinfo;
    HMODULE hModule = GetModuleHandleA(szModule);
    HANDLE hProcess = GetCurrentProcess();

    memset(&lpmodinfo, 0, sizeof(lpmodinfo));

    if (hModule != NULL && hProcess != NULL) {

        if (SUCCEEDED(GetModuleInformation(hProcess, hModule, &lpmodinfo, sizeof(MODULEINFO))))
            return lpmodinfo;
    }

    return lpmodinfo;
}
Feel free to edit them the way you want. :)
 
Last edited by a moderator:

Icew0lf

Software Ninjaneer
Dank Tier VIP
Fleep Tier Donator
Aug 20, 2013
614
17,558
43
great! thanks for that!
ok this gives me a headache..i tried to create a normal DLL which i inject which does nothing else then access the SpeedValue. Have a look pls:

i started out with my Main.cpp:
C++:
#include <Windows.h>
#include <process.h>
#include "test_hack.h"


extern void TESTHACK();

BOOL WINAPI DllMain ( HMODULE hModule, DWORD dwReason, LPVOID lpvReserved)
{
    switch ( dwReason ) {
        case DLL_PROCESS_ATTACH:

            DisableThreadLibraryCalls(hModule);

			CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)TESTHACK, NULL, NULL, NULL);
	        break;            
        case DLL_PROCESS_DETACH:
            break;
        case DLL_THREAD_ATTACH:
            break;
        case DLL_THREAD_DETACH:
            break;
    }
    return TRUE;
}
like u can see i create the Thread TESTHACK and include test_hack.h which u can see here:
C++:
#include <windows.h>
#include "options.h"

bool TradelineSpeed;

void TESTHACK()
{
	while (true)
	{
		
		if (GetKeyState(VK_F12) < 0)
		{
			if (!TradelineSpeed){
				TradelineSpeed = true;
								
			}
			else{
				TradelineSpeed = false;
				MOVE_SPEED(2500.0);
			}
		}

		if (TradelineSpeed) MOVE_SPEED(3500.0);
		Sleep(1);
	}

}
here i define what the hack does if F12 is pressed. "options.h" is included which u can see here:
C++:
#include "Adresses.h"

void MOVE_SPEED(float Speed)
{
	*(float*)(*(DWORD*)ADDR_BASE + MOVEMENT_OFFSET) = Speed;
}
here i define the Speed itself....and include the "Adresses.h" which u can see here:
C++:
//TradelineSpeedOffsets

#define ADDR_BASE 0x6260000
#define MOVEMENT_OFFSET 0x13F3CC
...here are the Offsets for the ADDR_BASE (Which is in this case the Common.dll) + the speedvalue Offset.

The ModuleMgr from <include> also gives me the ADDR_BASE 0x6260000 as Module Base for the common.dll.

my game still crashes...and the value wasnt even edited like i checked in CE at the same time :mad:

any ideas? can i check if the dll is kinda protected? how does CE edit this specific offsets without causing a crash? im pretty sure i did everything right this time, maybe also with Nether's way he told me...any way for me to gain more access to the DLL? :foreveralone:

btw i run Win7 64 Bit if this is important
 
Last edited:

Rake

Cesspool Admin
Administrator
Jan 21, 2014
12,164
78,998
2,398
C++:
#define SPEED 3500.0f

MODULEINFO modInfo = ModMgr->getModuleInfo("common.dll");
unsigned long myAddress = (unsigned long)modInfo.lpBaseOfDll + 0x13F3CC;

>> *(float*)(myAddress) = SPEED;
Should work fine.
 
Last edited by a moderator:
Attention! Before you post:

Read the How to Ask Questions Guide
99% of questions are answered in the Beginner's Guide, do it before asking a question.

No Hack Requests. Post in the correct section.  Search the forum first. Read the rules.

How to make a good post:

  • Fill out the form correctly
  • Tell us the game name & coding language
  • Post everything we need to know to help you
  • Ask specific questions, be descriptive
  • Post errors, line numbers & screenshots
  • Post code snippets using code tags
  • If it's a large project, zip it up and attach it

If you do not comply, your post may be deleted.  We want to help, please make a good post and we will do our best to help you.

Community Mods