Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 19:44

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

Advertisement



Memory Write

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

Reply
 
Old   #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 ^^
maxi39 is offline  
Old 01/11/2012, 17:34   #2
 
HardCore.1337's Avatar
 
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.
HardCore.1337 is offline  
Thanks
1 User
Old 01/11/2012, 18:18   #3
 
elite*gold: 0
Join Date: Feb 2009
Posts: 542
Received Thanks: 112
Quote:
Originally Posted by HardCore.1337 View Post
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++
maxi39 is offline  
Old 01/11/2012, 18:42   #4
 
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
Quote:
Originally Posted by maxi39 View Post

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!
jacky919 is offline  
Thanks
1 User
Old 01/12/2012, 07:05   #5
 
HardCore.1337's Avatar
 
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.
HardCore.1337 is offline  
Old 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 View Post
Natürlich geht das. Er hats doch schon erfolgreich gemacht.
Komisch, ich seh da nur ein Offset ;o
MoepMeep is offline  
Old 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.
jacky919 is offline  
Old 01/12/2012, 16:51   #8
 
HardCore.1337's Avatar
 
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.
HardCore.1337 is offline  
Old 01/12/2012, 22:51   #9


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Quote:
Originally Posted by HardCore.1337 View Post
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.
MrSm!th is offline  
Reply


Similar Threads 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.


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