|
You last visited: Today at 16:23
Advertisement
Pointer in c++
Discussion on Pointer in c++ within the C/C++ forum part of the Coders Den category.
01/23/2012, 22:58
|
#1
|
elite*gold: 0
Join Date: Sep 2010
Posts: 17
Received Thanks: 2
|
Pointer in c++
Wie kann man in c++, die Adresse, auf die der Pointer und Offset zeigen, auslesen und reinschreiben? Wenn ich die Pointer Adresse und offset addiere und in diese Adresse schreiben will, klappt es nicht, also muss ich irgendwie die Adresse, auf die der pointer immer zeigt, auslesen und speichern, um in diese dann zu schreiben, aber wie mach ich das? Sry bin noch noob in C++.
|
|
|
01/23/2012, 23:04
|
#2
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
erst sprache lernen, dann "hacks" in der sprache coden.
|
|
|
01/24/2012, 06:00
|
#3
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
int* ptr = reinterpret_cast<int*>(0xADDRESSE + 0xOFF);
|
|
|
01/24/2012, 08:22
|
#4
|
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
|
Quote:
Originally Posted by jacky919
int* ptr = reinterpret_cast<int*>(0xADDRESSE + 0xOFF);
|
zugriff dann mit
ne andere möglichkeit wäre:
Code:
*(int*)(0xADDRESSE+0x0FF)=0x13371337
|
|
|
01/24/2012, 16:03
|
#5
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Das funktioniert natürlich auch.
Ich wollte nur keine C-Casts benutzen (siehe Threadtitel)
|
|
|
01/24/2012, 16:58
|
#6
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Jackys beispiel ist falsch
Edit:
Nein beide.
|
|
|
01/24/2012, 17:02
|
#7
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Inwiefern?
|
|
|
01/24/2012, 17:37
|
#8
|
elite*gold: 1
Join Date: Jun 2009
Posts: 1,142
Received Thanks: 158
|
Da ich mal annehme du willst einen Hack schreiben brauchst du WriteProcessMemory (bei nem externem Programm) oder Memcpy (bei ner DLL). (Geht natürlich auch noch nen bisschen anders aber das sind afaik die meistverwendeten Wege)
Alles weitere steht auf Msdn.
|
|
|
01/24/2012, 17:44
|
#9
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Quote:
Originally Posted by ●ROBBY●
Da ich mal annehme du willst einen Hack schreiben brauchst du WriteProcessMemory (bei nem externem Programm) oder Memcpy (bei ner DLL). (Geht natürlich auch noch nen bisschen anders aber das sind afaik die meistverwendeten Wege)
Alles weitere steht auf Msdn.
|
Warum willst du memcpy benutzen?
|
|
|
01/24/2012, 17:53
|
#10
|
elite*gold: 1
Join Date: Jun 2009
Posts: 1,142
Received Thanks: 158
|
Weil es wenn man schon im Prozess ist, einfacher zu benutzen ist als WriteProcessMemory.
Hab aber erst einmal mit Memcpy gearbeitet also kenne ich mich damit nicht so gut aus.
|
|
|
01/24/2012, 17:55
|
#11
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
wenn du alles "richtig" machst, kannst du auch einfach den zuweisungsoperator '=' benutzen.
(in ner dll...)
|
|
|
01/24/2012, 17:55
|
#12
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Du kannst doch direkt auf den Speicher zugreifen, wenn du dich schon im Prozess befindest.
Edit: Mist, diesmal war Dr. Croxxy schneller
|
|
|
01/24/2012, 20:11
|
#13
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Weil ihr das Offset zur Adresse addiert, allerdings gehört das Offset auf den Wert an der Adresse addiert, schließlich ist es ein Pointer!
Code:
int *ptr = reinterpret_cast<int*>( *(DWORD*)0xAdresse + 0xOffset );
wäre richtig, bzw. mit einem weiteren reinterpret_cast, um es noch schöner zu machen.
|
|
|
01/24/2012, 20:43
|
#14
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Ich wollte auch nur zeigen wie man generell eine Addresse aus zwei Ganzzahlen macht, ohne Dereferenzierung.
|
|
|
01/24/2012, 23:14
|
#15
|
elite*gold: 0
Join Date: Sep 2010
Posts: 17
Received Thanks: 2
|
Hab es jetzt so gemacht wie MrSm!th es gemacht hat, allerdings bekomme ich eine Fehlermeldung, wenn ich die exe starte und sie schließt sich sofort.
|
|
|
All times are GMT +1. The time now is 16:24.
|
|