|
You last visited: Today at 07:04
Advertisement
C++ ReadMemory in dll
Discussion on C++ ReadMemory in dll within the C/C++ forum part of the Coders Den category.
04/01/2012, 01:17
|
#1
|
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
|
|
|
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.
|
|
|
04/01/2012, 02:24
|
#3
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Quote:
Originally Posted by jacky919
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
|
|
|
04/01/2012, 02:43
|
#4
|
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!
|
|
|
04/01/2012, 12:47
|
#5
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
|
Quote:
Originally Posted by jacky919
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*)?)
|
|
|
04/01/2012, 13:00
|
#6
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
sicherheit und angeblich bessere übersichtlichkeit.
|
|
|
04/01/2012, 13:01
|
#7
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
|
|
|
04/01/2012, 13:11
|
#8
|
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
|
|
|
04/01/2012, 14:02
|
#9
|
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
|
|
|
04/01/2012, 14:39
|
#10
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Quote:
Originally Posted by Dr. Coxxy
ich würde das als "übersichtlichkeit" bezeichnen? o.O
|
Na ok, fällt jetzt wieder unter Definitionssache und ist eher unnötige Haarspalterei.
|
|
|
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.
|
|