Tutorial privind formatori de scris pentru DMA și jocuri DMA

In acest articol voi discuta scrierea formatorului (trainer'a) pentru joc. În RuNet foarte puține informații cu privire la acest subiect, dar despre scrierea DMA-formatori, eu nu găsesc nimic (poate fi, desigur, inestetice), dar în jurământul solemn a fost dat în procesul de mine scris că, atunci când finalizat - va scrie tutorialul normal pe acest temă. Am vrut să scrie un tutorial, ceea ce ar afecta în mod egal, atât teorie și de căutare pentru Pointer și scrie propriile lor formatori.

Partea principală, intenționez să-l dedice la jocuri DMA.

Deci, ceea ce ai nevoie:

- limbaj de programare. Am de gând să folosească Delphi pentru exemple. În principiu, puteți folosi orice - pentru a lucra cu procesul de memorie, avem nevoie doar funcții WinAPI.

- tip ArtMoney programului (pentru a căuta valori în memorie). recomanda urgent TSearch (în ciuda faptului că acesta cântărește metri și jumătate), vor fi utilizate în exemple.

- Debugger. Din nou Vă recomandăm TSearch - conține un depanator simplă și intuitivă, care este suficient. Dacă aveți SoftIce, și știi cum să-l folosească - steagul în mâinile sale.

- cunostinte minime de asamblare, generale (cel puțin teoretic) o idee despre depanare, dispozitiv de memorie.

1. Un pic de teorie:

registre procesor Pro, despre ceea ce este în interiorul stivei, etc. Nu intenționez să-i spun. Pentru a face acest lucru, există cărți pe asamblor (în general vorbind, aceste probleme într-un fel sau altul afectat în orice manual, în orice limbaj de programare).

Acum, pentru a practica.

3. Jocuri DMA - indicatorul de căutare a.

Cuvinte, desigur, este bun, dar exemplele de orice studiu merge mai bine.

Deci, am găsit un pointer. Poate că a fost cea mai grea etapă.

4. Scrierea Trainer.

Pentru citire și scriere în memorie, vom folosi două funcții WinAPI - ReadProcessMemory și WriteProcessMemory. (Totul este ușor)

4.1. Trainer pentru jocuri non-DMA.

De exemplu, să ia vechi jucărie Raptor DOS-ovsky: Call of Shadows.

4.2. Scrierea Trainer pentru DMA-jocuri.

Procedura TForm1.Button1Click (Expeditor: TObject);
începe
WindowName: = FindWindow (zero, WindowTitle);
Dacă WindowName = 0 atunci
începe
MessageDlg ( 'Jocul ar trebui să fie executați la Trainer Run it, apoi antrenor.', Mtwarning, [MBOK], 0);
se încheie;
ThreadId: = GetWindowThreadProcessId (WindowName, @ ProcessID);
HandleWindow: = OpenProcess (PROCESS_ALL_ACCESS, False, ProcessID);

De asemenea, o idee bună este de a utiliza tastele rapide. Tema luptei cu DMA nu este inclus, astfel încât totul este la gustul cititorului.

4.3. Observații generale

Vă reamintesc că:
octet este 1 octet (8 biți este;)) - numărul de 0 la 255.
cuvânt este de 2 octeți - un număr de 0-65535.
dword este de 4 octeți - un număr între 0 și 4294967295.

Aici este o descriere a tuturor funcțiilor WinAPI utilizate, am considerat că nu este necesar, așa că, dacă sunteți interesat - a se vedea MSDN în sine.

Ei bine, asta-i tot. Trainer și lucrări scrise (cel puțin așa sper), rămâne doar să vă doresc mult noroc în acest caz dificil :)

6. Unele rezerve

** - Am înlocuiește cu îndrăzneală valoarea din FFFFFFFFh. Este o plimbare de SimCity 4, dar, în general, au, de asemenea, consecințe. (Valoarea poate fi de 4 octeți, dar această cifră nu a putut obține în linie, ieși din ecran sau chiar într-un fel zaglyuchit;), în general, este mai bine să nu fi lacom)

7. Contacte și legături

mesaje de eroare, și inexactități sunt de asemenea binevenite.

În cazul în care - Google pentru a ajuta.

8. Condițiile de distribuție și orice altceva