|
You last visited: Today at 19:44
Advertisement
Memory Write
Discussion on Memory Write within the C/C++ forum part of the Coders Den category.
01/11/2012, 17:28
|
#1
|
elite*gold: 0
Join Date: Feb 2009
Posts: 542
Received Thanks: 112
|
Memory Write
Moin,
ich mach grad ein c++ trainer tutorial durch, hab auch alles bis auf eine kleine sache verstanden ...
Nur von der logik her:
hier mit deklariere ich doch was der neue wert sein soll :
Code:
BYTE AmmoValue[] = {0xA3,0x1C,0x0,0x0};
und damit schreib ich den neuen wert:
Code:
WriteProcessMemory( hProcHandle, (BYTE*)AmmoAddressToWrite, &AmmoValue, sizeof([B]AmmoValue[/B]), NULL);
aber wieso schreibt man nicht bei der ammovalue :
Code:
int AmmoValue = 100
WriteProcessMemory( hProcHandle, (BYTE*)AmmoAddressToWrite, &AmmoValue, [B]AmmoValue[/B], NULL);
oda bin ich da total auf dem holzweg?
also das erste funkt auch ^^
|
|
|
01/11/2012, 17:34
|
#2
|
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
|
das & bedeutet, das du die Adresse der Variable angibst.
Bei dem ersten Beispiel ist damit die Startadresse gemeint (also das komplette Array).
Bei zweitem gibst du auch die Adresse der Variable an, nicht aber ihren Wert.
|
|
|
01/11/2012, 18:18
|
#3
|
elite*gold: 0
Join Date: Feb 2009
Posts: 542
Received Thanks: 112
|
Quote:
Originally Posted by HardCore.1337
das & bedeutet, das du die Adresse der Variable angibst.
Bei dem ersten Beispiel ist damit die Startadresse gemeint (also das komplette Array).
Bei zweitem gibst du auch die Adresse der Variable an, nicht aber ihren Wert.
|
irwi bin ich schwer vom begriff
das hier hab ich übernommen:
Code:
BYTE AmmoValue[] = {0xA3,0x1C,0x0,0x0};
die beiden abschnitte hab ich selbst editiert
Code:
DWORD AmmoBaseAddress = {0x1025658};
DWORD AmmoOffsets[] = {0x52};
stehen jetzt die offsets, base mit ammovalue zusammen?
ich hab immer noch von autoit das im kopf:
Code:
_MEMORYPOINTERWRITE($ADDRESS, $HANDLE, $OFFSET, $value, " float")
Code:
WriteProcessMemory(
__in HANDLE hProcess,
__in LPVOID lpBaseAddress,
__in LPCVOID lpBuffer,
__in SIZE_T nSize,
__out SIZE_T *lpNumberOfBytesWritten
);
Code:
WriteProcessMemory( hProcHandle, (BYTE*)AmmoAddressToWrite, &AmmoValue, sizeof(AmmoValue), NULL);
Angenommen ich möchte den wert der adresse auf 10 ändern wie würde des dann aussehen?
jetzt in c++
|
|
|
01/11/2012, 18:42
|
#4
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Quote:
Originally Posted by maxi39
Code:
WriteProcessMemory( hProcHandle, (BYTE*)AmmoAddressToWrite, &AmmoValue, sizeof([B]AmmoValue[/B]), NULL);
Code:
WriteProcessMemory( hProcHandle, (BYTE*)AmmoAddressToWrite, &AmmoValue, [B]AmmoValue[/B], NULL);
|
sizeof() errechnet die Größe des angegebenen Datentyps in Bytes
(1 Byte entspricht 8 Bit)
Code:
WriteProcessMemory(
__in HANDLE hProcess, // Handle zu deinem Prozess, erhälst du von OpenProcess()
__in LPVOID lpBaseAddress, //Addresse wo Daten hingeschrieben werden sollen
__in LPCVOID lpBuffer, //Daten die geschrieben werden sollen
__in SIZE_T nSize, //Größe der Daten in Bytes
__out SIZE_T *lpNumberOfBytesWritten //zur überprüfung der geschriebenen Daten
);
Diese Funktion hat nichts mit der Funktion aus AutoIt zu tun, bis auf die Tatsache das die AutoIt Funktion darauf zurückgreift. Du wirst kein Array mit Offsets angeben können!
|
|
|
01/12/2012, 07:05
|
#5
|
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
|
Quote:
Du wirst kein Array mit Offsets angeben können!
|
Natürlich geht das. Er hats doch schon erfolgreich gemacht.
|
|
|
01/12/2012, 11:49
|
#6
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
|
Quote:
Originally Posted by HardCore.1337
Natürlich geht das. Er hats doch schon erfolgreich gemacht.
|
Komisch, ich seh da nur ein Offset ;o
|
|
|
01/12/2012, 14:51
|
#7
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Beschreibung des dritten Parameters, wo er die Offsets angeben will:
Quote:
Originally Posted by MSDN
A pointer to the buffer that contains data to be written in the address space of the specified process.
|
Ein Pointer zum Puffer, der die Daten enthält.
|
|
|
01/12/2012, 16:51
|
#8
|
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
|
Du hast recht. Ich hatte eigentlich auch die zu schreibenden Daten gemeint. Wurde bissel falsch verstanden.
|
|
|
01/12/2012, 22:51
|
#9
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
|
Quote:
Originally Posted by HardCore.1337
das & bedeutet, das du die Adresse der Variable angibst.
Bei dem ersten Beispiel ist damit die Startadresse gemeint (also das komplette Array).
Bei zweitem gibst du auch die Adresse der Variable an, nicht aber ihren Wert.
|
Schwachsinn, lies den Code genauer.
Er hat das sizeof fett markiert und auch genau das ist der Unterschied zwischen den beiden Code Boxen.
|
|
|
|
Similar Threads
|
[VB]Write Memory bzw Read Memory
06/26/2010 - .NET Languages - 8 Replies
Hi
Ich hab das TuT von *Guidman* benütz um einen hack zu machen.
So aber nun hab ihc ein paar fragen könnte man memory teil kürzer machen und am besten wie kann man das selber machen weil ich will nihct immer C&P machen.
Und zu Read Memory kann man das auch machen das ein Label immer die Bestimmte Ahnzahl angiebt von dem Pointer?.(Wenn das Read Memory ist ?)
Bitte helf mir
Danke
|
Injection vs. Memory Write
12/15/2009 - Aion - 11 Replies
Hallo,
kann mir einer da mal den genauen Unterschied erklären bitte.
Ich weiß nur das Injection hohe Banngefahr hat und Memory Write wohl nicht ?
Danke
Maxx.
|
C# Write process memory
08/16/2008 - CO2 Programming - 6 Replies
ok so i have a question about how do i use the api function writeprocessmemory in C#, i already have readprocessmemory but i can't seem to get writeprocessmemory... so if anyone could show me the call and an example (preferably a pinball example) it would be very helpful :)
heres what i have so far:
//================================================ ==============================================//
// Function: MemoryOpen(int ProcessID])) //
...
|
All times are GMT +2. The time now is 19:44.
|
|