Ollydbg în selecția meniului de jocuri. Olly Debugger de la A la Z

Scopul acestei „Introduceri în Cracking from Scratch Using OllyDbg” este de a oferi celor care abia încep să stăpânească arta crackingului o cunoaștere de bază și, în același timp, să facă acest lucru într-un mod în care aceste cunoștințe să le permită să citească mai târziu. și înțelegeți tutoriale mai avansate, cum ar fi , care pot fi găsite în „Cursul nou de la CracksLatinos”, care, desigur, rămâne deschis la noi completări și completări.

Ideea cursului a luat naștere din faptul că multe dintre tutorialele din Noul Curs de la CracksLations erau prea dificile pentru începători, iar cei care nu reușeau să atingă nivelul cerut s-au simțit frustrați și, în multe cazuri, au refuzat să continue. Prin urmare, scopul acestei „Introduceri...” nu este acela de a repeta excelentele tutoriale din „Cursul Nou...”, al cărui număr a depășit deja 500, ci de a pune bazele pentru ca cei care parcurg acest curs va putea citi tutoriale mai complexe. Acest lucru, la fel ca tot în meșteșugurile noastre, necesită un efort considerabil, iar scopul principal este reducerea acestei sume, oferind cunoștințe de bază și permițând înțelegerea ulterioară a unui material mai complex.

De ce OLLYDBG?

Nu vom vorbi aici despre eterna confruntare dintre Soft-Ice și OllyDbg; cred că până și fanaticii Soft-Ice recunosc că este mai ușor să începi cu OllyDbg, deoarece există multe informații despre el și este mai ușor de studiat. Trebuie să intrăm în lumea cracking-ului prin ușa numită „OllyDbg”, și abia atunci cine are nevoie poate trece la orice alt depanator care este necesar, deoarece doar metodele lor de utilizare se schimbă, dar esența rămâne aceeași.

Începe de la capăt

Mai întâi trebuie să vă înarmați cu instrumentul pe care îl vom folosi în principal, pentru care faceți clic și descărcați-l.

Deoarece începem de la zero, mai întâi trebuie să despachetăm arhiva descărcată într-un folder de pe hard disk, care poate fi ușor accesibil. O idee bună ar fi să creați un folder pe unitatea C:/. Deși va funcționa în orice altă locație, voi presupune că unitatea C:/ este selectată.

După ce fișierul a fost despachetat, mergeți la folderul creat și vedeți:

Conține fișierul executabil OLLYDBG.exe, pe care trebuie să-l rulăm și pentru care am făcut o comandă rapidă pe desktop pentru comoditate.

Ok, totul este gata de lansare. Faceți clic pe OllyDbg:

Vedem un mesaj că DLL-ul aflat în bibliotecă este mai vechi decât același DLL de sistem, iar dacă selectăm „Da”, atunci vechiul DLL va fi șters din folder, iar cel de sistem va fi folosit. Deși nu văd mare diferență între cele două, o prefer totuși pe cea care vine odată cu distribuția, așa că dau mereu clic pe „Nu”.

Acesta este OllyDbg pur, iar primul program pe care îl vom deschide doar pentru a ne familiariza cu OllyDbg va fi faimosul CrackMe al lui CrueHead, care este atașat acestui tutorial.

Pentru a deschide un fișier în OllyDbg, accesați Fișier -> Deschide sau faceți clic pe pictograma:

Se va deschide o fereastră cu care puteți găsi fișierul dorit, în acest caz este crackme-ul lui CrueHead.

Crackme-ul menționat mai sus se va deschide și, în acest moment, nu contează că este complet neclar ce înseamnă vizualizarea care ni se deschide - deocamdată vom trece doar prin diferitele părți și funcții ale OllyDbg și unele setări, astfel încât când în tutorialele ulterioare scrie, să spunem, „mergi la DUMP”, cel puțin știai unde este această opțiune.

Aici ne vom uita la cele patru părți ale ferestrei principale OllyDbg:

1) Cod dezasamblat

Denumit și listare. Aici Ollie ne arată codul dezasamblat al programului pe care urmează să-l depanăm; În mod implicit, Ollie este configurat să analizeze programul atunci când este deschis. Acest lucru poate fi modificat în Opțiuni -> OPȚIUNI DE DEBUGARE.

Adică, dacă caseta de selectare „AUTO START ANALISIS OF MAIN MODULE” este bifată, OllyDbg va analiza programul și va afișa informații suplimentare despre acesta.

Acesta este începutul listei de crack analizate de la CrueHead și, dacă o deschidem fără analiza, putem vedea diferența.

Fereastra de analiză conține o mulțime de informații, care, în ciuda faptului că nu ne sunt încă foarte clare, par foarte interesante. În același timp, este plăcut să știți că îl puteți elimina oricând dacă analiza se dovedește a nu fi foarte precisă sau dacă s-a strecurat o eroare în ea.

Adesea, OllyDbg afișează incorect unele părți ale programului, deoarece interpretează în mod eronat codul executabil ca date, apoi afișează ceva de genul:

În acest caz, puteți elimina manual analiza făcând clic dreapta pe listă și selectând „ANALIZĂ -> Ștergeți ANALIZA DIN MODUL”.

Și apoi lista va fi afișată corect.

O altă opțiune pe care o puteți folosi pentru a face lucrurile mai ușoare și care personal nu-mi place foarte mult (dar gusturile variază) este evidențierea sărituri și apeluri - faceți clic dreapta pe listă și selectați „ASPECT -> EVIDENȚIAT -> Sărituri și apeluri”.

Veți obține următoarele:

Aici vedem că apelurile sunt evidențiate în azur, iar tranzițiile sunt evidențiate în galben.

Lista este acum mai lizibilă, dar nu avem încă idee ce înseamnă asta, dar este bine să avem instrumentul pregătit pentru utilizare ulterioară.

2) Registre

A doua fereastră importantă este fereastra de înregistrare.

Amintiți-vă că fereastra de înregistrare se află în partea dreaptă a OllyDbg și există o cantitate semnificativă de informații afișate acolo.

Există mult mai multe informații pe care nu le vedem, dar puteți seta modul de afișare la trei stări („VIEW FPU REGISTERS” – afișați registrele FPU, „VIEW 3D NOW REGISTERS” – afișați registrele „3D NOW” și „VIEW DEBUG REGISTRERS” ” – afișează registrele de depanare). În mod implicit, primele sunt afișate.

3) Stivă sau grămadă

Acum să trecem la „stiva sau grămada”. Nu există prea multe opțiuni de configurare aici, în afară de capacitatea de a afișa informații despre registrele ESP și EBP.

În mod implicit, modul de afișare a informațiilor legate de ESP (și este, de asemenea, cel mai util), dar poate fi schimbat în modul de afișare a informațiilor legate de EBP, pentru care trebuie să faceți clic dreapta în această fereastră și să selectați „ GO TO EBP” și utilizarea ulterioară a elementului „GO TO ESP” ne va readuce la modul anterior.

Voi explica funcționalitatea stivei mai detaliat în capitolele ulterioare, dar deocamdată vom acoperi doar ceea ce poate fi schimbat prin configurare.

4) Dump

Fereastra de descărcare are multe moduri de afișare care pot fi modificate făcând clic dreapta în fereastra de descărcare și selectând pe cel de care aveți nevoie. Modul implicit este 8-byte Hex/ASCII.

Modul implicit este și cel mai des folosit, dar, în același timp, avem posibilitatea de a-l schimba pentru a afișa codul dezasamblat (DISASSEMBLE), text (TEXT) și alte formate (SHORT, LONG, FLOAT).

Și în sfârșit, opțiunea SPECIAL -> PE HEADER, care, după cum vom vedea în capitolele următoare, poate fi foarte utilă.

Acum cunoaștem părțile principale ale ferestrei principale OllyDbg, dar există și ferestre care nu sunt direct accesibile, dar pot fi apelate fie prin meniu, fie prin butoanele de pe panoul de control.

Să ne uităm la fiecare dintre ele.

Butonul L sau VIEW->LOG ne arată ce scrie OllyDbg în fereastra de jurnal. Poate fi configurat să afișeze diverse tipuri de informații, iar în mod implicit fereastra de jurnal stochează toate informațiile de pornire, precum și informații legate de JURNALELE CONDIȚIONALE BREAKPOINTS. Pe acesta din urmă îl vom întâlni mult mai târziu, dar deocamdată să ne uităm la informații despre procesul de rulare (în cazul nostru, acesta este crack-ul lui CrueHead) și bibliotecile pe care le încarcă.

Una dintre cele mai importante opțiuni din această fereastră este înregistrarea într-un fișier în cazul în care dorim să salvăm informații într-un fișier text. Pentru a activa această opțiune, faceți clic dreapta și selectați „LOG ÎN FIȘIER”.

Butonul E sau VIEW->EXECUTABLES ne arată o listă de module pe care le folosește programul: exe, dll, ocx și altele.

Și aici, butonul drept al mouse-ului afișează multe opțiuni pe care nu le vom analiza deocamdată, dar pe care le-am văzut deja când am explorat fereastra principală OllyDbg.

Butonul M sau VIEW->MEMORY afișează memoria ocupată de programul nostru. Aici vedem secțiuni ale aplicației, biblioteci utilizate de proces, stiva și diverse secțiuni ocupate de sistem, iar de multe ori programele ocupă noi secțiuni de memorie în timpul execuției.

Făcând clic dreapta, putem face o CĂUTARE în memorie pentru a găsi șiruri de diferite tipuri (text, hexazecimal, unicode), există și posibilitatea de a evidenția punctele de întrerupere în secțiuni, precum și posibilitatea de a schimba drepturile de acces la acestea din urmă ( selectați SETARE ACCES).

Butonul T sau VIEW->THREADS ne arată o listă de fire (threads) ale programului.

Deși acum nu știm ce este, și vom afla doar în capitolele următoare, nu va fi de prisos să vă familiarizați cu fiecare dintre ferestre. Vom învăța cum să le folosim mai târziu.

Butonul W sau VIEW->WINDOWS afișează ferestrele programului, dar deoarece nu rulează încă, lista ferestrelor rămâne goală.

Butonul H sau VIEW->HANDLES afișează mânere, mai târziu voi explica ce fac.

Butonul C sau VIEW->CPU ne întoarce la fereastra principală OllyDbg.

Butonul / sau VIEW->PATCHES arată o listă de corecții aplicate dacă programul a fost modificat. Deoarece încă nu au fost făcute modificări, fereastra rămâne goală pentru moment.

Butonul K sau VIEW->CALL STACK afișează „call stack”, o listă de apeluri pe care le-am întâlnit până în punctul în care programul s-a oprit.

Butonul B sau VIEW->BREAKPOINTS afișează o listă de puncte de întrerupere normale situate în program. Nu există puncte de întrerupere hardware sau puncte de întrerupere a memoriei, doar cele obișnuite.

Butonul R sau VIEW->REFERENCES arată o fereastră cu link-uri primite de noi ca urmare a căutării link-urilor în Ollie

Butonul „…” sau VIEW->RUN TRACE afișează rezultatul comenzii RUN TRACE. Aici putem selecta și opțiunea LOG TO FILE pentru a salva rezultatele urmăririi într-un fișier text.

Am acoperit panoul cu cele mai importante butoane, astfel încât să vă familiarizați cu capabilitățile pe care le oferă, pe măsură ce începem să le aprofundăm în capitolele următoare.

Cum să configurați OllyDbg să devină JIT (JUST IN TIME DEBUGGER)

Desigur, nu vom folosi JIT tot timpul, ci doar în cazuri speciale, deoarece dacă apare o eroare la orice program care rulează pe mașina noastră, atunci nu avem nevoie deloc de folosit Ollie (în mod implicit, dr.watson este folosit ca JIT).

Pentru a face OllyDbg un depanator JIT, trebuie să mergeți la OPȚIUNI->DEPAZARE LA TIMP

Și apăsați butoanele MAKE OLLYDBG JUST IN TIME DEBUGGER și DONE în secvență

Pentru a elimina această funcție, trebuie să faceți clic pe RESTORE JUST IN TIME DEBUGGER și DONE în același loc.

Conectarea pluginurilor în OllyDbg

OllyDbg vă permite să conectați pluginuri care pot fi utile pentru rezolvarea unei anumite probleme. Deocamdată, ne vom limita la conectarea pluginului COMMAND BAR pentru a afla cum să facem acest lucru.

După aceea, despachetați pluginul și uitați-vă la conținutul folderului în care s-a făcut acest lucru:

În primul rând, trebuie să creați un folder pentru pluginuri. Îl voi crea în C:/ și îl voi numi PLUGINS.

Desigur, pluginurile pot fi localizate oriunde, dar îmi place să găzduiesc totul în C. Oricum, acum trebuie să configuram OllyDbg astfel încât să recunoască acest folder ca locație a tuturor pluginurilor.

Pentru a face acest lucru, accesați OPȚIUNI->ASPECT.

Și în fereastra care se deschide, deschide fila DIRECTORIE.

Vedem că calea către pluginuri este directorul în care se află însuși OllyDbg.exe și am putea pune pluginurile acolo, dar îmi place să le țin separate, apoi faceți clic pe PLAGIN PATH->BROWSE pentru a găsi folderul creat de noi. .

Selectați folderul PLUGINS și salvați modificările.

Adică, trebuie să reporniți Ollie, astfel încât să recunoască noul folder cu pluginuri, dar mai întâi trebuie să copiați ultimul plugin descărcat în el.

Copiați întregul conținut al arhivei în folderul PLUGINS.

Acum toate fișierele pluginului „Command Bar” se află în folderul PLUGINS, iar restul ar trebui să fie și ele plasate (deseori nu puteți copia toate fișierele din arhivă, ci doar dll-ul).

Acum închideți OllyDbg, dacă era încă închis și lansați-l din nou. Vedem că COMMAND BAR și opțiunile sale au apărut în meniul PLUGINS.

În partea de jos a OllyDbg vedem BARA DE COMANDĂ instalată.

Acesta este un câmp de text pentru introducerea comenzilor care ne poate fi de folos în multe cazuri, iar mai târziu vom vedea utilizarea lor, dar deocamdată este important să învățăm cum să conectăm plugin-uri.

Pentru a dezinstala PLUGIN, pur și simplu ștergeți dll-ul corespunzător din folderul PLUGINS și reporniți OllyDbg, iar pluginul va dispărea. Cu toate acestea, este prudent să păstrați întotdeauna BARA DE COMANDĂ activată.

Să deschidem din nou crack-ul lui CrueHead în OllyDbg.

Cele mai utile chei din OllyDbg sunt:

F7: Execută o linie de cod (dacă suntem pe CALL, atunci intrați în secțiunea de cod apelată)

F8: Execută o linie de cod (dacă suntem într-un CALL, pur și simplu execută apelul fără a intra și trece la următoarea linie după CALL).

Aceste două tipuri de urmărire manuală sunt foarte diferite și în ce cazuri să folosim fiecare dintre ele vom lua în considerare mai târziu.

F2: Setează un punct de întrerupere normal pe linia marcată. Pentru a elimina acest punct de întrerupere, apăsați din nou F2.

De exemplu:

Dorim să setăm punctul de instalare la poziția 40101A, așa că marchem această linie cu mouse-ul.

Cu un singur clic de mouse este marcat și devine gri ca în imagine. Apoi apăsați F2.

Vedem că poziția corespunzătoare din prima coloană devine roșie, ceea ce indică faptul că aici există un punct de întrerupere. Apăsând din nou F2, îl puteți elimina.

F9: rulează un program care va rula până când atinge un punct de întrerupere, aruncă o excepție sau pur și simplu încetează să ruleze dintr-un motiv oarecare. Când programul rulează, cuvântul RUNNING este afișat în colțul din dreapta jos al OllyDbg.

Lansând crackme de la CrueHead, vom vedea următoarele:

Pentru a opri temporar rularea programului, apăsați F12 sau DEBUG->PAUSE.

Vedem că OllyDbg afișează cuvântul PAUSED. Puteți continua să rulați programul apăsând F9 sau DEBUG->RUN.

Pentru a închide programul care este depanat, selectați DEBUG->CLOSE.

Aceasta a fost o privire de ansamblu rapidă a OllyDbg și vom continua să explorăm numeroasele sale opțiuni și capabilități mai detaliat în capitolele următoare. Principalul lucru este că descărcați programul, îl configurați, priviți din nou tot ce s-a discutat în acest tutorial, conectați și pluginul, porniți și opriți crack-ul lui CrueHead, încercați să setați puncte de întrerupere, astfel încât în ​​capitolul următor toate aceste lucruri să nu fie cauza probleme.tu ezitare si indoiala.

Cutie cu nisip

Jucator nou 7 ianuarie 2016 la 13:36

Elementele de bază ale lucrului cu OllyDebug, folosind exemplul de „vindecare” unui arhivator

  • Asamblator

Astăzi vă voi arăta cum puteți folosi „Olka” pentru a „vindeca” un arhivator faimos. Pentru aceasta avem nevoie de: OllyDBG, pluginul „CommandBar”.

Instalăm arhivatorul, după 40 de zile vedem poza:


Primul lucru care vă vine în minte este să schimbați verificarea licenței sau verificarea pentru durata de utilizare a programului. Să luăm calea ușoară - căutați o funcție WinAPI care primește GetLocalTime curent. În meniul contextual selectați

Căutați -> Nume (etichetă) în modulul curent.


Căutăm funcții legate de timp, o, iată, aproape că am ratat-o.

Acum trebuie să setați un punct de întrerupere pentru această funcție. În fereastra pluginului CommandBar, introduceți

iar acum, când apelăm această funcție, depanatorul nostru se va opri în locul de care avem nevoie.

Începem depanarea, tasta F9. Punctul nostru de întrerupere a fost executat cu succes și ne-am găsit la începutul funcției GetLocalTime, să ajungem la punctul de ieșire din această funcție (Ctr+F9), să facem un pas (F7). Aici vedem că după primirea orei se apelează funcția de la adresa 004B8C00, vă sugerez să intrați în ea și să vedeți ce ar putea fi interesant acolo, folosim pasul cu intrare (F7).

Vedem semne favorabile.

Urmărim programul prin F8, înainte de a verifica la adresa 004B8C26, observăm TEST AL,AL.

Permiteți-mi să vă reamintesc că AL este registrul scăzut al EAX, îl avem acum gol. Comanda TEST AL,AL verifică dacă registrul AL este egal cu zero, dacă este egal, atunci flag-ul ZF va fi pornit Următoarea comandă JE SHORT 004B8C44, trimite la adresa 004B8C44, dacă flag ZF este pornit. Ei bine, propun să elimin această verificare de tranziție. Apăsați bara de spațiu și introduceți nop, apăsați Assemble de mai multe ori până când aceste două comenzi sunt uzate.

Începem depanarea (F9) și vedem că ne-am oprit din nou la punctul nostru de întrerupere, să-l eliminăm (F2) și să continuăm depanarea din nou (F9). Acum vedem că nimic nu ne împiedică să lucrăm și în câmpul de înregistrare este o inscripție care spune că programul este înregistrat.

Etichete: Inginerie inversă, Asamblator, OllyDebug

Acest articol nu este supus comentariilor, deoarece autorul său nu este încă un membru cu drepturi depline al comunității. Veți putea contacta autorul numai după ce acesta va primi

Multe inversoare sunt familiarizate cu OllyDbg, un depanator gratuit în modul utilizator pe 32 de biți (ring 3). Principalele avantaje ale acestui depanator: interfață gratuită, de dimensiuni reduse, intuitivă, ușurință de gestionare și suport pentru pluginuri care își extind semnificativ funcționalitatea. Astăzi există peste 500 de plugin-uri, iar dintre această varietate am încercat să le evidențiem pe cele mai interesante pentru tine.

OllyDumpEx

Când se rezolvă diverse probleme legate de inginerie inversă sau, mai precis, când se lucrează cu software rău intenționat care utilizează în mod activ diverși obfuscatori și ambalatori, destul de des este necesar să se arunce memoria unui proces pentru analiza ulterioară. Din moment ce procesul este activ, majoritatea impachetatorilor și obfuscatorilor săi au funcționat deja și puteți vedea aproape adevărata față a ticălosului. Deci, un dumper de memorie de proces este un lucru de neînlocuit în astfel de sarcini. Fiecare cercetător preferă unul sau altul debugger, de exemplu, din cauza setului de plugin-uri, dar uneori este necesar să le modific și aș dori să am aceeași interfață și capabilități ale pluginurilor, indiferent de depanator. OllyDumpEx Plugin rezolvă această problemă - vă permite să descărcați memoria în mod foarte flexibil și acceptă câteva dintre cele mai populare programe de depanare: OllyDbg 1/2, Immunity Debugger 1.7/1.8, IDA Pro, WinDbg. Caracteristicile instrumentului:

Selectarea unui fișier EXE, DLL sau alt modul pentru dump; - căutarea semnăturilor MZ/PE în memorie; - suport pentru PE32+; - suport pentru procese native pe 64 de biți (în prezent doar în IDA Pro); - descărcați orice spațiu de adrese ca secțiune (chiar dacă nu este în antetul secțiunii); - adăugarea de secțiuni goale; - editarea RVA în DataDirectory pentru modificările ulterioare în ImageBase; - calcularea automată a unui număr mare de parametri (RawSize, RawOffset, VirtualOffset și alții).

Proiectul este în curs de dezvoltare activ și este testat constant de către autor pentru compatibilitate cu cele mai recente versiuni ale depanatoarelor acceptate.

Cum se instalează pluginuri?

În primul rând, trebuie să creați un folder în directorul programului numit Plugins. Acest lucru vă va permite să evitați împrăștierea directorului principal în viitor și, dacă este necesar, puteți găsi cu ușurință un plugin inoperant/conflictuant. Apoi, copiați fișierul DLL plugin în directorul creat, apoi lansați depanatorul și specificați calea către acest folder:

  • OllyDBG v1.10: selectați Opțiuni -> Aspect și fila Directoare. În elementul Calea pluginului, specificați calea către folderul cu pluginuri.
  • OllyDBG v2.01h: selectați Opțiuni -> Opțiuni și secțiunea Directoare. În elementul director Plugin, specificați calea către folderul cu pluginuri.

Reporniți depanatorul și căutați elementul care apare în meniul Plugins.

OllyMigrate

  • Pentru: OllyDbg 1.10/2.01, ImmunityDbg 1.7/1.8, IDA Pro, WinDbg 6

Fiecare depanator are atât puncte forte, cât și puncte slabe, iar fiecare are propriile sale - nu există un instrument perfect. Într-unul este convenabil să ocoliți tehnicile anti-depanare, în altul puteți folosi un arsenal imens de plugin-uri gata făcute, iar în al treilea vă scrieți propriile scripturi. Recent, a devenit posibil să se lucreze secvenţial în OllyDbg, Immunity Debugger, WinDbg şi IDA Pro. Cum? Meet OllyMigrate Plugin - acest plugin vă permite să transferați procesul de depanare la un alt depanator fără a reporni aplicația în studiu. Deci, putem valorifica doar punctele forte ale fiecărui depanator utilizând migrarea de la unul la altul. De exemplu, putem începe cu OllyDbg pentru a ocoli tehnicile anti-depanare și pentru a găsi OEP (Original Entry Point), apoi transferăm controlul către Immunity Debugger și, datorită suportului său pentru scripturile Python, editam tabelul de import obfuscat. După cum înțelegeți deja, pluginul acceptă: OllyDbg 1/2, Immunity Debugger 1.7/1.8, IDA Pro, WinDbg. Particularitati:

Multithreading și capacitatea de a întrerupe firele; - transferul setărilor punctului de întrerupere software (în timp ce se menține starea de activat/dezactivat).


Configurarea schemei grafice

Schema de culori standard OllyDbg este destul de plictisitoare și nu foarte informativă. Desigur, te poți obișnui cu el în timp, dar este mai bine să personalizezi aspectul, astfel încât ochiul să poată naviga instantaneu în lista de ansamblu. În cele din urmă, productivitatea depinde de asta. Puteți personaliza schema de culori în două moduri: direct din meniul „Opțiuni -> Aspect -> Culori” sau prin editarea fișierului ollydbg.ini. Căutați o secțiune în fișier și jucați cu setările de culoare după cum doriți. Acest proces este descris în detaliu pe site-ul oficial bit.ly/1cGR2zr.

OllySocketTrace

  • Pentru: OllyDbg v1.10

Plugin pentru urmărirea tuturor operațiunilor de socket efectuate de un proces. În timpul execuției programului, înregistrează toate bufferele trimise și primite, precum și toți parametrii trecuți la funcțiile de rețea și valorile returnate de acele funcții.

În prezent sunt acceptate următoarele operațiuni cu socket: WSASocket, WSAAccept, WSAConnect, WSARecv, WSARecvFrom, WSASend, WSASendTo, WSAAsyncSelect, WSAEventSelect, WSACloseEvent, listen, ioctlsocket, connect, bind, accept, socket, closesocket, send, recvdown, closesocket, send, recvdown, closesocket Trimite catre.

Doar rulați pluginul ori de câte ori doriți să monitorizați operațiunile socketului. OllySocketTrace va plasa automat toate punctele de întrerupere necesare și va înregistra toate informațiile necesare imediat ce sunt declanșate. Pentru a vizualiza rezultatul rezultat, trebuie să selectați elementul de meniu OllySocketTrace Log.


OllyHeapTrace

  • Pentru: OllyDbg v1.10

Plugin pentru urmărirea manipulărilor heap. Destinat în primul rând pentru depanarea depășirilor de heap atunci când este necesar să se controleze locația heap-ului în timp ce rescrieți o anumită structură, cum ar fi un antet de bloc, o structură de secțiune critică sau alte date de aplicație. Când este activat, pluginul creează automat puncte de întrerupere (RtlAllocateHeap, RtlFreeHeap, RtlCreateHeap, RtlDestroyHeap, RtlReAllocateHeap, RtlSizeHeap, GetProcessHeap și RtlInitializeCriticalSection, RtlDeleteCriticalSection, RtlDelete) și le scrie când ajunge la informațiile necesare. Particularitati:

  • vizualizați urma heap;
  • evidențierea fiecărei urme individuale de grămadă în culori diferite;
  • filtrarea informațiilor „extra” pentru un anumit heap.

Pernă

  • Pentru: OllyDbg v2.01

De ce atât de multe inversoare folosesc Immunity Debugger? Da, pentru că, la fel ca IDA, are suport Python încorporat. Acest limbaj de scripting vă permite să simplificați foarte mult sarcina de a studia codul binar, permițându-vă să scrieți rapid un mic script care automatizează una sau alta sarcină de rutină. Din păcate, naked OllyDbg acceptă doar limbajul de asamblare pentru scrierea scripturilor de automatizare. Din fericire, un tip sub porecla Pablo Escobar a decis să nu suporte această stare de lucruri și a scris un plugin pentru OllyDbg care integrează suportul Python în el - Pyllow. Acum puteți scrie scripturi care automatizează munca de rutină a inversorului, care va rula în interiorul depanatorului și va avea acces la majoritatea API-ului OllyDbg. Pluginul este distribuit în codul sursă, așa că voi spune câteva cuvinte despre asamblarea lui. Pentru a-l compila, veți avea nevoie de Visual Studio 2010, biblioteca Boost, Boost.Python compilat și o versiune pe 32 de biți a Python 3.x (testat pe 3.2). În funcție de setările sistemului de operare, este posibil să trebuiască să îi spuneți lui Boost toate versiunile de Python instalate pe sistemul dvs. și apoi să o selectați pe cea pe care o doriți în timpul construirii. Acest lucru se poate face prin adăugarea unor linii ca aceasta în fișierul /boost-dir/tools/build/v2/user-config.jam:

Folosind python: 3.2: „C:/Program Files (x86)/Python32/python.exe” # calea către configurarea dvs. Python: : : 32 # doar x86-32 ;

Principalul lucru aici este să indicați calea corectă către interpret. Apoi construiți Boost.Python folosind comanda:

Bjam --toolset=msvc-10.0 --build-type=complete --with-python python=3.2 adresa-model=32

Dacă apar dificultăți, manualul oficial Boost ar trebui să vă ajute bit.ly/14FU7xP

OllyGraph

  • Pentru: OllyDbg v2.01

Una dintre caracteristicile care mă atrage în mod deosebit la IDA Pro este capacitatea de a reprezenta o funcție sub formă de grafic. Acest lucru face mult mai convenabil să analizăm codul; devine imediat clar cum am ajuns la aceasta sau acea secțiune, ce condiții au funcționat și cum au funcționat. În plus, poți să te uiți și la graficul de apel pentru a înțelege din ce locuri din program este numită funcția studiată. Din fericire, această caracteristică este acum disponibilă în OllyDbg, trebuie doar să instalați pluginul OllyGraph. Vă permite să prezentați programul sub formă de diagrame bloc, similare cu cele construite în IDA Pro. Mai mult, instrumentul wingraph32, care face parte din ida, este folosit pentru vizualizare. Pentru versiunea 1.10 există un plugin alternativ OllyFlow bit.ly/14lNtpb - o versiune ușor îmbunătățită a OllyGraph de la același autor.


InjectHookLib

  • Pentru: OllyDBG v1.10

O extensie destul de interesantă care vă permite să interceptați apelurile de sistem din modul utilizator. Tehnica de interceptare este interesantă, așa că vă recomand să o citiți pe blogul autorului (bit.ly/OjxUMj pentru Windows XP, bit.ly/NZW6Ci pentru Windows 7). Tot ceea ce este necesar de la utilizator este să instaleze pluginul și să scrie propria bibliotecă DLL în care vor fi implementați handlere pentru funcțiile interceptate. Cum să o implementați, puteți să vă uitați la link-uri sau să studiați codul sursă al exemplului bit.ly/168kcF2, care a fost oferit cu amabilitate de autorul acestei extensii. Un astfel de plugin poate fi util pentru rezolvarea diferitelor sarcini, de exemplu, atunci când se analizează programe malware și se despachetează.


uberstealth

  • Pentru: OllyDbg v2.01, IDA Pro

Cât de mult vor merge dezvoltatorii de programe pentru a-și proteja creația de cercetare! Diferiți ambalatori abundă în special cu astfel de cadouri, deși printre programele obișnuite există și destul de des indivizi plini de tehnici anti-depanare. Ocolirea manuală a tuturor acestor protecții va deveni pur și simplu plictisitoare - doar editarea valorii returnate de funcția IsDebuggerPresent nu va funcționa. Deci, trebuie să utilizați instrumente speciale sub forma acestui plugin. Vine în cod sursă, așa că trebuie să îl asamblați manual. Pentru a face acest lucru, veți avea nevoie de biblioteca Boost>=1.48.0, WTL (Windows Template Library)>=8.1, Windows Driver Kit>=7.0, DDKBuild. Da, da, vederea nu v-a eșuat - WDK și DDK, deoarece depanatorul folosește drivere pentru a se ascunde. Și, desigur, Visual Studio 2008. Interesant, pluginul funcționează nu numai în OllyDbg, ci și în IDA Pro.

Pluginuri esențiale

Pe lângă pluginurile avansate care s-ar putea să nu fie folosite foarte des, trebuie să aveți și un set de domn pentru fiecare zi. De obicei, acest set include următoarele extensii:

  • Bara de comandă bit.ly/14GHQcr - un analog al pluginului încorporat pentru linia de comandă. Adaugă un panou de linie de comandă pentru introducerea comenzilor de control al depanatorului, care vă permite să accelerați procesul de depanare.
  • PhantOm Plugin bit.ly/qyNqJO - plugin anti-depanare de la un dezvoltator rus pentru a ascunde OllyDbg și a remedia vulnerabilitățile depanatorului exploatate de protector. Ajută împotriva celor mai comune metode de detectare.
  • Pluginul chinezesc StrongODbit.ly/gzazAd are o funcționalitate similară. Au existat chiar și zvonuri despre codul rupt de la PhantOm găsit în el.
  • Proprietățile anti-depanare sunt prezente și în Olly Advanced bit.ly/14GI0An. Acesta este un fel de cuțit elvețian care, printre altele, extinde funcționalitatea OllyDbg și elimină unele lucruri enervante și erori ale acestui depanator.
  • Un plugin la fel de important este ODBGScript bit.ly/17Is2AM, care vă permite să scrieți și să executați scripturi pentru a automatiza procesul necesar, cum ar fi despachetarea fișierelor.
  • Ultimul pe listă este OllyDump bit.ly/17Is4si - un dumper de proces excelent cu un reconstructor de tabel de import încorporat.

OllyMSDN

  • Pentru: OllyDbg v1.10, Immunity Debugger 1.7/1.8

Numărul de funcții WinAPI este uriaș, iar cunoașterea lor pe toate ca pe dosul mâinii este pur și simplu nerealist. Prin urmare, uneori trebuie să vă uitați la documentație pentru a clarifica/a afla ce returnează o anumită funcție sau ce parametri ia ca intrare. Din păcate, fișierul de ajutor standard nu poate oferi toate informațiile de care aveți nevoie, așa că trebuie să porniți browserul și să accesați MSDN. Deci, de ce să nu înlocuiți complet acest fișier cu documentație online? Pentru a face acest lucru, trebuie doar să instalați pluginul OllyMSDN, asigurați-vă că avem fișierul WIN32.HLP ca ajutor (Ajutor -> Selectare ajutor API). Dacă nu există un astfel de fișier, atunci trebuie să creați unul gol cu ​​același nume și să îl îndreptați către Olly. Acum, când încercați să accesați fișierul de ajutor din depanator, pluginul va intercepta funcția API WinHelp() și va deschide site-ul MSDN pentru dvs. în locul fișierului vechi. Și pentru a obține informații despre o anumită funcție în timpul depanării, trebuie să faceți clic dreapta pe instrucțiunea de apel și să selectați Ajutor pe numele simbolic sau doar să faceți clic .


DetachMe

  • Pentru: OllyDbg v1.10

Una dintre caracteristicile utile care a apărut în a doua versiune a OllyDbg a fost funcția Detach, care a făcut posibilă „detașarea” depanatorului din procesul investigat, astfel încât procesul să poată continua să funcționeze independent. Din păcate, versiunea 1.10, îndrăgită de mulți, nu are o astfel de funcție - vă puteți alătura doar procesului studiat. Dar acest lucru poate fi rezolvat prin instalarea plugin-ului DetachMe, care vă permite să detașați programele depanate din OllyDbg în orice moment și să continuați să exercitați control extern asupra depanatorului. În plus, dezactivarea punctelor de întrerupere a software-ului și procesorului nu va afecta fișierele udd corespunzătoare.

OllyDbg PDK

Nu există pluginuri pentru toate ocaziile, așa că mai devreme sau mai târziu poate veni un moment în care trebuie să-i „fai singur o ținută” pentru Olya pentru a rezolva următoarea sarcină ambițioasă. În acest caz, veți avea nevoie de PDK - Plugin Development Kit, care poate fi descărcat de pe site-ul oficial bit.ly/18oD7t6.

Ollydbg-backup

  • Pentru: OllyDbg v1.10 / v2.01

În timp ce lucrează la următorul binar, inversorul trebuie să adauge o mulțime de informații proprii: scrie comentarii la funcțiile inversate, astfel încât a doua zi să nu fie nevoit să reînvețe algoritmul de funcționare a acestora și parametrii de intrare, setați puncte de întrerupere și așa mai departe. Toate aceste informații de serviciu sunt salvate automat de către depanator într-un fișier UDD. Dar se întâmplă că atunci când depanatorul se blochează sau este reinstalat din nou, aceste fișiere se pierd. Și trebuie să începem din nou analiza. Pentru a evita o astfel de situație tristă, puteți folosi pluginul ollydbg-backup, care vă permite să faceți backup acestor informații salvându-le într-un fișier CSV, din care poate fi încărcat cu ușurință înapoi în depanator. Fișierul CSV are următoarea structură:

RVA, etichetă, comentariu

Concluzie

OllyDbg este un depanator foarte popular; există destul de multe plugin-uri pentru el și puteți vorbi despre ele mult timp. Scopul nostru nu a fost să le luăm în considerare pe toate, am încercat doar să selectăm cele mai interesante „ținute” pentru prietena noastră de luptă Olya. Sper că am reușit.

Scopul acestei „Introduceri în Cracking from Scratch Using OllyDbg” este de a oferi celor care abia încep să stăpânească arta crackingului o cunoaștere de bază și, în același timp, să facă acest lucru într-un mod în care aceste cunoștințe să le permită să citească mai târziu. și înțelegeți tutoriale mai avansate, cum ar fi , care pot fi găsite în „Cursul nou de la CracksLatinos”, care, desigur, rămâne deschis la noi completări și completări.

Ideea cursului a luat naștere din faptul că multe dintre tutorialele din Noul Curs de la CracksLations erau prea dificile pentru începători, iar cei care nu reușeau să atingă nivelul cerut s-au simțit frustrați și, în multe cazuri, au refuzat să continue. Prin urmare, scopul acestei „Introduceri...” nu este acela de a repeta excelentele tutoriale din „Cursul Nou...”, al cărui număr a depășit deja 500, ci de a pune bazele pentru ca cei care parcurg acest curs va putea citi tutoriale mai complexe. Acest lucru, la fel ca tot în meșteșugurile noastre, necesită un efort considerabil, iar scopul principal este reducerea acestei sume, oferind cunoștințe de bază și permițând înțelegerea ulterioară a unui material mai complex.

De ce OLLYDBG?

Nu vom vorbi aici despre eterna confruntare dintre Soft-Ice și OllyDbg; cred că până și fanaticii Soft-Ice recunosc că este mai ușor să începi cu OllyDbg, deoarece există multe informații despre el și este mai ușor de studiat. Trebuie să intrăm în lumea cracking-ului prin ușa numită „OllyDbg”, și abia atunci cine are nevoie poate trece la orice alt depanator care este necesar, deoarece doar metodele lor de utilizare se schimbă, dar esența rămâne aceeași.

Începe de la capăt

Mai întâi trebuie să vă înarmați cu instrumentul pe care îl vom folosi în principal, pentru care faceți clic și descărcați-l.

Deoarece începem de la zero, mai întâi trebuie să despachetăm arhiva descărcată într-un folder de pe hard disk, care poate fi ușor accesibil. O idee bună ar fi să creați un folder pe unitatea C:/. Deși va funcționa în orice altă locație, voi presupune că unitatea C:/ este selectată.

După ce fișierul a fost despachetat, mergeți la folderul creat și vedeți:

Conține fișierul executabil OLLYDBG.exe, pe care trebuie să-l rulăm și pentru care am făcut o comandă rapidă pe desktop pentru comoditate.

Ok, totul este gata de lansare. Faceți clic pe OllyDbg:

Vedem un mesaj că DLL-ul aflat în bibliotecă este mai vechi decât același DLL de sistem, iar dacă selectăm „Da”, atunci vechiul DLL va fi șters din folder, iar cel de sistem va fi folosit. Deși nu văd mare diferență între cele două, o prefer totuși pe cea care vine odată cu distribuția, așa că dau mereu clic pe „Nu”.

Acesta este OllyDbg pur, iar primul program pe care îl vom deschide doar pentru a ne familiariza cu OllyDbg va fi faimosul CrackMe al lui CrueHead, care este atașat acestui tutorial.

Pentru a deschide un fișier în OllyDbg, accesați Fișier -> Deschide sau faceți clic pe pictograma:

Se va deschide o fereastră cu care puteți găsi fișierul dorit, în acest caz este crackme-ul lui CrueHead.

Crackme-ul menționat mai sus se va deschide și, în acest moment, nu contează că este complet neclar ce înseamnă vizualizarea care ni se deschide - deocamdată vom trece doar prin diferitele părți și funcții ale OllyDbg și unele setări, astfel încât când în tutorialele ulterioare scrie, să spunem, „mergi la DUMP”, cel puțin știai unde este această opțiune.

Aici ne vom uita la cele patru părți ale ferestrei principale OllyDbg:

1) Cod dezasamblat

Denumit și listare. Aici Ollie ne arată codul dezasamblat al programului pe care urmează să-l depanăm; În mod implicit, Ollie este configurat să analizeze programul atunci când este deschis. Acest lucru poate fi modificat în Opțiuni -> OPȚIUNI DE DEBUGARE.

Adică, dacă caseta de selectare „AUTO START ANALISIS OF MAIN MODULE” este bifată, OllyDbg va analiza programul și va afișa informații suplimentare despre acesta.

Acesta este începutul listei de crack analizate de la CrueHead și, dacă o deschidem fără analiza, putem vedea diferența.

Fereastra de analiză conține o mulțime de informații, care, în ciuda faptului că nu ne sunt încă foarte clare, par foarte interesante. În același timp, este plăcut să știți că îl puteți elimina oricând dacă analiza se dovedește a nu fi foarte precisă sau dacă s-a strecurat o eroare în ea.

Adesea, OllyDbg afișează incorect unele părți ale programului, deoarece interpretează în mod eronat codul executabil ca date, apoi afișează ceva de genul:

În acest caz, puteți elimina manual analiza făcând clic dreapta pe listă și selectând „ANALIZĂ -> Ștergeți ANALIZA DIN MODUL”.

Și apoi lista va fi afișată corect.

O altă opțiune pe care o puteți folosi pentru a face lucrurile mai ușoare și care personal nu-mi place foarte mult (dar gusturile variază) este evidențierea sărituri și apeluri - faceți clic dreapta pe listă și selectați „ASPECT -> EVIDENȚIAT -> Sărituri și apeluri”.

Veți obține următoarele:

Aici vedem că apelurile sunt evidențiate în azur, iar tranzițiile sunt evidențiate în galben.

Lista este acum mai lizibilă, dar nu avem încă idee ce înseamnă asta, dar este bine să avem instrumentul pregătit pentru utilizare ulterioară.

2) Registre

A doua fereastră importantă este fereastra de înregistrare.

Amintiți-vă că fereastra de înregistrare se află în partea dreaptă a OllyDbg și există o cantitate semnificativă de informații afișate acolo.

Există mult mai multe informații pe care nu le vedem, dar puteți seta modul de afișare la trei stări („VIEW FPU REGISTERS” – afișați registrele FPU, „VIEW 3D NOW REGISTERS” – afișați registrele „3D NOW” și „VIEW DEBUG REGISTRERS” ” – afișează registrele de depanare). În mod implicit, primele sunt afișate.

3) Stivă sau grămadă

Acum să trecem la „stiva sau grămada”. Nu există prea multe opțiuni de configurare aici, în afară de capacitatea de a afișa informații despre registrele ESP și EBP.

În mod implicit, modul de afișare a informațiilor legate de ESP (și este, de asemenea, cel mai util), dar poate fi schimbat în modul de afișare a informațiilor legate de EBP, pentru care trebuie să faceți clic dreapta în această fereastră și să selectați „ GO TO EBP” și utilizarea ulterioară a elementului „GO TO ESP” ne va readuce la modul anterior.

Voi explica funcționalitatea stivei mai detaliat în capitolele ulterioare, dar deocamdată vom acoperi doar ceea ce poate fi schimbat prin configurare.

4) Dump

Fereastra de descărcare are multe moduri de afișare care pot fi modificate făcând clic dreapta în fereastra de descărcare și selectând pe cel de care aveți nevoie. Modul implicit este 8-byte Hex/ASCII.

Modul implicit este și cel mai des folosit, dar, în același timp, avem posibilitatea de a-l schimba pentru a afișa codul dezasamblat (DISASSEMBLE), text (TEXT) și alte formate (SHORT, LONG, FLOAT).

Și în sfârșit, opțiunea SPECIAL -> PE HEADER, care, după cum vom vedea în capitolele următoare, poate fi foarte utilă.

Acum cunoaștem părțile principale ale ferestrei principale OllyDbg, dar există și ferestre care nu sunt direct accesibile, dar pot fi apelate fie prin meniu, fie prin butoanele de pe panoul de control.

Să ne uităm la fiecare dintre ele.

Butonul L sau VIEW->LOG ne arată ce scrie OllyDbg în fereastra de jurnal. Poate fi configurat să afișeze diverse tipuri de informații, iar în mod implicit fereastra de jurnal stochează toate informațiile de pornire, precum și informații legate de JURNALELE CONDIȚIONALE BREAKPOINTS. Pe acesta din urmă îl vom întâlni mult mai târziu, dar deocamdată să ne uităm la informații despre procesul de rulare (în cazul nostru, acesta este crack-ul lui CrueHead) și bibliotecile pe care le încarcă.

Una dintre cele mai importante opțiuni din această fereastră este înregistrarea într-un fișier în cazul în care dorim să salvăm informații într-un fișier text. Pentru a activa această opțiune, faceți clic dreapta și selectați „LOG ÎN FIȘIER”.

Butonul E sau VIEW->EXECUTABLES ne arată o listă de module pe care le folosește programul: exe, dll, ocx și altele.

Și aici, butonul drept al mouse-ului afișează multe opțiuni pe care nu le vom analiza deocamdată, dar pe care le-am văzut deja când am explorat fereastra principală OllyDbg.

Butonul M sau VIEW->MEMORY afișează memoria ocupată de programul nostru. Aici vedem secțiuni ale aplicației, biblioteci utilizate de proces, stiva și diverse secțiuni ocupate de sistem, iar de multe ori programele ocupă noi secțiuni de memorie în timpul execuției.

Făcând clic dreapta, putem face o CĂUTARE în memorie pentru a găsi șiruri de diferite tipuri (text, hexazecimal, unicode), există și posibilitatea de a evidenția punctele de întrerupere în secțiuni, precum și posibilitatea de a schimba drepturile de acces la acestea din urmă ( selectați SETARE ACCES).

Butonul T sau VIEW->THREADS ne arată o listă de fire (threads) ale programului.

Deși acum nu știm ce este, și vom afla doar în capitolele următoare, nu va fi de prisos să vă familiarizați cu fiecare dintre ferestre. Vom învăța cum să le folosim mai târziu.

Butonul W sau VIEW->WINDOWS afișează ferestrele programului, dar deoarece nu rulează încă, lista ferestrelor rămâne goală.

Butonul H sau VIEW->HANDLES afișează mânere, mai târziu voi explica ce fac.

Butonul C sau VIEW->CPU ne întoarce la fereastra principală OllyDbg.

Butonul / sau VIEW->PATCHES arată o listă de corecții aplicate dacă programul a fost modificat. Deoarece încă nu au fost făcute modificări, fereastra rămâne goală pentru moment.

Butonul K sau VIEW->CALL STACK afișează „call stack”, o listă de apeluri pe care le-am întâlnit până în punctul în care programul s-a oprit.

Butonul B sau VIEW->BREAKPOINTS afișează o listă de puncte de întrerupere normale situate în program. Nu există puncte de întrerupere hardware sau puncte de întrerupere a memoriei, doar cele obișnuite.

Butonul R sau VIEW->REFERENCES afișează o fereastră de referințe pe care le-am primit ca urmare a căutării referințelor în Ollie.

Butonul „…” sau VIEW->RUN TRACE afișează rezultatul comenzii RUN TRACE. Aici putem selecta și opțiunea LOG TO FILE pentru a salva rezultatele urmăririi într-un fișier text.

Am acoperit panoul cu cele mai importante butoane, astfel încât să vă familiarizați cu capabilitățile pe care le oferă, pe măsură ce începem să le aprofundăm în capitolele următoare.

Cum să configurați OllyDbg să devină JIT (JUST IN TIME DEBUGGER)

Desigur, nu vom folosi JIT tot timpul, ci doar în cazuri speciale, deoarece dacă apare o eroare la orice program care rulează pe mașina noastră, atunci nu avem nevoie deloc de folosit Ollie (în mod implicit, dr.watson este folosit ca JIT).

Pentru a face OllyDbg un depanator JIT, trebuie să mergeți la OPȚIUNI->DEPAZARE LA TIMP

și apăsați butoanele MAKE OLLYDBG JUST IN TIME DEBUGGER și DONE în secvență

Pentru a elimina această funcție, trebuie să faceți clic pe RESTORE JUST IN TIME DEBUGGER și DONE în același loc.

Conectarea pluginurilor în OllyDbg

OllyDbg vă permite să conectați pluginuri care pot fi utile pentru rezolvarea unei anumite probleme. Deocamdată, ne vom limita la conectarea pluginului COMMAND BAR pentru a afla cum să facem acest lucru.

Descărcați acest plugin de aici (linkul indicat în articolul original este mort, așa că am descărcat pluginul de pe Internet și l-am postat pe wasm.ru - aproximativ).

După aceea, despachetați pluginul și uitați-vă la conținutul folderului în care s-a făcut acest lucru:

În primul rând, trebuie să creați un folder pentru pluginuri. Îl voi crea în C:/ și îl voi numi PLUGINS.

Desigur, pluginurile pot fi localizate oriunde, dar îmi place să găzduiesc totul în C. Oricum, acum trebuie să configuram OllyDbg astfel încât să recunoască acest folder ca locație a tuturor pluginurilor.

Pentru a face acest lucru, accesați OPȚIUNI->ASPECT.

Și în fereastra care se deschide, deschide fila DIRECTORIE.

Vedem că calea către pluginuri este directorul în care se află însuși OllyDbg.exe și am putea pune pluginurile acolo, dar îmi place să le țin separate, apoi faceți clic pe PLAGIN PATH->BROWSE pentru a găsi folderul creat de noi. .

Selectați folderul PLUGINS și salvați modificările.

Adică, trebuie să reporniți Ollie, astfel încât să recunoască noul folder cu pluginuri, dar mai întâi trebuie să copiați ultimul plugin descărcat în el.

Copiați întregul conținut al arhivei în folderul PLUGINS.

Acum toate fișierele pluginului „Command Bar” se află în folderul PLUGINS, iar restul ar trebui să fie și ele plasate (deseori nu puteți copia toate fișierele din arhivă, ci doar dll-ul).

Acum închideți OllyDbg, dacă era încă închis și lansați-l din nou. Vedem că COMMAND BAR și opțiunile sale au apărut în meniul PLUGINS.

În partea de jos a OllyDbg vedem BARA DE COMANDĂ instalată.

Acesta este un câmp de text pentru introducerea comenzilor care ne poate fi de folos în multe cazuri, iar mai târziu vom vedea utilizarea lor, dar deocamdată este important să învățăm cum să conectăm plugin-uri.

Pentru a dezinstala PLUGIN, pur și simplu ștergeți dll-ul corespunzător din folderul PLUGINS și reporniți OllyDbg, iar pluginul va dispărea. Cu toate acestea, este prudent să păstrați întotdeauna BARA DE COMANDĂ activată.

Să deschidem din nou crack-ul lui CrueHead în OllyDbg.

Cele mai utile chei din OllyDbg sunt:

F7: Execută o linie de cod (dacă suntem pe CALL, atunci intrați în secțiunea de cod apelată)

F8: Execută o linie de cod (dacă suntem într-un CALL, pur și simplu execută apelul fără a intra și trece la următoarea linie după CALL).

Aceste două tipuri de urmărire manuală sunt foarte diferite și în ce cazuri să folosim fiecare dintre ele vom lua în considerare mai târziu.

F2: Setează un punct de întrerupere normal pe linia marcată. Pentru a elimina acest punct de întrerupere, apăsați din nou F2.

De exemplu:

Dorim să setăm punctul de instalare la poziția 40101A, așa că marchem această linie cu mouse-ul.

Cu un singur clic de mouse este marcat și devine gri ca în imagine. Apoi apăsați F2.

Vedem că poziția corespunzătoare din prima coloană devine roșie, ceea ce indică faptul că aici există un punct de întrerupere. Apăsând din nou F2, îl puteți elimina.

F9: rulează un program care va rula până când atinge un punct de întrerupere, aruncă o excepție sau pur și simplu încetează să ruleze dintr-un motiv oarecare. Când programul rulează, cuvântul RUNNING este afișat în colțul din dreapta jos al OllyDbg.

Lansând crackme de la CrueHead, vom vedea următoarele:

Pentru a opri temporar rularea programului, apăsați F12 sau DEBUG->PAUSE.

Vedem că OllyDbg afișează cuvântul PAUSED. Puteți continua să rulați programul apăsând F9 sau DEBUG->RUN.

Pentru a închide programul care este depanat, selectați DEBUG->CLOSE.

Aceasta a fost o privire de ansamblu rapidă a OllyDbg și vom continua să explorăm numeroasele sale opțiuni și capabilități mai detaliat în capitolele următoare. Principalul lucru este că descărcați programul, îl configurați, priviți din nou tot ce s-a discutat în acest tutorial, conectați și pluginul, porniți și opriți crack-ul lui CrueHead, încercați să setați puncte de întrerupere, astfel încât în ​​capitolul următor toate aceste lucruri să nu fie cauza probleme.tu ezitare si indoiala.

Aproape fiecare mediu de dezvoltare integrat modern pentru Windows include un depanator. Nu este nimic surprinzător aici - un programator își petrece jumătate din viața profesională depanând, astfel încât producătorii de medii de dezvoltare - comerciale sau gratuite - își furnizează produsele cu aceste instrumente importante. Cu toate acestea, depanatoarele autonome care nu depind de niciun mediu nu au dispărut încă. Un exemplu izbitor în acest sens este „eroul” acestui articol, depanatorul OllyDbg.

Site-ul web al programului se află la www.ollydbg.de. Dimensiunea distribuției OllyDbg este destul de mică, mai ales dacă vă uitați la capacitățile acestui depanator. Și oportunitățile sunt destul de bune și cred că, după ce ai citit acest articol până la sfârșit, vei fi de acord cu mine.


Posibilitati

În primul rând, un avantaj serios este interfața grafică cu utilizatorul - adică programul are ferestre cu drepturi depline cu care suntem obișnuiți să lucrăm în Windows. La prima vedere, acest lucru poate părea amuzant, dar, de fapt, nu toți depanatorii au dobândit încă o interfață grafică cu drepturi depline. Nu știu despre tine, desigur, dar este mai plăcut și mai convenabil pentru mine să lucrez cu un program care are o interfață grafică decât unul care are o interfață de consolă asemănătoare DOS. Desigur, în unele cazuri, acesta din urmă este de preferat, dar astfel de cazuri sunt încă minoritare. Mai mult, este de remarcat faptul că există o mulțime de setări de interfață în OllyDbg, astfel încât să puteți personaliza culoarea de fundal, fonturile și multe altele.

Al doilea parametru important care caracterizează depanatorii este arhitecturile și extensiile de procesor acceptate. Ce înseamnă? Aceasta înseamnă că vechiul depanator poate să nu poată gestiona noul program, deoarece nu va cunoaște toate comenzile procesorului pe care le folosește programul. OllyDbg nu este înaintea curbei în acest sens, dar suportă multe tehnologii utilizate pe scară largă de Intel și AMD: MMX, 3DNow!, extensii Athlon, SSE.

Formatele de informații de depanare Microsoft (COFF) și Borland (OMF) sunt acceptate. Dumpurile de memorie pot fi, de asemenea, ieșite în diferite formate: hexazecimal, text (ANSI sau Unicode), adrese de memorie și alte formate mai puțin obișnuite.

O caracteristică bună este capacitatea de a depana biblioteci de linkuri dinamice (DLL). Depanatorul însuși rulează funcția de apelare din DLL-ul aplicației și monitorizează toate apelurile către bibliotecă. Mai mult decât atât, dacă funcțiile sunt exportate nu în formă numită, ci sub formă de index (ordinal), atunci OllyDbg restabilește forma funcției pe baza parametrilor trecuți acesteia. Apropo, depanatorul nu poate lansa doar aplicații sub supravegherea sa, ci și se poate atașa la cele care rulează deja. Puteți depana nu numai aplicații simple, ci și cu mai multe fire. Mai mult, puteți lucra cu fluxuri în OllyDbg destul de complet: adăugați sau eliminați fluxuri, comutați de la unul la altul. Fiecare thread este depanat în propria fereastră, așa că, în teorie, nu există confuzie.

Analizatorul încorporat în OllyDbg este cea mai importantă parte a creației lor, potrivit dezvoltatorilor. Analizatorul recunoaște bucle, salturi condiționate în programul depanat, precum și constante și șiruri încorporate de programator direct în codul programului, construcții „inteligente” (pentru care programatorii C sunt deosebit de celebri), apeluri la funcții API, funcții importate , etc. Analizorul face codul binar mai lizibil, facilitează depanarea și reduce probabilitatea dezasamblarii incorecte. În același timp, analizorul nu se concentrează pe niciun compilator și poate fi la fel de util atunci când depanați orice aplicație Windows pe 32 de biți. Când recunoaște funcții, analizatorul folosește un tabel care conține numele și argumentele a peste 2.300 dintre cele mai utilizate funcții C Standard Library și Windows API pentru a accelera procesul. Cu toate acestea, puteți umple masa singur.

OllyDbg oferă oportunități excelente pentru programator în zona de căutare: puteți căuta o instrucțiune de procesor sau întreaga lor secvență, constante, secvență binară sau text de octeți. Puteți căuta comenzi corespunzătoare unei anumite adrese sau unui interval de adrese de memorie; căutarea de funcții care apelează o altă funcție sau accesarea unui anumit modul. Dacă căutarea găsește mai multe locuri în program care corespund condițiilor de căutare specificate, OllyDbg afișează o listă completă a acestora, permițându-vă să comutați rapid între ele.

Depanatorul urmărește toate ferestrele pe care le creează aplicația și le plasează într-o listă. În acest fel, puteți monitoriza toate mesajele pe care această fereastră le primește de la sistem. Lucrul cu resursele de tip șir este organizat convenabil, care poate fi monitorizat și modificat fără a întrerupe procesul de depanare. Alte tipuri de resurse sunt mai limitate: pot fi vizualizate și modificate doar în formă binară.

OllyDbg acceptă lucrul cu toate tipurile posibile de puncte de întrerupere. În cazuri excepționale, puteți seta întreruperea INT 3 să fie apelată pentru a opri execuția aplicației după fiecare comandă din modulul depanat. Pe lângă punctele de întrerupere, este acceptată vizualizarea valorilor în registre și la anumite adrese de memorie. Pe lângă toate acestea, pe sistemele de operare bazate pe nucleul Windows NT, OllyDbg poate monitoriza toate handle-urile folosite de aplicația care este depanată. Sub Win9x nu poate face acest lucru, dar acolo puteți monitoriza blocurile de memorie alocate în heap.

Pe lângă depanatorul în sine, OllyDbg are un profiler încorporat - un instrument pentru verificarea vitezei codului. Acest instrument este de obicei oferit separat de depanator, dar abordarea adoptată de dezvoltatorul OllyDbg are mai mult sens pentru mine, deoarece profilarea și depanarea sunt adesea inseparabile.

O caracteristică interesantă a programului este suportul pentru lucrul cu arhive auto-extractabile. Dacă specificați o arhivă autoextractabilă cu un alt fișier executabil în interior ca fișier de depanat, OllyDbg ar trebui să înceapă să depaneze nu auto-extractorul, ci fișierul care va fi despachetat de acesta.

O altă caracteristică utilă și interesantă a OllyDbg este suportul pentru pluginuri care se conectează la depanator și își extind funcționalitatea. Pachetul standard include pluginuri pentru lucrul cu marcaje și linia de comandă. Totuși, pe site-ul OllyDbg puteți găsi un SDK (Software Development Kit) cu ajutorul căruia vă puteți crea propriul plugin care implementează capabilitățile lipsă.


Scopul aplicatiei

După cum am spus deja, și probabil știți fără mine, fiecare mediu de dezvoltare modern are propriul său depanator. Și totuși, dintr-un anumit motiv, autorul OllyDbg, un anume Oleh Yuschuk, a început să dezvolte un depanator separat și a dus dezvoltarea acestuia la un final victorios.

Ideea, în primul rând, este că depanatorul încorporat în mediul de dezvoltare este destinat pentru depanarea acelor programe care au fost create special în acest mediu. Un astfel de depanator este special „creat” pentru un anumit limbaj de programare și un anumit compilator. Iar depanarea în 99,9% din cazuri are loc atunci când programatorul are codul sursă al programului. OllyDbg este la fel de potrivit pentru toate aplicațiile Win32 și este destinat în principal pentru depanarea acelor aplicații al căror cod sursă nu este disponibil. În general, pentru o astfel de depanare nici nu trebuie să știți în ce este scris programul. Acest focus explică prezența în OllyDbg a instrumentelor pentru schimbarea fișierului executabil.

Sarcina de depanare a unui program fără cod sursă în sine poate apărea într-un număr de cazuri. De exemplu, cel mai simplu este atunci când textele programului s-au pierdut din cauza neglijenței banale sau a unui atac al virușilor malefici. Apoi, dacă rămâne un fișier executabil mai mult sau mai puțin stabil, puteți finaliza depanarea fără cod sursă și puteți elibera produsul la timp. Ca o variantă a primului caz, se întâmplă ca erori să fie descoperite într-o bibliotecă DLL folosită de program, iar codul sursă al bibliotecii să nu fie disponibil. Ori, din nou, se pierde, ori furnizorul bibliotecii, dacă a fost scrisă de cineva din afară, cere prea mulți bani pentru asta. Atunci nu mai rămâne nimic (mai ales dacă bug-urile sunt rău intenționate, iar apariția de noi versiuni ale bibliotecii nu este în niciun caz de așteptat) decât să depanezi fișierul executabil deja în mână.

Și, desigur, cea mai comună opțiune pentru depanare fără cod sursă este hacking-ul. Formal, aceasta poate fi considerată depanare, deoarece pentru a combate protecția unui program comercial, trebuie să înțelegeți bine cum funcționează această protecție. Există puține speranțe pentru dezvoltator aici: este puțin probabil ca acesta să-i spună hackerului cum să rupă optim, rapid și eficient, protecția propriului program și să se priveze pe sine, persoana iubită, de banii meritați sincer. Și, deși dezvoltatorul OllyDbg cere în acordul de licență să nu folosească acest depanator în scopuri ilegale, este puțin probabil ca majoritatea crackerilor să acorde vreo atenție acestor cereri inutile. Mai mult decât atât, unele dintre caracteristicile OllyDbg sunt un adevărat cadou pentru un hacker: de exemplu, lucrul cu auto-extractoarele facilitează hack-ul de programe a căror protecție se bazează pe acestea. Desigur, nu se poate spune că OllyDbg va fi util doar celor care îl vor folosi ilegal, dar cred că acest program are astfel de utilizatori și nu sunt atât de puțini.

Cu toate acestea, îi îndemn pe toți cei interesați de acest depanator să nu îl folosească în scopuri ilegale - maxim pentru cercetarea protecției programului pentru a-și scrie propria protecție de înaltă calitate.


Concluzii/Rezumat

În general, desigur, nu toți programatorii au nevoie de OllyDbg și nu în fiecare zi, dar există momente când trebuie să alegeți un depanator și atunci trebuie să vă amintiți avantajele OllyDbg. Deși mulți programatori din întreaga lume folosesc GNU Debugger (GDB), OllyDbg are avantaje față de acesta.

În primul rând, este o interfață grafică Windows nativă. Deși GDB are, de asemenea, prevederi pentru lucrul în fereastră, mai degrabă decât în ​​modul console, de obicei nu implementează pe deplin funcționalitatea versiunii de consolă. În plus, deoarece GDB este un lucru multiplatform, există probleme cu compatibilitatea cu formatele de informații de depanare ale compilatoarelor Win32. De fapt, GBD este perfect compatibil doar cu compilatoarele GNU (adică pentru Windows este MinGW - Minimalist GNU pentru Windows). În plus, este axat pe depanarea programelor scrise în C/C++, deci nu le este atât de convenabil să depaneze programele scrise în alte limbi. OllyDbg nu are astfel de dezavantaje; am vorbit deja despre principalele sale capabilități mai devreme. Așadar, cred că, dintre depanatoarele free-standing pentru Win32, OllyDbg este cel mai bun.

Vadim STANKEVICH