Lecții de cracare

Introducere în cracare de la zero folosind OllyDbg - Capitolul 11 ​​[Ricardo Narvaha, trans. aquila]

Ei bine, rămâne pentru noi să luăm în considerare punctele de întrerupere a procesorului (puncte de întrerupere a hardware-ului), punctele de întrerupere condiționate și punctele de întrerupere a mesajelor. după care vom termina cu acest subiect.

PROCESOR PUNCTE DE STOPPING

Punctele de întrerupere a procesorului (puncte de blocare hardware, HBP-uri) reprezintă o opțiune oferită de procesor. Nu știu cum funcționează acest lucru, dar totuși le putem seta astfel încât programul, atunci când se întâlnesc, să se oprească și să transmită controlul.

Putem seta până la patru patru HBP-uri. pe al cincilea Ollydbg ne va cere să indicăm care dintre cele patru deja instalate pentru a le elimina.

Ca de obicei, pentru practică, vom folosi fisura lui CrueHead.

Lecții de cracare

Există trei posibilități: EXECUȚIA HBP. ON WRITE și ON ACCESS.

Dacă doriți să setați HBP ON EXECUTION la 401013. Notați linia, faceți clic pe butonul din dreapta al mouse-ului și selectați BREAKPOINT-HARDWARE ON EXECUTION.

Lecții de cracare

De asemenea, putem scrie pe linia de comandă:

După aceea, este instalat HBP.

Lecții de cracare

Lecții de cracare

Aici vedem o fereastră cu HBP. și dacă apăsăm FOLLOW. o vom face în listă pe linia în care a fost instalat. Cu DELETE, îl putem elimina.

Acum apăsați F9 pentru a porni programul.

Și să ne oprim la 401013.

După cum puteți vedea, se comportă ca un BPX normal. dacă facem același lucru cu BPX, vom scrie MOV EAX, DWORD PTR DS: [401013] și vom rula, apoi vom vedea că codul nu sa schimbat.

Schimbați EIP la 401000 folosind NEW ORIGINĂ AICI și apăsați F7.

Lecții de cracare

Vedem că EAX conține E8 A6 04 00 (în formă inversă, deci vedem 00004A6E8), adică nu au existat modificări în cod.

Dacă vom reînchide Ollydbg, vom vedea că HBP rămâne instalat.

Lecții de cracare

Îl eliminăm și instalăm HBP pe MessageBoxA la fel ca BPX.

Acum, uita-te la lista HBP.

Lecții de cracare

Nu vom repeta din nou, dar știm că dacă începem programul și introducem utilizatorul și parola și suntem de acord, implementarea se va opri la API-ul MessageBoxA. și anume aproximativ același lucru ca și când am fi utilizat BPX obișnuit.

HBP ON ACCESS și ON WRITE pot acoperi doar 1, 2 sau 4 octeți, dar dacă selectăm o zonă mai mare în DUMP, numai primii patru octeți vor fi relevanți.

Și acum notați primii 4 octeți.

Apăsați butonul din dreapta al mouse-ului.

Lecții de cracare

Vom efectua aceeași operație pentru următorul byte și selectați HARDWARE ON ACCESS. iar acum există doar posibilitatea de a alege BYTE.

Lecții de cracare

Apoi, în cele din urmă, apare opțiunea DWORD. care este, patru octeți de HBP.

Lecții de cracare

Să revenim la 4020CA și să punem HBP pe ACCES - BYTE.

Lecții de cracare

Vedem că setul HBP din lista noastră are o dimensiune de 1, adică byte (BYTE).

Lecții de cracare

Lecții de cracare

Aici, OLLY ne spune că HBP1 a funcționat. și anume Cel care apare pe primul loc în lista HBP.

Lecții de cracare

Vedem că execuția programului se termină pe linia care urmează după cea în care a fost efectuată salvarea sau citirea. Acest lucru este valabil pentru HBP ON ACCESS. și pentru ON WRITE - instrucțiunea pe care lucrează HBP. Rulează și programul se oprește la următorul.

După cum puteți vedea, diferența dintre MEMORY BREAKPOINT este că programul se va opri la 401007 - direct pe instrucțiunea care a declanșat punctul de întrerupere.

După cum puteți să ghiciți, HBP ON WRITE este declanșat atunci când există o salvare, nu o citire, iar programul se oprește din instrucțiunea urmând cea care a declanșat HBP.

PUNCTE CONVENȚIONALE DE STOPPING

De fapt, aceasta este o variantă a sistemului BPX convențional. care este diferit prin faptul că activarea unui astfel de BPX OllyDbg verifică dacă o anumită condiție este adevărată și dacă da, oprește executarea programului și, dacă nu, continuă să execute programul, ca și cum BP nu există.

Resetăm tot ce am făcut înainte și setăm BREAKPOINT CONDITIONAL la 40100E. pentru care selectăm linia, faceți clic pe butonul din dreapta al mouse-ului și selectați BREAKPOINT CONDI TIONAL.

Lecții de cracare

Se deschide o fereastră în care trebuie să specificați o condiție.

De exemplu, dacă doriți să setați stopul să apară când EAX este 400000, atunci condiția ar trebui să fie "EAX == 400000".

În ajutoarele atașate la OllyDbg, este scris ce simboluri putem folosi și în ce condiții acestea corespund.

Vedem că în cazul lui BPX CONDIȚIONAL, se folosește roz. Apăsați F9:

Vedem că a existat o oprire și OllyDbg ne spune:

Odată ce EAX este 400000, atunci condiția setată a funcționat.

Lecții de cracare

Să începem din nou, ștergeți BPX CONDI TIONAL și puneți altul, în cazul în care, de exemplu, EAX == 500000.

Vedem că crack-ul a fost executat și închiderea nu sa întâmplat, pentru că EAX a fost întotdeauna 400.000 și condiția nu a fost îndeplinită.

Dacă deschidem HELP-CONTENTS.

Lecții de cracare

Lecții de cracare

Iată BREAKPOINTS și locul unde sunt explicate expresiile:

Lecții de cracare

De asemenea, în ajutor, există exemple de expresii care pot fi folosite pentru condiții.

Lecții de cracare

PUNCTE CONVENȚIONALE DE STOPPING CU LOGISTICA

Acesta este un BPX condiționat. la fel ca și precedentul, numai în acest caz putem specifica că toate valorile exacte sunt păstrate la trecerea punctului de întrerupere. Există multe opțiuni și vom demonstra aplicarea acestui BPX prin exemplul unui API, care are loc în diferite locuri, și dorim ca datele transferate să fie păstrate.

Lecții de cracare

În timp ce vă aflați aici, apăsați CLICK DERECHO-BREAKPOINT- LOGARE CONDIȚIONALĂ.

Lecții de cracare

Vedem o fereastră cu multe opțiuni.

Lecții de cracare

În acest caz, trebuie doar să păstrăm datele de care avem nevoie.

Lecții de cracare

Accesați fereastra LOG sau L.

Și ne curățăm pentru a vedea clar ce salvează programul. Faceți clic pe CLICK DERECHO-CLEAR WINDOW.

Lecții de cracare

Vedem că există o opțiune care vă permite să salvați jurnalul într-un fișier text, dacă este necesar.

Acum rulați programul cu F9.

Mergem la fereastra krekmi și în timp ce în LOG'e nu există nimic, deoarece api-ul dat nu a fost chemat.

Mergem la REGISTER. unde putem seta numele de utilizator și parola.

Lecții de cracare

Când faceți clic pe OK.

Lecții de cracare

În acest caz, am afișat numai informații despre un apel, dar dacă api este sunat, de exemplu, de 100 de ori, atunci putem salva jurnalul într-un fișier text. Dacă trebuie să afișăm doar câteva din aceste apeluri, atunci putem specifica o anumită condiție.

Pentru a face acest lucru, supraîncărcați crack-ul, găsiți din nou api și instalați BPX CONDITIONAL LOG pe acesta.

Lecții de cracare

Să modificăm opțiunile astfel încât punctul de întrerupere să funcționeze numai atunci când condiția este îndeplinită și setată pentru a verifica dacă [esp] 40137D este egal.

Rulați programul și când apare fereastra de înregistrare, introduceți numele de utilizator "ricnar456" și parola "989898".

Lecții de cracare

Amintiți-vă că atunci când este introdus un nume de utilizator în care există numere, caseta de mesaje este apelată de 2 ori? Faceți clic pe OK.

Lecții de cracare

Când apăsăm butonul OK

Lecții de cracare

Aceasta este a doua oară când api este chemată. Aici este îndeplinită condiția și se declanșează punctul de întrerupere.

Vedem că elementul de sus al stivei conține valoarea 40137d. care activează LOGUL CONDIȚIONAL BPX.

În ambele cazuri, OllyDbg a salvat informații despre ambele apeluri.

Lecții de cracare

Lecții de cracare

Ok, cred că este suficient pentru tine în ce să practică pentru o vreme. MESAJE BREAKPOINTS există încă. dar nu vreau să te ucid, așa că așteptați partea a 12-a și după ce luăm în considerare ultimul tip de breakpoint-uri, vă promit că vom continua să ne descurcăm puțin, ca să nu ne plictisim.

[C] Ricardo Narvaha, per. Aquila

Articole similare