Pointer dereferenzieren mit DLL

11/21/2014 17:36 silas2222#1
Hallo, ich versuche grad einen Bot zu schreiben, der Automatisch losschießt sobald ein Feind ins Fadenkreuz kommt.
Also jetzt hab ich meine DLL und will Auslesen ob etwas im Fadenkreuz ist und zwar per Dereferenzierung:
Code:
int CrosshairID = *pCrosshairID;
In DWORD *pCrosshairID ist natürlich die Addresse gespeichert, die ich Auslesen will. Ich tippe sehr stark darauf das ich noch davor Irgendetwas Angebn muss, das meiner DLL die Rechte erteilt Speicher zu lesen. Oder was ich mir auch schon überlegt habe: Muss man da nicht vielleicht noch den Prozess angeben den man Attachen will (Außer im DLL-Loader um zu prüfen ob der Prozess da ist)?
Edit: Ich hab ganz vergessen mein Problem anzugeben *Facepalm* also immer wenn ich das versuche kommt folgender Fehler:
Quote:
Eine Ausnahme (erste Chance) bei 0x70c111f8 (My.dll) in DLL Injector.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x569a7290.
Wer kann mir da helfen? ;D
11/21/2014 17:52 Logtetsch#2
Nein, du brauchst keine Rechte. Die .dll teilt sich den gleichen Speicher wie dein Prozess auch.
11/21/2014 21:22 silas2222#3
So, da ich einfach nicht weiterkomme hier meine stark gekürzte DllMain:

BOOL APIENTRY DllMain (HMODULE hModule, DWORD _reason, LPVOID lpReserved)
{
if (_reason == DLL_PROCESS_ATTACH)
{
DWORD *pCrosshairID = 0x2D81BABC;
int CrosshairID = *pCrosshairID;
}
}

Kann mir einer sagen ob das so funktionieren sollte, oder ob ich einfach total Faile...
11/21/2014 21:35 Logtetsch#4
Klar funktioniert das, jedoch wirst du durch den Cast von DWORD auf int möglicherweise Daten verlieren. Was willst du mit deinem Code überhaupt bezwecken?
Code:
static const DWORD CROSSHAIR_ADDR = 0xABCDEF;
static const DWORD CROSSHAIR_VAL_X = 5;
if (_reason == DLL_PROCESS_ATTACH){
	DWORD* pCrosshairID = reinterpret_cast<DWORD*>(CROSSHAIR_ADDR);
	DWORD dwCrosshairID = *pCrosshairID; //read value
	*pCrosshairID = CROSSHAIR_VAL_X; //write value
}
Btw. Die Fehlermeldung sagt doch ganz genau was du falsch machst. Mich wundert es nur, dass du 0x2D81BABC auslesen willst, aber auf 0x569a7290 kommst?!
11/22/2014 01:47 silas2222#5
So habs jetzt es lag an meinem Loader, trotzdem danke :D