Register for your free account! | Forgot your password?

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

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

Advertisement



ReadProcessMemory, C++ Problem

Discussion on ReadProcessMemory, C++ Problem within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
●ROBBY●'s Avatar
 
elite*gold: 1
Join Date: Jun 2009
Posts: 1,142
Received Thanks: 158
ReadProcessMemory, C++ Problem

Hi, ich mach mich gerade ans Memory editing in C++ aber habe nen Problem mit ReadProcessMemory.
Hier mal mein Code:
PHP Code:
#include <iostream>
#include <limits>
#include <windows.h>

using namespace std;

int main()
{
    
HWND hwnd;
    
hwnd FindWindow (0,"METIN2");
    
DWORD id;
    
HANDLE processhandle;
    
int value;
    
unsigned adress 0x0061BFEC;

    if (!
hwnd)
    {
        
cout << "Metin2 nicht gefunden.";
    }

    else
    {
    
GetWindowThreadProcessId(hwnd,&id);
    
processhandle OpenProcess(PROCESS_ALL_ACCESS ,false,id);


    
ReadProcessMemory (processhandle,(LPCVOID)adress,&value,sizeof (value),NULL);

    
CloseHandle (processhandle);

    
cout << &value << "\n";
    }


    
cin.clear();
    
cin.ignore(numeric_limits<streamsize>::max(), '\n');
    
cin.get();

Leider wird mir immer 0x27fefc (dez. 2.621.180) ausgegeben und das ist nicht das richtige Egebniss. (Als Admin starten bringt auch nichts)

(Wenn ihr den Sinn des Codes nicht versteht, liegt das dadran das er noch nicht fertig ist, ich wollte nur erstmal prüfen ob das mit ReadProcessMemory klappt)
●ROBBY● is offline  
Old 08/07/2010, 21:50   #2
 
Shadowz75's Avatar
 
elite*gold: 0
Join Date: Mar 2009
Posts: 443
Received Thanks: 597
Quote:
cout << &value << "\n";
zu

Quote:
cout << value << "\n";
sonst gibst du die adresse deiner variable aus nicht den wert
Shadowz75 is offline  
Thanks
1 User
Old 08/07/2010, 22:27   #3


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Du stellst die Frage nochmal hier obwohl ich dir das gleiche, wie mein Vorposter per PM geantwortet habe? o.ô
MrSm!th is offline  
Thanks
1 User
Old 08/08/2010, 10:22   #4
 
●ROBBY●'s Avatar
 
elite*gold: 1
Join Date: Jun 2009
Posts: 1,142
Received Thanks: 158
Achso hatte nen kleinen Denkfehler ich dachte wenn ich & davor setze wandelt er es in Hex um

Jetzt funktioniert es, aber ich brauch den Wert aus der Adresse in Hex kennt jemand nen Befehl mit dem ich das umwandeln kann?
●ROBBY● is offline  
Old 08/08/2010, 13:42   #5
 
elite*gold: 115
Join Date: Oct 2007
Posts: 9,390
Received Thanks: 12,345
Code:
cout << hex << value << "\n";
ms​ is offline  
Thanks
1 User
Old 08/08/2010, 14:42   #6
 
●ROBBY●'s Avatar
 
elite*gold: 1
Join Date: Jun 2009
Posts: 1,142
Received Thanks: 158
Quote:
Originally Posted by Disconnect View Post
Code:
cout << hex << value << "\n";
Ich will es aber in ner Variable speichern und nicht einfach ausgeben lassen.
●ROBBY● is offline  
Old 08/08/2010, 15:43   #7
 
●ROBBY●'s Avatar
 
elite*gold: 1
Join Date: Jun 2009
Posts: 1,142
Received Thanks: 158
Dass ich nicht weiß wie ich nen dez. Wert in nen Hex umwandeln kann und das Ergebniss in ner Variable speichere.

Hab jetzt erstmal ne Behelfsmäßige Lösung gefunden. Hier mal mein Code:
PHP Code:
#include <iostream>
#include <limits>
#include <windows.h>

using namespace std;

int readfirstadress(DWORD id)
{
    
HANDLE handle;
    
int value;
    
unsigned int adress 0x0061BFEC;
    
unsigned int adress2;

    
handle OpenProcess(PROCESS_ALL_ACCESS ,false,id);

    
ReadProcessMemory (handle,(LPCVOID)adress,&value,sizeof (value),NULL);

    
CloseHandle (handle);

    
value value 60;
    
cout << hex << value << endl;
    
cin >> adress2;

    return 
adress2;
}

int readsecondadress(int adressDWORD id)
{
    
HANDLE handle;
    
int value;
    
unsigned int adress2;

    
handle OpenProcess(PROCESS_ALL_ACCESS ,false,id);

    
ReadProcessMemory (handle,(LPCVOID)adress,&value,sizeof (value),NULL);

    
CloseHandle (handle);

    
cout << hex << value << endl;
    
cin >> adress2;

    return 
adress2;
}


int main()
{
    
HWND hwnd;
    
hwnd FindWindow (0,"METIN2");
    
DWORD id;
    
unsigned adress;
    
unsigned adress2;

    if (!
hwnd)
    {
        
cout << "Metin2 nicht gefunden.";

        
cin.clear();
        
cin.ignore(numeric_limits<streamsize>::max(), '\n');
        
cin.get();
    }

    else
    {
        
GetWindowThreadProcessId(hwnd,&id);

        
adress readfirstadress(id);
        
adress2 readsecondadress (adressid);

        
cin.clear();
        
cin.ignore(numeric_limits<streamsize>::max(), '\n');
        
cin.get();

    }


Leider funktioniert das zweite ReadProcessMemory nicht, es giebt immer den falschen Wert aus.
●ROBBY● is offline  
Old 08/08/2010, 17:30   #8


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Int ist int.
Hex/Dez/Oct ist nur wichtig, wenn du es als string ausgeben willst, es ist wirklich total egal, wenn du es in ner variable hast, da es sowieso alles binär gespeichert ist.

also
Code:
return value;
und fertig
MrSm!th is offline  
Thanks
1 User
Old 08/08/2010, 20:11   #9
 
●ROBBY●'s Avatar
 
elite*gold: 1
Join Date: Jun 2009
Posts: 1,142
Received Thanks: 158
Aber ich brauch es ja als Hex um ReadProcessMemory zu machen oder geht das etwa auch mit ner dez. Zahl?

Edit: Vielen Dank Smith habs jetzt infach mal ausprobiert und es klappt super

Edit2: WriteProcessMemory funktioniert auch einwandfrei.
Für diejenigen die es interessiert, hier mal mein Code.
●ROBBY● is offline  
Old 08/08/2010, 20:13   #10
 
mydoom's Avatar
 
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
Klar geht das.

EDIT// Was willst du denn mit Readprocessmemory und der Zahl?
EDIT2// Ok, hat sich anscheinend erledigt
mydoom is offline  
Thanks
1 User
Old 08/08/2010, 20:47   #11
 
●ROBBY●'s Avatar
 
elite*gold: 1
Join Date: Jun 2009
Posts: 1,142
Received Thanks: 158
Meintest du
PHP Code:
value value 60
Da addiere ich das Offset (3C) zu der Adresse.
●ROBBY● is offline  
Old 08/09/2010, 03:51   #12


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Quote:
Originally Posted by ●ROBBY● View Post
Aber ich brauch es ja als Hex um ReadProcessMemory zu machen oder geht das etwa auch mit ner dez. Zahl?
Warum liest denn meinen Post nicht richtig?
Zahl ist Zahl.

Hex/Binär/Oktal/Dezimal sind alles einfach nur Darstellungsweisen in Strings, also die wir zb. in Texten lesen können.
Diese Strings sind aber nicht das gleiche, wie die Zahl.
Das sind selbst ASCII Zeichen!
Eine Zahl ist ganz normal binär im Arbeitspeicher/auf der Festplatte/in den Registern gespeichert, da gibts keine Verschiedenen Darstellungsweisen, da gibts nur 1 und 0.
Und das heißt nicht, dass du alles erst zu 1 und 0 konvertieren musst, es ist schon so.
Würdest du eine Zahl ausgeben wollen, käme da auch nicht der String (zb. beim Wert 1 kommt der String "1"), sondern irgendwelche Sonderzeichen, die diesen Wert haben, weil eben zb. die 1 nicht den ASCII Wert 1 hat, also würde man es konvertieren, käme das Zeichen, mit dem Wert 1 raus!
Und wie gesagt, logischerweise gibt es nur in Strings unterschiedliche Darstellungsformen, für den PC ist Zahl = Zahl, nix mit konvertieren in Hex/Dezimal/whatever; das sind keine Verschiedenen Typen, sondern nur unterschiedliche Darstellungsformen in Strings.

Quote:
Originally Posted by ●ROBBY● View Post
Meintest du
PHP Code:
value value 60
Da addiere ich das Offset (3C) zu der Adresse.
wie wäre es mit

Code:
value = value + 0x3C;
?

Dann musst du nicht immer alles mit dem Taschenrechner umrechnen.
MrSm!th is offline  
Thanks
1 User
Old 08/09/2010, 17:35   #13
 
●ROBBY●'s Avatar
 
elite*gold: 1
Join Date: Jun 2009
Posts: 1,142
Received Thanks: 158
Code:
value = value + 60;
Das hatte ich einfach von meinem vorherigen Code übernommen da ich da ja noch dachte ich müsste alles in Hex umwandeln.

Und mit C++ beschäftige ich mich noch nicht sehr lange und intensiv mit Memoryediting erst seid ca. drei Tagen bin halt noch etwas unerfahren in dem Gebiet.
●ROBBY● is offline  
Reply


Similar Threads Similar Threads
ReadProcessMemory Problem
07/26/2009 - General Coding - 3 Replies
I can't listing Proc. Only one uses TlHelp32 var hProcess,HandleWindow: THandle; Struct: TProcessEntry32; ProcessID,temp:cardinal; buf:pchar; begin
ReadProcessMemory problem
06/10/2009 - General Coding - 4 Replies
hi, jedes mal wenn ich ReadProcessMemory verwende kommt die zahl 1 raus. Was mache ich denn falsch. int ReadMemory(int address) { int r; FindWindow(); r = ReadProcessMemory(Process, (int*)address, &value, sizeof(value), NULL); CloseHandle( Process );
[Help!!!] Delphi + Readprocessmemory
11/02/2008 - General Coding - 1 Replies
I cant seem to get read process memory working in delphi i dont know why at all either, ive googled it for like 2 hours the other night and know luck. so i figured ima try here this is my source currently thanks in advance for help unit Unit1; interface



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


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.