Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 21:43

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Pointer mit 2 Offsets Problem

Discussion on Pointer mit 2 Offsets Problem within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1

 
EasyFarm's Avatar
 
elite*gold: 281
Join Date: May 2011
Posts: 1,552
Received Thanks: 946
Question Pointer mit 2 Offsets Problem

Hi.
Ich habe einen 100% funktionierenden Pointer.
Es muss am Code liegen, dass das Spiel crasht.
Ich habe nähmlich bei einem 4 Offsetcode einfach die Zeilen gelöscht, wo die anderen 2 Offsets ausgelesen/gesetzt wurden.

Was ist nun an diesem Code falsch?

Code:
//////////////SPEED//////////////
#define BasePointer1 0x6C4F24
#define Points6 0x00000004
#define Points7 0x0000066e


DWORD val2 = 0;

bool State2 = false;   

void SetSpeedhack(){
	HANDLE hProc = OpenProcess(((0x000F0000L) | (0x00100000L) | 0xFFFF), 0xFFFFFF, (unsigned int)GetCurrentProcessId());

	DWORD wert1 = 0;
				RtlCopyMemory((LPVOID)((void*)(&wert1)), (PVOID*)((int*)((BasePointer1))), sizeof((PDWORD)(BasePointer1))); 
				if(wert1 > 0){
				wert1+= Points6;
				RtlCopyMemory((LPVOID)((void*)(&wert1)), (PVOID*)&(*(_Uint32t*)(wert1)), sizeof((PDWORD)(wert1)));
				wert1+= Points7;
				RtlCopyMemory((LPVOID)((void*)(&wert1)), (PVOID*)&(*(_Uint32t*)(wert1)), sizeof((PDWORD)(wert1)));
	
			
				
				DWORD val1 = 16666;

				memcpy((PVOID*)(*(int*)(&wert1)), (PWORD*)((void*)&(*(_Uint32t*)&val1)), 2);
				}
				
}

Wenn ich nun SetSpeedhack(); aufrufe crasht es.

Danke
EasyFarm is offline  
Old 10/08/2013, 16:34   #2

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,479
Received Thanks: 3,318
Ist der Code in einer DLL? Wieso benutzt du OpenProcess, wenn du bereits im Speicherbereich bist?
Solltest du eine Konsolenanwendung dafür verwenden: GetCurrentProcessId gibt dir deine Prozess-ID, somit schreibst du dann im eigenen Speicher rum.

Gefühlt würde ich sagen, dass das ganze Casting erstmal einfach ungesund ist, da hat man ja gar keine Übersicht mehr.
Und: Du hast 2 Offsets entfernt? Dir ist klar, dass dann die falsche Adresse rauskommt?
snow is offline  
Old 10/08/2013, 16:47   #3

 
EasyFarm's Avatar
 
elite*gold: 281
Join Date: May 2011
Posts: 1,552
Received Thanks: 946
Ok.
Wie ändere ch dann diesen Code hier, sodass nur 2 Offsets benutzt werden?
Er geht ja, und deswegen würde ich ihn gerne weiterbenutzen.

Code:
#define BasePointer 0x6EBE1C  
#define Points0 0x00000008  
#define Points1 0x000005dc
#define Points2 0x000002d8
#define Points3 0x00000000
#define Points4 0x0000018c

DWORD val = 0;

bool State = false;   

void punkte()    
{
    if(State)
    {
        DWORD wert = 0;
				
				HANDLE hProc = OpenProcess(((0x000F0000L) | (0x00100000L) | 0xFFFF), 0xFFFFFF, (unsigned int)GetCurrentProcessId());

				RtlCopyMemory((LPVOID)((void*)(&wert)), (PVOID*)((int*)((BasePointer))), sizeof((PDWORD)(BasePointer))); 
					if(wert > 0){
				RtlCopyMemory((LPVOID)((void*)(&wert)), (PVOID*)((int*)((BasePointer))), sizeof((PDWORD)(BasePointer)));
					wert += Points0;
				RtlCopyMemory((LPVOID)((void*)(&wert)), (PVOID*)&(*(_Uint32t*)(wert)), sizeof((PDWORD)(wert)));
					wert += Points1;
				RtlCopyMemory((LPVOID)((void*)(&wert)), (PVOID*)&(*(_Uint32t*)(wert)), sizeof((PDWORD)(wert)));
					wert += Points2;
				RtlCopyMemory((LPVOID)((void*)(&wert)), (PVOID*)&(*(_Uint32t*)(wert)), sizeof((PDWORD)(wert))); 
					wert += Points3;
				RtlCopyMemory((LPVOID)((void*)(&wert)), (PVOID*)&(*(_Uint32t*)(wert)), sizeof((PDWORD)(wert)));
					wert += Points4;
					memcpy((PVOID*)(*(int*)(&wert)), (PWORD*)((void*)&(*(_Uint32t*)&val)), 4);}

    }
}

DWORD WINAPI HackThread(LPVOID unused)
{
   
    for(; ;)  
    {
        punkte();  
        if(GetAsyncKeyState(VK_F2)){
			if(State){ State = false; }
			else{
				State = true;
				HANDLE hProc = OpenProcess(((0x000F0000L) | (0x00100000L) | 0xFFFF), 0xFFFFFF, (unsigned int)GetCurrentProcessId());

				DWORD wert = 0;
				RtlCopyMemory((LPVOID)((void*)(&wert)), (PVOID*)((int*)(BasePointer)), sizeof((PDWORD)(BasePointer)));
				if(wert > 0){
				RtlCopyMemory((LPVOID)((void*)(&wert)), (PVOID*)((int*)(BasePointer)), sizeof((PDWORD)(BasePointer)));
				wert += Points0;
				RtlCopyMemory((LPVOID)((void*)(&wert)), (PVOID*)&(*(_Uint32t*)(wert)), sizeof((PDWORD)(wert)));
				wert += Points1;
				RtlCopyMemory((LPVOID)((void*)(&wert)), (PVOID*)&(*(_Uint32t*)(wert)), sizeof((PDWORD)(wert)));
				wert += Points2;
				RtlCopyMemory((LPVOID)((void*)(&wert)), (PVOID*)&(*(_Uint32t*)(wert)), sizeof((PDWORD)(wert)));
				wert += Points3;
				RtlCopyMemory((LPVOID)((void*)(&wert)), (PVOID*)&(*(_Uint32t*)(wert)), sizeof((PDWORD)(wert)));
				wert += Points4;
				RtlCopyMemory((LPVOID)((void*)(&wert)), (PVOID*)&(*(_Uint32t*)(wert)), sizeof((PDWORD)(wert))); 
				val = wert;}
			}
		} 
        Sleep(2);
    }
}

Danke
EasyFarm is offline  
Old 10/08/2013, 16:55   #4

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,479
Received Thanks: 3,318
Tut mir leid, aber ich habe immer noch nicht ganz verstanden, wieso du unbedingt 2 Offsets haben willst. Wenn du 2 Offsets haben willst, musst du nach den entsprechenden Pointern suchen, aber so wie bisher kannst du nicht einfach 3 Offsets weg lassen.
snow is offline  
Old 10/08/2013, 16:58   #5

 
EasyFarm's Avatar
 
elite*gold: 281
Join Date: May 2011
Posts: 1,552
Received Thanks: 946
Ich habe diesen Code für einen anderen Pointer mit 4 Offsets.
Der Code klappt bei dem Pointer auch.
Nun habe ich aber einen anderen Pointer, der nur 2 Offsets hat.
Den Code vom anderen Pointer möchte ich nun für diesen Pointer umschreiben.
EasyFarm is offline  
Old 10/11/2013, 17:31   #6


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by EasyFarm View Post
Ich habe diesen Code für einen anderen Pointer mit 4 Offsets.
Der Code klappt bei dem Pointer auch.
Nun habe ich aber einen anderen Pointer, der nur 2 Offsets hat.
Den Code vom anderen Pointer möchte ich nun für diesen Pointer umschreiben.
Es ist irgendwie immer noch nicht ganz schlüssig was das ganze nun bedeuten soll. Gib doch mal ein Beispiel.

Meinst du, dass du nun beispielsweise den Score hast und... ne Zeit (?) und du für den Score 6 Offsets hast und für die Zeit nur 2?

Na du hast doch (auch wenn mir dein Code überhaupt nicht gefällt, unstrukturiert und gefühlte 10.000 mal irgendwo gecasted) eigentlich schon alles drinn. Du müsstest lediglich die überschüssigen Anweisungen entfernen und die Offsets ändern.

Übrigens denke ich nicht, dass dein Code funktioniert:

Code:
HANDLE hProc = OpenProcess(((0x000F0000L) | (0x00100000L) | 0xFFFF), 0xFFFFFF, [B](unsigned int)GetCurrentProcessId()[/B]);
Was ist das denn? Du holst dir deine eigene Prozess ID raus? Du greifst doch über eine externe Anwendung darauf zu, also bekommst du deine und schreibst damit (wie snow911 schon gesagt hat) bei dir im Speicher. Also bei der Anwendung, die eigentlich den Speicher der Zielanwendung verändern soll.

Code:
        #define BASE_OFS 0x6EBE1C

	#define SCORE_OFS1 0x1C
	#define SCORE_OFS2 0x2C
	#define SCORE_OFS3 0x3C
	#define SCORE_OFS4 0x4C
	#define SCORE_OFS5 0x5C
	#define SCORE_OFS6 0x6C

	#define TIME_OFS1 0x10
	#define TIME_OFS2 0x08

	DWORD Base;
	HANDLE hProcess;
	DWORD ProcessID;
	HWND hWindow;
	HANDLE hSnapshot;
	MODULEENTRY32 hModule;

	DWORD TempInput;
	DWORD TempOutput;

	hWindow = FindWindow(NULL, "idkumwasessichhandelt");
	GetWindowThreadProcessId(hWindow, &ProcessID);
	hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, ProcessID); // PROCESS_ALL_ACCESS ist nicht sauber, musst du abändern
	hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessID);
	Module32First(hSnapshot, &hModule);
	Base = reinterpret_cast<DWORD>(hModule.modBaseAddr) + BASE_OFS;

	TempInput = Base + SCORE_OFS1;
	ReadProcessMemory(hProcess, &TempInput, &TempOutput, sizeof(DWORD), NULL);
	// Value von Base + SCORE_OFS1 ist nun bei TempOutput
	TempInput = TempOutput + SCORE_OFS2;
	ReadProcessMemory(hProcess, &TempInput, &TempOutput, sizeof(DWORD), NULL);
	// usw..., das machst du für jede Schicht
Das sollte funktionieren, zumindest läuft es ohne Probleme bei mir. Hatte mich letztens selbst intensiv damit auseinandergesetzt. Übrigens geht das Fragment oben davon aus, dass es auch wirklich extern ist und keine DLL.

Anschließend nochmal ein paar MSDN Links die mir sehr geholfen haben:



Mostey is offline  
Reply


Similar Threads Similar Threads
Pointer und Offsets?
08/11/2013 - AutoIt - 23 Replies
Hallo ich habe ein project für ein spiel aber ich kenne micht nicht mit offsets aus. Wie kan ich das jetzt benutzen ? Meiner example code: #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <NomadMemory.au3>
Pointer+offsets lol
05/28/2013 - League of Legends - 11 Replies
Hallo, Ich arbeite gerade an einem Tool für lol welches einem im Spiel helfen soll, Auto timer etc items vorschlagen Fokus usw Ich habe nur ein Problem es sind so viele Werte und bei manchen Pointen komme ich auf keinen grünen Zweig. Vor allem die respawn zeit Kann mal wer die Base Pointer +offsets posten Tjx im voraus :)
C++ Pointer mit Offsets?
05/22/2013 - C/C++ - 12 Replies
Hi. Ich habe einen Pointer gefunden mit 5 Offsets. Hier mal ein Bild: http://img4.fotos-hochladen.net/uploads/cetcm2ox7 3i5.png Mit Autoit habe ich es nicht geschafft, da die Value sich nie geändert hat. Jetzt will ich es per DLL machen. So sieht meine DLL bis jetzt aus:
[Help] Pointer,Offsets,Etc.
05/29/2009 - Kal Online - 10 Replies
Heyjo, Aaalso... Ich hab mich vorher noch nie mit Artmoney befasst bzw. nur 1-2 mal für speedhack das wars aber auch schon. Mir geht es jetzt um den Pointer, Offsets kram. Wenn ich Pointer suchen möchte such ich erst mal die normale adresse...sagen wir jetzt von der X Coordinate in meinem Fall jetzt: 085EBDA8 jetzt mach ich nen rechtsklick drauf --> Mehr... --> Suche.. --> Pointer zu dieser Adresse suchen: 0 Ergebnisse Wenn ich Pointer ab Anfang des Speicherblocks suchen klicke, kriegt...



All times are GMT +1. The time now is 21:43.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.