Register for your free account! | Forgot your password?

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

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

Advertisement



ProcessMemoryRead

Discussion on ProcessMemoryRead within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
FroZenBabE's Avatar
 
elite*gold: 0
Join Date: Oct 2010
Posts: 233
Received Thanks: 2,324
Unhappy ProcessMemoryRead

CODE

Hey zusammen ich habe folgendes Problem ich möchte eine DLL in ein Process injecten, den Wert einer bestimmten Adresse auslesen und zudem einen neuen Wert Addieren.Das injecten is soweit kein Problem.
Nun kenne ich mich damit nich besonders aus und jetz weis ich nicht genau was hProc ist bzw wie ich diesen Definiere soweit ich das weis ist darin der Process angegeben aber ich weis nicht wie ich das mache da ich meine dll injecte

Bin für jede Hilfe dankbar
FroZenBabE is offline  
Old 05/20/2015, 17:44   #2
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Ein Blick in die Dokumentation hilft weiter .
alpines is offline  
Old 05/20/2015, 17:58   #3
 
FroZenBabE's Avatar
 
elite*gold: 0
Join Date: Oct 2010
Posts: 233
Received Thanks: 2,324
Hab ich schon reingekuckt kann ich aber iwi nix mit anfangen
Ich versteh auch nich was genau ein Handle ist gibt nirgends ne anständige erklärung
FroZenBabE is offline  
Old 05/20/2015, 19:13   #4
 
hazejp's Avatar
 
elite*gold: 0
Join Date: Jan 2015
Posts: 62
Received Thanks: 13
Probier es mal so (angenommen, dein Wert ist 4 Bytes lang)

Code:
#include <Windows.h>

DWORD ReadValue(DWORD pid, PVOID addr)
{
	HANDLE hProcess;
	DWORD x;

	if ( ! (hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid) )
		return (DWORD)-1;

	if (FALSE == ReadProcessMemory (hProcess, addr, &x, sizeof(DWORD), NULL))
	{
		CloseHandle(hProcess);
		return (DWORD)-1;
	}

	CloseHandle(hProcess);
	return x;
}
PS: Da sich dein Code in der DLL befindet, musst du ReadProcessMemory() gar nicht benutzen;
Der Code & die Daten befinden sich im selben virtuellen Speicherbereich.
hazejp is offline  
Old 05/20/2015, 19:21   #5
 
FroZenBabE's Avatar
 
elite*gold: 0
Join Date: Oct 2010
Posts: 233
Received Thanks: 2,324
Achso d.h ich kann mir eigentlich einfach den wert der adresse in ner Variablen speichern und kann mir somit den ganzen rest schenken ?
FroZenBabE is offline  
Old 05/20/2015, 19:26   #6
 
hazejp's Avatar
 
elite*gold: 0
Join Date: Jan 2015
Posts: 62
Received Thanks: 13
Kurz gesagt: Ja.
ReadProcessMemory() & co. brauchst du wirklich nur dann, wenn du einen external Cheat programmierst
hazejp is offline  
Old 05/21/2015, 02:55   #7
 
FroZenBabE's Avatar
 
elite*gold: 0
Join Date: Oct 2010
Posts: 233
Received Thanks: 2,324
Code:
		int key;
		DWORD dwBasePointerStr = *(DWORD*)BasePointer;
		DWORD *dwStr = (DWORD*)(dwBasePointerStr + OffsetStr);
		key = *dwStr;
		*dwStr =key + 10;
Kann mir irgendjemand helfen ? Anstatt das +10 Addiert werden kommt irgendein riesengroßer Müll raus also würde der Wert immer mit 123142312 Multipliziert werden... Kein Schimmer wodrans liegt.
FroZenBabE is offline  
Old 05/21/2015, 07:13   #8
 
Terrat's Avatar
 
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
Quote:
Originally Posted by FroZenBabE View Post
Code:
		int key;
		DWORD dwBasePointerStr = *(DWORD*)BasePointer;
		DWORD *dwStr = (DWORD*)(dwBasePointerStr + OffsetStr);
		key = *dwStr;
		*dwStr =key + 10;
Kann mir irgendjemand helfen ? Anstatt das +10 Addiert werden kommt irgendein riesengroßer Müll raus also würde der Wert immer mit 123142312 Multipliziert werden... Kein Schimmer wodrans liegt.
Hast du key initialisiert? Key =0;?
Terrat is offline  
Old 05/21/2015, 13:26   #9
 
FroZenBabE's Avatar
 
elite*gold: 0
Join Date: Oct 2010
Posts: 233
Received Thanks: 2,324
Quote:
Originally Posted by Terrat View Post
Hast du key initialisiert? Key =0;?
Jop ändert auch nichts... :/
FroZenBabE is offline  
Old 05/21/2015, 16:49   #10
 
Padmak's Avatar
 
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
Natürlich ändert das nichts, du weist doch key direkt danach wieder zu

Bist du dir sicher, dass du einen int haben willst?
Ein DWORD würde wesentlich mehr Sinn machen hier
Wenn es dann immer noch nicht geht, stell erst mal sicher ob deine anderen Variablen alle die korrekten Werte haben

Padmak
Padmak is offline  
Old 05/21/2015, 17:07   #11
 
FroZenBabE's Avatar
 
elite*gold: 0
Join Date: Oct 2010
Posts: 233
Received Thanks: 2,324
Code:
                DWORD key = 0;
		DWORD dwBasePointerStr = *(DWORD*)BasePointer;
		DWORD *dwStr = (DWORD*)(dwBasePointerStr + OffsetStr);
		key = *dwStr;
		*dwStr =key + 10;
Selbes Ergebnis also *dwStr ist 10 und key wird dann = *dwstr gesezt also müsste Key = 10 sein und *dwStr = key+10 = 20
Die Adresse muss eigentlich richtig sein da er ja auch in diese Adresse hineinschreiben kann.. aber anstatt 20 steht dort halt irgendne fantasie zahl
FroZenBabE is offline  
Old 05/21/2015, 17:32   #12
 
Padmak's Avatar
 
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
Ich meine dass du dir mal *dwStr ausgeben lässt bevor du irgendwas änderst, und ob BasePointer, dwBasePointerStr und OffsetStr richtig sind
Vermutlich nämlich nicht

Padmak
Padmak is offline  
Old 05/21/2015, 19:02   #13
 
FroZenBabE's Avatar
 
elite*gold: 0
Join Date: Oct 2010
Posts: 233
Received Thanks: 2,324
dwBaseStr und OffsetStr sind 100% richtig hab ich auch grad gesagt... schlieslich gibt es die adresse an in der die Value liegt und wenn ich z.b *dwStr = 500 setze ist der Wert auch ingame zu sehen also alles paletti
Wie geb ich *dwStr aus ? is ja ne DLL
FroZenBabE is offline  
Old 05/21/2015, 19:16   #14
 
hazejp's Avatar
 
elite*gold: 0
Join Date: Jan 2015
Posts: 62
Received Thanks: 13
Quote:
Originally Posted by FroZenBabE View Post
dwBaseStr und OffsetStr sind 100% richtig hab ich auch grad gesagt... schlieslich gibt es die adresse an in der die Value liegt und wenn ich z.b *dwStr = 500 setze ist der Wert auch ingame zu sehen also alles paletti
Wie geb ich *dwStr aus ? is ja ne DLL
Am einfachsten per MessageBox, oder über die Konsole (vorher mit AllocConsole() erstellen)
hazejp is offline  
Old 05/22/2015, 10:30   #15
 
Padmak's Avatar
 
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
Nur weil du an eine Adresse schreiben kannst, heißt das noch lange nicht dass sie korrekt ist :P
Achso? Du kannst den Wert setzen, aber wenn du auf ihn zugreifst und ihn verändern willst dann funktioniert es nicht? Interessant...
Mach mal was hazejp gesagt hat, falls du keine Lust hast nachzudenken wie du eine Konsole erstellst: (habe ich früher immer benutzt, funktioniert tadellos)

Padmak
Padmak is offline  
Reply




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


Powered by vBulletin®
Copyright ©2000 - 2026, 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 ©2026 elitepvpers All Rights Reserved.