Scrierea Trainer pe Visual C

În acest articol vă voi arăta cum să faci un antrenor, folosind Visual C ++. La scrierea acestui articol am împins faptul că, atunci când am încercat să găsesc pe internet, cel puțin unele informații cu privire la modul de a face un antrenor simplu în VC, tot ce am găsit au fost articole care prezintă exemple de C / C ++, și în principal, în Delphi și MASM. S-ar părea că, în această situație a fost posibil să se utilizeze materialul de articole pe C / C ++, dacă nu un „dar“ - un atașament puternic clase VC ++, în urma cărora unele funcții API nu se comportă așa cum ar trebui. Mai târziu, va deveni clar.

Asta e ceea ce avem nevoie:

- Jocul în sine. Am ales un RPG interesant - Avernum 3

- Programul de tip GameHack TSearch sau cauta noi valori specifice în memorie. Prefer TSearch. pentru că, în opinia mea, aceasta este cea mai funcțională a tuturor acestor programe. Deși problema de alegere a fiecărui.

- Visual C ++. Eu ar trebui să versiunea 6.0, astfel încât tutorial se va face pe el. Versiunea nu este foarte principială, după cum știți :)

HP primul octet character'a0x00C1C0502

MP al primului octet character'a0X00C1C0544

HP a doua character'a0x00C1C4202 octet

MP al doilea octet character'a0x00C1C4244

HP character'a0x00C1C7F02 treilea octet

MP character'a0x00C1C7F44 al treilea octet

HP a patra character'a0x00C1CBC02 bytes

MP al patrulea octet character'a0x00C1CBC44

Ne întoarcem la cel mai important și creativ procesul - scriere Trainer nostru. Să facem, desigur, folosind funcția API, deoarece va fi mai ușor, iar programul va rula mult mai rapid. Aici avem nevoie de o funcție (a se vedea descrierea lor în referința Win32 API):

Teper va crea un nou proiect pentru Trainer buduyuschego. Start Visual C ++ si Davie Fișier-> Nou. În fereastra care apare, alegeți tipul de MFC AppWizard (exe). nume de proiect, formați - Avernum3tr. Davie următor. Selectați Dialog pe bază. În continuare. Apoi, debifați Active X și caseta Despre - ei ne dau nu nafig nevoie. Toate Davie Finish și pentru a primi cadru. După cum puteți vedea AppWizard a generat dialogovoo fereastra pentru noi, ca o mulțime de cod care inițializează o mulțime de prostii. Puteți șterge imediat text static și două butoane de pe fereastra - acestea sunt, de asemenea, inutile.

Numele Clasa - CAvernum3trDlg

ID obiect - CAvernum3trDlg

Funcții membre - OnIntiDialog

și faceți clic pe Editare cod. Deoarece această funcție a fost creată, vom ajunge la o bucată de cod al funcției care se numește atunci când creați fereastra noastră. Acolo ne-am inițializa cronometrul nostru. Adăugat înainte de a reveni linia de coasere ADEVĂRAT:

SetTimer (1, 100, NULL);

Astfel, la lansarea trainerul nostru, va crea un cronometru. care va trimite un mesaj la WM_TIMER nostru fereastră de aproximativ 4 ori pe secundă (un al doilea parametru). Dar, odată ce am creat un cronometru la pornire, este necesar să-l distrugă la ieșirea din Trainer. Davie Ctrl + W din nou și a adăugat funcția WM_DESTROY (gândi clar cum) și codul PUSH Editare. Scrie acolo:

OK. trece la ceasul procesorului. Ctrl + W și adaugă funcția WM_TIMER și du-te la codul său. Aici. Această funcție va fi numit de fiecare dată când timer-ul va funcționa. După cum ați înțeles deja, atunci vom scrie codul care va fi responsabil pentru prinderea taste apăsate și trebuie să facem ceva pentru care, de fapt, creează un antrenor :)

Aici vom ajunge la punctul, de ce. De fapt, multe dintre articolele despre scrierea Formator C / C ++ nu funcționează în VC. Încercați să scrie FindWindow funcția de corpul funcției ON_WM_TIMER (vezi și ieșit la suprafață indiciu despre parametrii funcției:

CWnd * FindWindow (LPCTSTR lpszClassName, LPCTSTR plszWindowName);

si compara cu ceea ce avem nevoie:

HWND FindWindow (LPCTSTR lpszClassName, LPCTSTR plszWindowName);

Faptul că prima opțiune este o funcție membru al clasei de ferestre noastre (Știu, chto sună complicat, dar cu toate acestea), și, prin urmare, returnează un tip ușor diferit. Ce este de făcut. Și vom face asta aici - crea propria clasă generică independentă, vom folosi nu numai în acest prog. Dacă avem o astfel de clasă, atunci data viitoare, atunci când scrie următorul antrenor, tu trebuie doar să adăugați clasa la proiect, vpisheshsya în function timer corp doar câteva linii (mai târziu vei înțelege de ce) și toate - gata. Asta, prietene, clase - doar super-oportunitate OEP. Da, desigur, va dura ceva timp acum, dar o mare salvați-l mai târziu. Nu mă crezi - uite.

Degetele ventilator - clasa lepim

Chiar în fereastra ClassView, selectați tab-ul și faceți clic pe butonul din dreapta al claselor Avernum3tr. Selectați New Class. În fereastra care apare, alegeți:

typeGeneric Clasa Clasa

și Davie OK și veți vedea că el a apărut în lista claselor de proiect. Dacă apăsați pe pictograma „+“ de lângă numele noii noastre de clasă, veți vedea, există două funcții de membru - constructor si destructor.

Acum, voi arăta cum să adăugați o singură funcție, iar restul pe care le-ați adăugat. Țineți clic dreapta pe clasa noastră și selectați Adăugați funcția de membru. În fereastra rezultată, scrie următoarele:

Funcția DeclarationscOpenProcess (char * p_ClassName, char p_WindowName *)

hWindow = FindWindow (p_ClassName, p_WindowName);