[C++]Pointer in DLL´s benutzen

08/06/2010 22:15 ¿Freaky¿#1
Hallo,
ich möchte in meiner DLL die ich injecte noch dazu Addressen ändern.
Aber ich habe keine Ahnung wie ich das mache.
Dazu suche ich noch jemanden der mir eventuell über ICQ bei Seite steht wenn ich fragen oder Probleme bei C++ oder Olly habe.
Bitte hier im Thread anschreiben oder PN :)
mfg Freaky
08/06/2010 22:32 Bl@ze!#2
Du musst die Addresse dereferenzieren / bzw. in einen bestimmten Typen reincasten und dann kannst du den Wert ändern.
08/06/2010 22:35 ¿Freaky¿#3
Schon klar, aber ich habe 0 Ahnung mit welchem Code und wie ich weiß nicht mal wie ich eine Console in die DLL bekomme o.O
Wie gesagt brauche einen der mir halt Hilft.
mfg Freaky
08/06/2010 22:38 MrSm!th#4
Ein Pointer ist selbst eine Variable, deren Wert die Adresse einer anderen ist.

Also kannst du auch einfach den Wert auslesen und das wiederum als Adresse nutzen:

Code:
const int ptr_addr = 0x00000000;
int var_addr = 0;
memcpy(&var_addr,(void*)ptr_addr,4);

//und dann zb.
memset((void*)var_addr,0,4);
ja, es geht auch mit der cast&dereferenzier methode, aber ich persönlich finde die hier schöner, außerdem geht das mit dem casten nicht, wenn man mit arrays arbeitet, da casten nur bis zu 4 bytes funktioniert ;O (es sei denn, euer compiler unterstützt 64bit variablen, dann gehen auch 8 bytes)

außerdem kann es manchmal probleme mit der protection einer adresse geben; so kann man zb. ne kleine eigene Funktion schreiben, die erst VirtualProtect aufruft, dann ausliest und dann wieder VirtualProtect.


eine konsole kannst du auch nicht in die dll bringen, weil es 0 sinn macht.
die konsole ist von ein programm von windows o.ô

wenn du nicht weißt, wie man dereferenziert, solltest du mal ordentlich die grundlagen von c++ lernen
08/06/2010 22:45 ¿Freaky¿#5
Ich habe jetzt nach dem 2ten Satzt nichts mehr verstanden o.O (eventuell ICQ du haben ? ^^)
08/06/2010 23:14 MrSm!th#6
Dann lern die Sprache :rolleyes:
08/06/2010 23:19 ¿Freaky¿#7
Bin dabei ;)
Aber ich verstehe das wirklich nicht was du geschrieben hast :(
08/07/2010 00:25 MrSm!th#8
Dann solltest du fleißig weiterlernen, bis du es tust.

Das kann ich echt nicht nachvollziehen...lernst gerade mal die Grundlagen und willst irgendwelche Dlls schreiben...

Was genau hast du denn nicht verstanden? Ich habe dir einen Beispiel Source geschrieben, wie du mithilfe von memcpy Pointer auslesen und nutzen kannst; das geht zwar auch per Dereferenzierung, aber ich find meine Methode schöner (:p) und wenn Dereferenzierung braucht nun wirklich kein Beispiel, das ist eine Grundlage.
08/07/2010 00:51 bloodx#9
Code:
const int ptr_addr = 0x00000000;
int var_addr = 0;
memcpy(&var_addr,(void*)ptr_addr,4);
//Hier kopiert er halt 4 Bytes von ptr_addr nach var_addr

// Hier packt er halt 4x0 in var_addr
memset((void*)var_addr,0,4);
So sollte es sein wenn ich die befehle noch richtig im kopf habe..
08/07/2010 01:26 MrSm!th#10
"4x0" mit anderen Worten, ich schreibe in einen 4Byte Wert, aka int oder float den Wert 0 ;)
08/08/2010 20:14 SmackJew#11
Quote:
Originally Posted by ¿Freaky¿ View Post
Hallo,
ich möchte in meiner DLL die ich injecte noch dazu Addressen ändern.
Aber ich habe keine Ahnung wie ich das mache.
Dazu suche ich noch jemanden der mir eventuell über ICQ bei Seite steht wenn ich fragen oder Probleme bei C++ oder Olly habe.
Bitte hier im Thread anschreiben oder PN :)
mfg Freaky
Schon deine Fragestellung ist Käse. Adressen änderst du schonmal gar nicht. Wenns um das Ändern von Inhalten geht, hast du in deinem Lernmaterial das Kapitel über Zeiger ausgelassen?

Code:
int* muell = 0xBA5E;
*muell = 1337;