Problem mit meinem DLL-Hack

09/23/2012 19:22 JixhE#1
Hi,

ich glaube ich habe einen Fehler gemacht, wo die Adresse mit den Offsets aufgerechnet wird, ich finde ihn aber nicht, bitte helft mir!

Code:
Code:
#include <iostream>
#include <Windows.h>

using namespace std;

DWORD BasePointer = 0x71F350;
#define speed1 0xA02
#define speed2 0xA0E

DWORD WINAPI HackThread(LPVOID unused)
{
    for(; ;)
    {
        if(GetAsyncKeyState(VK_F11))
		{
		DWORD &dwPoints = *(DWORD*)(BasePointer + speed1 + speed2);
        dwPoints = 16650;
        Sleep(10);
		MessageBoxA(0, "Done", "4Story",0);
		}
    }
}


BOOL WINAPI DllMain(HINSTANCE mod, DWORD DWORD_GRUND, LPVOID res)
{
    switch(DWORD_GRUND)
    {
    case DLL_PROCESS_ATTACH:
        CreateThread(0, 0, &HackThread , 0, 0, 0);
		MessageBoxA(0, "Have Fun!", "4Story",0);
        break;
     case DLL_PROCESS_DETACH:
        MessageBoxA(0, "Error!", "4Story",0);
        break;
    }
    return TRUE;
}

Danke!
09/23/2012 19:43 Dr. Coxxy#2
bitte ordentlich einrücken und lern wie pointer funktionieren...

Code:
DWORD* dwPoints = (DWORD*) ((*(DWORD*) ((*(DWORD*)BasePointer) + speed1)) + speed2);
*dwPoints = 1337;
09/23/2012 20:14 MrSm!th#3
Quote:
DWORD &dwPoints
Ich bezweifel irgendwie, dass du hier tatsächlich eine Referenz deklarieren willst.
Müsste das nicht eigentlich sogar nen Syntax Fehler werfen? Referenzen sind doch afaik nur bei L-Values erlaubt (zumindest die Nicht-R-Value Referenzen).
09/23/2012 22:11 Logtetsch#4
Deine Pointerdereferenzierung ist Müll und kann so keines Wegs funktionieren.
Bevor du einen Hack für 4Story machen willst, befass dich lieber nochmal mit den Basic´s, wie z.B mit Zeigern.
Dr. Coxxy hat es eigentlich auf den Punkt gebracht.
09/23/2012 23:19 SkillartzHD#5
Ich habe dir doch schon in Skype geschrieben das das teil mehr oder weniger müll ist.
Sicherlich kann man sich das so zusammen würfeln das es passt aber so richtig sinvoll finde ich die dll nicht.
Grezz
09/24/2012 00:35 Logtetsch#6
Außerdem frage ich mich gerade, warum du deinen Basepointer mit dem typen DWORD casten willst, wenn dieser schon vom typen DWORD ist. Ein einfaches #define Basepointer 0x123456 reicht vollkommen aus.
09/24/2012 00:38 Dr. Coxxy#7
Quote:
Originally Posted by Logtetsch View Post
Außerdem frage ich mich gerade, warum du deinen Basepointer mit dem typen DWORD casten willst, wenn dieser schon vom typen DWORD ist. Ein einfaches const DWORD BasePointer = 0x123456; reicht vollkommen aus.
fixxed
09/30/2012 17:05 Fawkess123#8
DAFUQ ARE U DOING
Code:
DWORD &dwPoints = *(DWORD*)(BasePointer + speed1 + speed2);
        dwPoints = 16650;
Du addierst der Variable also einpaar werte hinzu und dann setzt du sie einfach mal auf 16650 ohne davor i-was mit der Variable getan zu haben?

Oder sehe ich einfach den Sinn dieser Rechnung nicht
Code:
DWORD &dwPoints = *(DWORD*)(BasePointer + speed1 + speed2);
:confused:
10/01/2012 00:31 MrSm!th#9
Wenn du keine Ahnung von Pointer-Arithmetik hast, halte dich doch bitte einfach aus solchen Themen raus.
Auch wenn er hier einige Fehler drin hat, ist leicht zu erkennen, was er vor hat.
Er addiert die Werte nicht zu dem Wert der Variablen, auf die der Pointer zeigt, sondern zu Adresse, auf die er zeigt. Dann setzt er den Wert der Variablen an der resultierenden Adresse auf 16650.
Zumindest soll sein Code das ausdrücken :p