Quellcode game shooter hack Erklärung?

06/05/2013 01:25 Pacmonster#1
Hallo alle zusammen,

ich hätte fragen zu diesen Stuck quellcode,
es ist ein no spread hack in ein egoshooter game in c++ winapi geschrieben Typ konsolenanwendung (exe).
Ich habs auch fehlerfrei kompiliert und funktioniert einwand frei aber so ganz verstehe ich den Code nicht,
habe auch gute Erfahrung mit cheat engine und habe mehrere Trainer damit erstellt.

1:
Code:
#define CodeAddress31 (0x01D17F70)
BYTE newcode31[] = {0x00, 0x00, 0x20, 0x41};
WriteProcessMemory(hProcess, (LPVOID)CodeAddress31, &newcode31, 4, NULL);
1.Das ist ein Stuck der variablen des no spread hack natürlich fehlen auch die Deklarationen und so weiter...
es ist auch nur ein Teil des Code.

2:
Code:
#define CodeAddress31 (0x01D17F70)
2.Ok, das ist eine Deklaration hier wird die Base pointer adresse (statische Adresse) neu definiert in Code so weit ich weiß.

3:
Code:
BYTE newcode31[] = {0x00, 0x00, 0x20, 0x41};
3.Dann sollte das eigentliche das Offset sein oder wird hier der wert der Adresse neu überschrieben und braucht man kein Offsete beidiesen Hack?

4:
Code:
WriteProcessMemory(hProcess, (LPVOID)CodeAddress31, &newcode31, 4, NULL);//Why 4 :/ ?
4.Warum 4? also wird hier der wert(value) in der base adress neu überschrieben?

Ich möchte gerne diesen hack in Cheat engine umsetzte und auch umgekehrt in Zukunft für die Base Adressen, weil c++ einfach mächtiger ist Script LUA.

Hinweis!
bitte postet Nicht antworte wie Lerne C++,Kauft dir ein Buch und so weiter...
Hallo Welt habe ich schon hinter mir.
Das sind winapi hacks.

Übung macht den Meister. :rtfm:
06/05/2013 01:58 Elektrochemie#2
BYTE newcode31[] = {0x00, 0x00, 0x20, 0x41};

Das sind die Bytes die er an die CodeAddress31 Adresse (0x01D17F70) schreibt.

Das was da steht hat nichts mit Pointern zutun. Er schreibt die 4 bytes einfach nur auf 01D17F70.

//Why 4 :/ ?
Weils 4 Bytes zu schreiben sind.
06/05/2013 12:04 snow#3
#define CodeAddress31 (0x01D17F70)
- das ist eine Präprozessor-Anweisung. Beim Kompilieren wird überall, wo CodeAddress31 steht, der Hexadezimale Wert eingesetzt. Aber ja, das ist wahrscheinlich eine statische Adresse.

BYTE newcode31[] = {0x00, 0x00, 0x20, 0x41};
- das ist ein BYTE-Array mit den Werten, die in die Adresse geschrieben werden. Keine Offsets.
Wenn z.B. davor der Code da so aussah: 0x90 0x90 0x90 0x90,dann wird da danach 0x00 0x00 0x20 0x41 stehen.

Warum 4?
- das ist die Größe des Arrays. Da ein BYTE lustigerweise ein Byte groß ist, beträgt die Größe bei 4 BYTES 4 Byte. Sollte man aber eher über sizeof() lösen, falls man mal nicht mit 1-Byte-Values arbeitet.

Und natürlich das obligatorische: Lern die Grundlagen & mach dich dann an die WinApi ran.
06/05/2013 14:20 MrSm!th#4
Lerne die Sprache, die kannst du nämlich offensichtlich nicht.