Register for your free account! | Forgot your password?

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

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

Advertisement



C++ ReadMemory in dll

Discussion on C++ ReadMemory in dll within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
『  』's Avatar
 
elite*gold: 10
Join Date: Aug 2011
Posts: 1,328
Received Thanks: 914
C++ ReadMemory in dll

Ja hallo zsm

Undzwar hab ich ne kleine dll geschrieben mit der ich ein spiel hacke sozusagen.
Das Value schreiben funktioniert an sich perfekt nur das value auslesen nicht.

Hab auch schon ein bisschen gegooglet aber nichts hilfreiches gefunden dafür.

Ich weiß, ich kan ReadProcessMemory benutzten, jedoch wird rpm leider erkannt und somit funktioniert das ganze nichtmehr.
Ich muss wie z.B memcpy fürs schreiben eine funktion fürs lesen herbekommen und da dachte ich das vllt ein paar von euch ne hilfe dazu hätten.

LG
『  』 is offline  
Old 04/01/2012, 01:36   #2
 
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
Das Gegenstück zu memcpy wäre memset.
Du brauchst aber weder memcpy noch memset, um die Werte der Adressen auszulesen oder zu verändern.

Code:
//Speicher beschreiben
*(reinterpret_cast<T*>(addr)) = value;
//Speicher auslesen
T val = *(reinterpret_cast<T*>(addr));
T kann durch einen beliebigen Typ ersetzt werden, addr und value müssen ggf. angepasst werden.
jacky919 is offline  
Thanks
1 User
Old 04/01/2012, 02:24   #3


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Quote:
Originally Posted by jacky919 View Post
Das Gegenstück zu memcpy wäre memset.
Red bitte keinen Blödsinn. memcpy ist sicher nicht das Gegenstück zu memset..

@TE:

Einfach memcpy umgekehrt benutzen:

Code:
void *Addr = (void*)0xDEADBEEF;
void *Addr2 = (void*)0x1337;

int value = 1337;
int value2;

memcpy(Addr, &value, 4);
memcpy(&value2, Addr2, 4);
memcpy ist keine Funktion zum Auslesen, sondern sie kopiert Werte von einer Position zur anderen. Das geht natürlich in beide Richtungen.

Wie jacky aber schon sagte, für Speicherzugriffe auf native Datentypen wie int, float, char, etc. kannst du die direkte Pointer-Dereferenzierung von C++ nutzen und brauchst keine Funktionen.1
MrSm!th is offline  
Thanks
1 User
Old 04/01/2012, 02:43   #4
 
『  』's Avatar
 
elite*gold: 10
Join Date: Aug 2011
Posts: 1,328
Received Thanks: 914
Danke danke danke ihr seid echt die Besten :*
Hab das mit dem umgekehrten weg voll vergessen -_-
Soviel dazu -_-
Merci!
『  』 is offline  
Old 04/01/2012, 12:47   #5
 
Tyrar's Avatar
 
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
Quote:
Originally Posted by jacky919 View Post
Das Gegenstück zu memcpy wäre memset.
Du brauchst aber weder memcpy noch memset, um die Werte der Adressen auszulesen oder zu verändern.

Code:
//Speicher beschreiben
*(reinterpret_cast<T*>(addr)) = value;
//Speicher auslesen
T val = *(reinterpret_cast<T*>(addr));
T kann durch einen beliebigen Typ ersetzt werden, addr und value müssen ggf. angepasst werden.
dazu muss ich auch noch eine frage stellen, mit den c++ casts habe ich mich bisher nur recht wenig auseinander gesetzt. was für vorteile bzw. unterschiede gibt es zwischen den verschiedenen c++ casts und c casts? (reinterpret_cast / static_cast, reinterpret_cast<int*>/(int*)?)
Tyrar is offline  
Old 04/01/2012, 13:00   #6
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
sicherheit und angeblich bessere übersichtlichkeit.
Dr. Coxxy is offline  
Old 04/01/2012, 13:01   #7
 
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
jacky919 is offline  
Thanks
1 User
Old 04/01/2012, 13:11   #8


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Du siehst beim Lesen des Codes durch die auffällige Schreibweise sofort, dass da gecastet wird (C-Casts verschwinden schnell mal), du kannst besser angeben, WAS du da castest und nach welchen Regeln das ganze geschehen darf (const, static, dynamic, reinterpret), dynamic_cast nutzt Laufzeittypprüfung.

Auch nochmal dort nachzulesen:




Gerade in OOP Projekten sind C++ Casts den C Casts vorzuziehen; nicht nur wegen der besseren Auffälligkeit, die überall gegeben ist, sondern auch, weil du mit C Casts die Laufzeittypprüfung beim Casten von Zeigern auf polymorphe Objekte nicht hast.

Quote:
sicherheit und angeblich bessere übersichtlichkeit.
Nicht Übersichtlichkeit, sondern Auffälligkeit. Das interessiert einen C Coder vermutlich nicht, aber Leute, die Wert darauf legen, dass ihr Code verständlich ist, sollten zu den C++ Casts greifen :P
MrSm!th is offline  
Thanks
1 User
Old 04/01/2012, 14:02   #9
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
Quote:
Nicht Übersichtlichkeit, sondern Auffälligkeit.
Quote:
Du siehst beim Lesen des Codes durch die auffällige Schreibweise sofort, dass da gecastet wird (C-Casts verschwinden schnell mal)
ich würde das als "übersichtlichkeit" bezeichnen? o.O
Dr. Coxxy is offline  
Old 04/01/2012, 14:39   #10


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Quote:
Originally Posted by Dr. Coxxy View Post
ich würde das als "übersichtlichkeit" bezeichnen? o.O
Na ok, fällt jetzt wieder unter Definitionssache und ist eher unnötige Haarspalterei.
MrSm!th is offline  
Reply


Similar Threads Similar Threads
[Help]C# ReadMemory Function
04/21/2010 - .NET Languages - 1 Replies
Hi! I am a newbie and trying to learn the C# ReadProcessMemory function! As a training I am trying to read the HP value in "Conquer Online" so please tell me is this code right or wrong and will it cause me problems? note: this is a console application the program should read the HP address then it shows the value of the address! using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Text.RegularExpressions;



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


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.