Programos, skirtos redaguoti ollydbg. Olly Debugger nuo A iki Z

Įvadas į krekingą nuo nulio naudojant OllyDbg – 1 skyrius – Archyvas WASM.RU

Šio „Įvadas į krekingą nuo nulio naudojant OllyDbg“ tikslas yra suteikti tiems, kurie tik pradeda įvaldyti krekingo meną, ir tuo pačiu tai padaryti taip, kad šios žinios leistų vėliau skaityti. ir suprasti sudėtingesnes mokymo programas, tokias kaip , kurias galite rasti „Naujame „CracksLatinos“ kurse“, kuri, žinoma, yra atvira naujiems papildymams ir papildymams.

Kurso idėja kilo dėl to, kad daugelis „New Course from CracksLations“ pamokų buvo per sunkūs pradedantiesiems, o tie, kurie nepasiekė reikiamo lygio, buvo nusivylę ir daugeliu atvejų atsisakė tęsti. Todėl šio „Įvado...“ tikslas yra ne kartoti puikias pamokas iš „Naujo kurso...“, kurių skaičius jau viršijo 500, o padėti pamatus, kad baigusieji šį kursą galės skaityti sudėtingesnes pamokas. Tai, kaip ir visa kita mūsų amato, reikalauja didelių pastangų, o pagrindinis tikslas – sumažinti šį kiekį, suteikiant pagrindines žinias ir leidžiant toliau suprasti sudėtingesnę medžiagą.

Kodėl OLLYDBG?

Čia nekalbėsime apie amžiną „Soft-Ice“ ir „OllyDbg“ konfrontaciją, manau, kad net „Soft-Ice“ fanatikai pripažįsta, kad su OllyDbg yra lengviau pradėti, nes apie jį yra daug informacijos ir lengviau mokytis. Į laužymo pasaulį reikia patekti pro duris, vadinamas „OllyDbg“, ir tik tada kam reikia, gali pereiti prie bet kurio kito reikalingo derintuvo, nes keičiasi tik jų naudojimo būdai, o esmė išlieka ta pati.

Pradėti iš naujo

Pirmiausia turite apsiginkluoti įrankiu, kurį daugiausia naudosime, kurį naudodami spustelėkite ir atsisiųskite.

Kadangi pradedame nuo nulio, pirmiausia turime išpakuoti atsisiųstą archyvą į aplanką standžiajame diske, kurį būtų galima lengvai pasiekti. Gera idėja būtų sukurti aplanką C:/ diske. Nors jis veiks bet kurioje kitoje vietoje, manysiu, kad pasirinktas C:/ diskas.

Kai failas bus išpakuotas, eikite į sukurtą aplanką ir žiūrėkite:

Jame yra vykdomasis failas OLLYDBG.exe, kurį turime paleisti ir dėl kurio patogumo darbalaukyje padariau nuorodą.

Gerai, viskas paruošta paleisti. Spustelėkite OllyDbg:

Matome pranešimą, kad bibliotekoje esantis DLL yra senesnis nei tos pačios sistemos DLL, ir jei pasirinksime „Taip“, senasis DLL bus ištrintas iš aplanko ir bus naudojamas sisteminis. Nors nematau didelio skirtumo tarp šių dviejų, vis tiek man labiau patinka tas, kuris pateikiamas kartu su platinimu, todėl visada paspaudžiu „Ne“.

Tai yra grynas OllyDbg, o pirmoji programa, kurią atidarysime tik norėdami susipažinti su OllyDbg, bus garsusis CrueHead CrackMe, kuris pridedamas prie šios pamokos.

Norėdami atidaryti failą OllyDbg, eikite į Failas -> Atidaryti arba spustelėkite piktogramą:

Atsidarys langas, kuriame rasite norimą failą, šiuo atveju tai yra CrueHead crackme.

Atsidarys minėtas crackme, ir šiuo metu visai neaišku, ką reiškia mums atsiveriantis vaizdas – kol kas tik apžvelgsime įvairias OllyDbg dalis ir funkcijas bei kai kuriuos nustatymus, kad kai vėlesnėse pamokose sakoma, tarkime, „eiti į DUMP“, jūs bent jau žinojote, kur yra ši parinktis.

Čia pažvelgsime į keturias pagrindinio OllyDbg lango dalis:

1) Išardytas kodas

Taip pat vadinamas sąrašu. Čia Ollie parodo mums išardytą programos, kurią ketiname derinti, kodą; Pagal numatytuosius nustatymus Ollie yra sukonfigūruotas analizuoti programą, kai ji atidaroma. Tai galima pakeisti skiltyje Parinktys -> DERINIMO PARINKTYS.

Tai yra, jei pažymėtas žymimasis laukelis „AUTOMATINIS PAGRINDINIO MODULO ANALIZĖS PALEIDIMAS“, OllyDbg analizuos programą ir parodys apie ją papildomos informacijos.

Tai yra „CrueHead“ išanalizuoti įtrūkimų sąrašo pradžia, ir jei atidarysime jį neanalizuodami, pamatysime skirtumą.

Analizės lange yra daug informacijos, kuri, nepaisant to, kad ji mums dar nėra labai aiški, atrodo labai įdomi. Tuo pat metu malonu žinoti, kad galite bet kada ją pašalinti, jei analizė pasirodys nelabai tiksli arba joje įsivėlė klaida.

Dažnai OllyDbg kai kurias programos dalis rodo neteisingai, nes klaidingai interpretuoja vykdomąjį kodą kaip duomenis, o tada rodo maždaug taip:

Tokiu atveju galite rankiniu būdu pašalinti analizę, dešiniuoju pelės mygtuku spustelėdami sąrašą ir pasirinkę „ANALISIS -> REMOVE ANALYS FROM MODULE“.

Ir tada sąrašas bus rodomas teisingai.

Kitas variantas, kurį galite naudoti norėdami palengvinti ir kuris man asmeniškai nelabai patinka (bet skoniai skiriasi), yra peršokti ir skambinti – dešiniuoju pelės mygtuku spustelėkite įrašą ir pasirinkite „APEARENCE -> HIGHHLIGHTING -> ŠUOLIAI IR SKAMBINIAI“.

Jūs gausite šiuos dalykus:

Čia matome, kad skambučiai paryškinti žydra spalva, o perėjimai – geltonai.

Sąrašas dabar yra lengviau skaitomas, bet dar neįsivaizduojame, ką tai reiškia, bet gerai, kad įrankis būtų paruoštas naudoti ateityje.

2) Registrai

Antras svarbus langas yra registro langas.

Prisiminkite, kad registro langas yra pačioje dešinėje OllyDbg pusėje ir ten rodoma daug informacijos.

Yra daug daugiau informacijos, kurios mes nematome, tačiau galite nustatyti trijų būsenų rodymo režimą ("PERŽIŪRĖTI FPU REGISTRUS" - rodyti FPU registrus, "PERŽIŪRĖTI 3D DABAR REGISTRUS" - rodyti "3D DABAR" registrus ir "PERŽIŪRĖTI DERINIMO REGISTRUS" “ – rodyti derinimo registrus). Pagal numatytuosius nustatymus rodomi pirmieji.

3) Sukrauti arba kaupti

Dabar pereikime prie „krūvos arba krūvos“. Čia nėra per daug konfigūravimo parinkčių, išskyrus galimybę rodyti informaciją apie ESP ir EBP registrus.

Pagal numatytuosius nustatymus informacijos, susijusios su ESP, rodymo režimas (ir jis taip pat yra pats naudingiausias), tačiau jį galima pakeisti į informacijos, susijusios su EBP, rodymo režimą, kuriam reikia dešiniuoju pelės mygtuku spustelėti šiame lange ir pasirinkti „ GO TO EBP“ ir toliau naudojant elementą „GO TO ESP“ grįšime į ankstesnį režimą.

Išsamiau paaiškinsiu kamino funkcionalumą vėlesniuose skyriuose, tačiau kol kas apžvelgsime tik tai, ką galima pakeisti konfigūruojant.

4) Sąvartynas

Iškelties lange yra daug rodymo režimų, kuriuos galima pakeisti dešiniuoju pelės klavišu spustelėjus iškelties lange ir pasirinkus reikiamą. Numatytasis režimas yra 8 baitų Hex/ASCII.

Numatytasis režimas taip pat yra dažniausiai naudojamas, tačiau tuo pat metu turime galimybę jį pakeisti, kad būtų rodomas išardytas kodas (DISASSEMBLE), tekstas (TEKSTAS) ir kiti formatai (TRUMPAS, ILGAS, FLOAT).

Ir galiausiai, SPECIAL -> PE HEADER parinktis, kuri, kaip matysime artimiausiuose skyriuose, gali būti labai naudinga.

Dabar žinome pagrindines OllyDbg pagrindinio lango dalis, tačiau yra ir langų, kurie nėra tiesiogiai pasiekiami, tačiau juos galima iškviesti per meniu arba valdymo skydelio mygtukais.

Pažvelkime į kiekvieną iš jų.

Mygtukas L arba VIEW->LOG parodo, ką OllyDbg įrašo žurnalo lange. Jį galima sukonfigūruoti taip, kad būtų rodoma įvairaus tipo informacija, o pagal numatytuosius nustatymus žurnalo lange saugoma visa paleidimo informacija, taip pat informacija, susijusi su SĄLYGINIŲ ŽURNALŲ LŪKŽIAIS. Su pastaruoju susitiksime daug vėliau, bet kol kas pažvelkime į informaciją apie veikimo procesą (mūsų atveju tai yra „CrueHead“ įtrūkimas) ir jo įkeliamas bibliotekas.

Viena iš svarbiausių šio lango parinkčių yra prisijungimas prie failo, jei norime išsaugoti informaciją tekstiniame faile. Norėdami suaktyvinti šią parinktį, dešiniuoju pelės mygtuku spustelėkite ir pasirinkite "LOG TO FILE".

Mygtukas E arba VIEW->EXECUTABLES parodo mums programos naudojamų modulių sąrašą: exe, dll, ocx ir kt.

Čia taip pat dešinysis pelės mygtukas atveria daugybę parinkčių, kurių dabar nenagrinėsime, bet kurias jau matėme tyrinėdami pagrindinį OllyDbg langą.

Mygtukas M arba VIEW->MEMORY rodo mūsų programos užimtą atmintį. Čia matome programos sekcijas, proceso naudojamas bibliotekas, steką ir įvairius sistemos užimamus skyrius, o dažnai programos vykdymo metu užima naujas atminties dalis.

Dešiniuoju pelės mygtuku spustelėję galime atlikti PAIEŠKĄ atmintyje, norėdami rasti įvairių rūšių eilutes (tekstas, šešioliktainis, unikodas), taip pat yra galimybė sekcijose paryškinti lūžio taškus, taip pat galimybė pakeisti pastarųjų prieigos teises ( pasirinkite NUSTATYTI PRIEIGĄ).

Mygtukas T arba VIEW->THREADS parodo mums programos gijų (gijų) sąrašą.

Nors dabar mes nežinome, kas tai yra, ir sužinosime tik tolesniuose skyriuose, susipažinti su kiekvienu langu nebus nereikalinga. Vėliau išmoksime juos naudoti.

Mygtukas W arba VIEW->WINDOWS rodo programos langus, bet kadangi ji dar neveikia, langų sąrašas lieka tuščias.

Mygtukas H arba VIEW->HANDLES rodo rankenas, vėliau paaiškinsiu ką jos daro.

Mygtukas C arba VIEW->CPU grąžina mus į pagrindinį OllyDbg langą.

Mygtukas / arba VIEW->PATCHES rodo pritaikytų pataisų sąrašą, jei programa buvo pakeista. Kadangi dar nebuvo atlikta jokių pakeitimų, langas kol kas lieka tuščias.

Mygtukas K arba VIEW->CALL STACK rodo „skambučių krūvą“ – skambučių, su kuriais susidūrėme iki taško, kur programa sustojo, sąrašą.

Mygtukas B arba VIEW->BREAKPOINTS parodo įprastų programoje esančių lūžio taškų sąrašą. Nėra aparatinės įrangos ar atminties lūžio taškų, yra tik įprasti.

Mygtukas R arba VIEW->REFERENCES rodo nuorodų, kurias gavome ieškodami nuorodų Ollie, langą.

Mygtukas „…“ arba VIEW->RUN TRACE rodo komandos RUN TRACE rezultatą. Čia taip pat galime pasirinkti parinktį LOG TO FILE, kad išsaugotume sekimo rezultatus tekstiniame faile.

Mes padengėme skydelį svarbiausiais mygtukais, kad susipažintumėte su jų teikiamomis galimybėmis, kai pradėsime gilintis į juos kituose skyriuose.

Kaip sukonfigūruoti OllyDbg, kad jis taptų JIT (JUST IN TIME DEBUGGER)

Žinoma, mes nenaudosime JIT visą laiką, o tik ypatingais atvejais, nes jei bet kurioje mūsų kompiuteryje veikiančioje programoje įvyksta klaida, tada Ollie visai nereikia naudoti (pagal numatytuosius nustatymus dr.watson yra naudojamas kaip JIT).

Jei norite, kad OllyDbg būtų JIT derintuvas, turite eiti į OPTIONS-> DERINTI LAIKĄ

ir iš eilės paspauskite MAKE OLLYDBG JUST IN TIME DEBUGGER ir DONE mygtukus

Norėdami pašalinti šią funkciją, toje pačioje vietoje turite spustelėti RESTORE JUST IN TIME DEBUGGER ir DONE.

Papildinių prijungimas „OllyDbg“.

OllyDbg leidžia prijungti papildinius, kurie gali būti naudingi sprendžiant konkrečią problemą. Kol kas mes apsiribosime prijungdami COMMAND BAR papildinį, kad sužinotume, kaip tai padaryti.

Atsisiųskite šį papildinį iš čia (pirminiame straipsnyje nurodyta nuoroda neveikia, todėl atsisiunčiau papildinį iš interneto ir paskelbiau wasm.ru - apytiksliai).

Po to išpakuokite papildinį ir pažiūrėkite į aplanko, kuriame tai buvo padaryta, turinį:

Visų pirma, turite sukurti įskiepių aplanką. Sukursiu jį C:/ ir pavadinsiu PLUGINS.

Žinoma, įskiepių gali būti bet kur, bet man patinka viską talpinti C. Šiaip ar taip, dabar turime sukonfigūruoti OllyDbg, kad atpažintų šį aplanką kaip visų įskiepių vietą.

Norėdami tai padaryti, eikite į PARINKČIAI->IŠVAIZDA.

Ir atsidariusiame lange atidarykite skirtuką KATALOGAI.

Matome, kad kelias į papildinius yra katalogas, kuriame yra pats OllyDbg.exe, ir galėtume ten įdėti įskiepius, bet man patinka juos laikyti atskirai, tada spustelėkite PLAGIN PATH-> BROWSE, kad rastumėte aplanką, kurį sukūrėme. .

Pasirinkite aplanką PLUGINS ir išsaugokite pakeitimus.

Tai reiškia, kad turite iš naujo paleisti Ollie, kad jis atpažintų naują aplanką su papildiniais, tačiau pirmiausia turite į jį nukopijuoti paskutinį atsisiųstą papildinį.

Nukopijuokite visą archyvo turinį į PLUGINS aplanką.

Dabar visi „Command Bar“ papildinio failai yra aplanke PLUGINS, o likusieji taip pat turėtų būti dedami į jį (dažnai galite nukopijuoti ne visus archyve esančius failus, o tik dll).

Dabar uždarykite OllyDbg, jei jis vis dar buvo uždarytas, ir paleiskite jį dar kartą. Matome, kad KOMANDŲ JUOSTA ir jos parinktys atsirado PLUGINS meniu.

„OllyDbg“ apačioje matome įdiegtą KOMANDŲ JUOSTĄ.

Tai teksto laukas komandoms įvesti, kurios mums gali praversti daugeliu atvejų, vėliau pamatysime jų panaudojimą, tačiau kol kas svarbu išmokti prijungti įskiepius.

Norėdami pašalinti PLUGIN, tiesiog ištrinkite atitinkamą dll iš aplanko PLUGINS ir iš naujo paleiskite OllyDbg, o papildinys išnyks. Tačiau protinga visada laikyti įjungtą KOMANDŲ JUOSTĄ.

Dar kartą atidarykime „CrueHead“ įtrūkimą „OllyDbg“.

Naudingiausi OllyDbg raktai yra šie:

F7: Vykdo vieną kodo eilutę (jei esame CALL, eikite į iškviestą kodo skyrių)

F8: Vykdo vieną kodo eilutę (jei esame CALL, tiesiog įvykdo skambutį neįeidamas į vidų ir pereina į kitą eilutę po CALL).

Šie du rankinio sekimo tipai labai skiriasi ir kokiais atvejais kiekvieną iš jų naudoti, svarstysime vėliau.

F2: pažymėtoje eilutėje nustato įprastą pertraukos tašką. Norėdami pašalinti šį pertraukos tašką, dar kartą paspauskite F2.

Pavyzdžiui:

Diegimo tašką norime nustatyti 40101A pozicijoje, todėl šią eilutę pažymime pele.

Vienu pelės paspaudimu jis pažymėtas ir tampa pilkas kaip paveikslėlyje. Tada paspauskite F2.

Matome, kad atitinkama vieta pirmajame stulpelyje nusidažo raudonai, o tai rodo, kad čia yra lūžio taškas. Dar kartą paspausdami F2 galite jį pašalinti.

F9: paleidžia programą, kuri veiks tol, kol pasieks pertraukos tašką, padarys išimtį arba tiesiog nustos veikti dėl kokios nors priežasties. Kai programa veikia, OllyDbg apatiniame dešiniajame kampe rodomas žodis VEIKIA.

Paleidę „CrueHead's crackme“, pamatysime:

Norėdami laikinai sustabdyti programos vykdymą, paspauskite F12 arba DEBUG->PAUSE.

Matome, kad OllyDbg rodo žodį PAUSED. Galite tęsti programos vykdymą paspausdami F9 arba DEBUG->RUN.

Norėdami uždaryti derinamą programą, pasirinkite DEBUG->CLOSE.

Tai buvo greita „OllyDbg“ apžvalga, o kituose skyriuose toliau išsamiau išnagrinėsime daugybę jo parinkčių ir galimybių. Svarbiausia, kad atsisiųstumėte programą, ją sukonfigūruotumėte, dar kartą peržiūrėtumėte viską, kas buvo aptarta šioje pamokoje, taip pat prijungtumėte priedą, paleistumėte ir sustabdytumėte „CrueHead“ įtrūkimą, pabandykite nustatyti lūžio taškus, kad kitame skyriuje visi šie dalykai nebūtų sukelti problemų ir abejonių. Ricardo Narvaja, vert. Akvilė

OllyDbg – didelio populiarumo sulaukęs 32 bitų derintuvas, kurį naudoja asamblėjos kalbą studijuojantys pradedantieji ir įnirtingi įsilaužėliai dėl idėjos bei niekšai kurdami naujas kompiuterinių virusų atmainas. Tai patogus ir daugiafunkcis įrankis, skirtas analizuoti ir modifikuoti failus, sudarytus į mašininį kodą. Su OllyDbg galima nulaužti programą, ir atvirkščiai – pagerinti apsaugą nuo programinės įrangos įsilaužimo. Kai šaltinio kodo nėra, programą galima išardyti ir analizuoti. Debugeryje įdiegtas kodo analizatorius atpažįsta procedūras, konstantas, kilpas, lenteles, tekstą ir šakas.

Debugger išardytojas

OllyDbg atpažįsta ir iššifruoja daugiau nei 2000 C kalbos ir Windows API funkcijų. Derintuvas palaiko papildomų įskiepių prijungimą, atlieka euristinę krūvos analizę, veikia žingsnis po žingsnio derinimo režimu, palaiko šešioliktainį, ASCII, Unicode, 16/32 bitų sveikuosius skaičius ir 32/64/80 bitų slankiojo kablelio skaičius. Derinimo priemonė su paprasta ir intuityvia sąsaja, kodo paryškinimu, puikiomis galimybėmis ir atviruoju šaltiniu.

Paskirstymo sudėtis

Katalogas OllyDbg110 - platinimas atsisiųstas iš programos svetainės

Katalogas OllyDbgHelpRus – oficiali OllyDbg derintuvo pagalba, išversta į rusų kalbą. Paimta iš svetainės http://cracklab.ru/


2. Programos aprašymas (paimta iš programos žinyno)

OllyDbg- 32 bitų derinimo priemonė, kuri analizuoja surinkėjo lygiu, su intuityvia sąsaja. Ypač naudinga, jei šaltinio kodas nepasiekiamas arba kai kyla problemų su kompiliatoriumi.

Reikalavimai. Veikia su Windows 95, 98, ME, NT arba 2000, XP (ne 100% patikrinta), bet kuriame Pentium klasės kompiuteryje, tačiau patogiam derinimui reikės bent 300 MHz procesoriaus. OllyDbg reikalauja daug atminties. Jei ketinate naudoti papildomas programėles (įskiepius), rekomenduoju 128 MB ar daugiau RAM.

Palaikomi procesoriai: OllyDbg palaiko visus 80x86, Pentium, MMX, 3DNow! , įskaitant Athlon, SSE komandas ir susijusius duomenų formatus. Bet jis nepalaiko SSE2.

Sąranka. Daugiau nei 100 parinkčių valdo programos veikimą.

Duomenų formatai. Dump langai rodo duomenis visais įprastais formatais: HEX, ASCII, UNICODE, 16 bitų ir 32 bitų sveikasis skaičius / ne sveikasis skaičius / šešioliktainis, 32/64/80 bitų slankusis kablelis, adresavimas, išardymas (MASM, IDEAL arba HLA) , PE antraštė arba duomenų bloko srautas.

Nuoroda. Šiame faile yra pagrindinė informacija, reikalinga norint suprasti ir naudoti Ollydbg. Jei turite Windows API pagalbos (win32.hlp, neįtraukta dėl autorių teisių), galite ją pridėti ir gauti tiesioginės pagalbos dėl sistemos skambučių.

Paleiskite programą. Galite pasirinkti vykdomąjį failą komandinėje eilutėje, pasirinkti iš meniu, nuvilkti failą į Ollydbg, iš naujo paleisti paskutinę derinimo programą arba prisijungti prie jau veikiančios programos. Ollydbg palaiko nuolatinį derinimą. Diegti nereikia, Ollydbg galite paleisti iš diskelio!

Derinimo DLL. Naudodami Ollydbg galite derinti dinaminių nuorodų bibliotekas (DLL). Ollydbg automatiškai paleidžia nedidelį vykdomąjį failą, į kurį įkelia biblioteką ir leidžia iškviesti ją eksportuoti.

Failų derinimas su derinimo informacija. Ollydbg skaito derinimo informaciją MICROSOFT ir Borland formatais. Ši informacija apima šaltinio kodą ir funkcijų pavadinimus, etiketes, visuotinius ir statinius kintamuosius. Dinaminių (stack) kintamųjų ir struktūrų palaikymas yra labai ribotas.

Kodo paryškinimas. Išardytojas gali paryškinti įvairių tipų instrukcijas (šuolius, sąlyginius šuolius, krūvos stūmimą ir iššokimą, procedūrų iškvietimus, grąžinimus, privilegijuotus ir negaliojančius) ir skirtingus operandus (bendruosius, FPU/SSE arba segmento/sistemos registrus, atminties operandus krūvoje arba kita atmintis, konstantos). Taip pat galite sukurti pasirinktinius apšvietimo modelius.

Srautai. Ollydbg gali derinti kelių gijų programas. Galite pereiti iš vienos gijos į kitą, pristabdyti, tęsti, panaikinti gijas arba pakeisti jų prioritetą. Threads lange rodomos kiekvienos gijos klaidos (pvz., grįžtamasis skambutis į GetLastError).

Analizė. Analizatorius yra viena iš svarbiausių OllyDbg dalių. Jis atpažįsta procedūras, kilpas, jungiklius, lenteles, konstantas ir eilutes, įterptas į kodą, sudėtingas konstrukcijas, API funkcijų iškvietimus, funkcijų parametrų skaičių, importavimo skyrius ir pan. Dėl analizės dvejetainis kodas tampa lengviau skaitomas, lengviau derinamas ir sumažėja klaidingų interpretacijų ir gedimų tikimybė. Tai nėra specifinė kompiliatorius ir vienodai gerai veikia su bet kokia PE programa. Galite pagerinti analizės rezultatus nustatydami užuominas.

Objektų skaitytuvas. OllyDbg nuskaito objektų modulius (failus) arba bibliotekas (tiek OMF, tiek COFF formatais), ištraukia kodą, suskirsto jį į segmentus ir nustato derinimo programoje.

Importuotų bibliotekų skaitytuvas. Kai kurie DLL savo simbolius eksportuoja tik kaip eilinius, kurie nėra labai įskaitomi žmogaus akiai. Jei turite atitinkamą importavimo biblioteką, OllyDbg eilinius skaičius verčia atgal į simbolinius pavadinimus.

Visiškas UNICODE palaikymas. Beveik visos operacijos, galimos ASCII eilutėms, taip pat galimos UNICODE eilutėms ir atvirkščiai.

Vardai. OllyDbg rodo visus importuotus ir eksportuotus simbolius ir pavadinimus iš derinimo informacijos ir Microsoft bei Borland formatais. Objektų skaitytuvas leidžia atpažinti bibliotekos funkcijas. Galite pridėti savo vertybes ir komentarus. Jei kai kurių DLL funkcijos eksportuojamos kaip eilės, galite pridėti importavimo biblioteką ir atkurti pradinius pavadinimus. „OllyDbg“ taip pat žino daugelio konstantų, pvz., pranešimų laukelių, kodo klaidų ar bitų laukų, simbolinius pavadinimus ir iššifruoja juos į žinomus funkcijų iškvietimus.

Žinomos funkcijos. OllyDbg pagal pavadinimą atpažįsta daugiau nei 2300 dažniausiai naudojamų C ir API Windows funkcijų ir iškoduoja jų parametrus. Galite pridėti savo aprašymus arba priskirti konkretų dekodavimą. Galite nustatyti žinomos funkcijos rašymo pertraukos tašką ir įrašyti parametrus į failą.

Iššūkiai.„OllyDbg“ gali nutraukti programos vykdymą, kai pasiekia dėklą, net jei derinimo informacija nepasiekiama, o įprastos programos naudoja nestandartinius įvadus ir užbaigimus.

Stack. Stack lange OllyDbg naudoja euristiką, kad atpažintų grąžinimo adresus ir įrašo struktūrą. Tačiau atminkite, kad jie gali būti ankstesnių skambučių likučiai. Jei programa pristabdoma naudojant žinomą funkciją, dėklo langas dekoduoja tikruosius parametrus.

SEH grandinės. Krūva atsega ir rodo SE rankenų grandinę. Visą grandinę rasite atskirame lange.

Paieška. Daug galimybių! Ieškokite komandos (tikslios ar netikslios) arba komandų sekos, konstantų, dvejetainės ar tekstinės eilutės (nebūtinai ištisinės), visų komandų, nurodančių adresą, konstantą arba adreso intervalą, visų perėjimų į pasirinktą vietą, visos funkcijos, kurios iškviečia kokią nors procedūrą arba bet ką ta procedūra, visoms nurodytoms teksto eilutėms, visiems iškvietimams į įvairius modulius, pavadinimams, užmaskuotoms dvejetainėms sekoms visame atminties paskirstyme. Jei randamos kelios vietos, galite greitai pereiti tarp jų.

Langas.„OllyDbg“ pateikia visų derinamos programos sukurtų langų sąrašą ir nustato langų, klasės ar net pasirinkto pranešimo ar pranešimų grupės lūžio taškus.

Ištekliai. Jei Windows API funkcija nurodo eilutės išteklius, OllyDbg jį nuskaito ir parodo. Kitų tipų palaikymas apsiriboja pridėtų išteklių sąrašu, išrašymu ir dvejetainiu redagavimu.

Kontroliniai taškai (lūžio taškai). OllyDbg palaiko visus įprastus lūžių tipus: paprastus pertraukimus, sąlyginius pertraukimus, pertraukimus, įrašančius informaciją (pvz., funkcijų parametrus) į žurnalą, rašymo ir atminties prieigos lūžio taškus, aparatinės įrangos lūžio taškus (tik ME/NT/2000). Kaip paskutinę žingsnį po žingsnio derinimo priemonę, kiekvienai modulio instrukcijai galima nustatyti INT3 lūžio tašką. 500 MHz procesoriuje su Windows NT OllyDbg gali apdoroti iki 5000 pertraukimų per sekundę.

Stebėtojai ir inspektoriai. Stebėtojai yra išraiškos, kurios įvertinamos kiekvieną kartą, kai programa pristabdoma. Galite naudoti bet kokio sudėtingumo registrus, konstantas, adresų išraiškas, Būlio ir algebrines operacijas. Galite palyginti ASCII ir UNICODE eilutes. Inspektoriai yra stebėtojai, turintys iki 2 indeksų ir gali būti pavaizduoti kaip dvimatė lentelė, leidžianti iššifruoti masyvus ir struktūras.

Apeinant dinaminę atmintį.„Win95“ pagrįstose sistemose OllyDbg pateikia visų priskirtų krūvos blokų sąrašą.

Rankenos. NT pagrindu sukurtose sistemose OllyDbg pateikia visų sistemos rankenų, priklausančių derinamai programai, sąrašą.

Spektaklis. Galite paleisti programą žingsnis po žingsnio, įvesti paprogrames arba paleisti jas vienu žingsniu. Galite vykdyti programą iki kito grįžimo arba į nurodytą vietą arba suaktyvinti vykdymą. Kol programa veikia, jūs vis tiek galite ją visiškai valdyti ir galite peržiūrėti atmintį, nustatyti pertraukos taškus ir net keisti kodą. Bet kuriuo metu galite pristabdyti arba iš naujo paleisti derinamą programą.

Žingsnis po žingsnio derinimas.Žingsnis po žingsnio derinimas parodo, kurios komandos ar procedūros buvo vykdomos iki šiol, todėl galite patikrinti visas kodo šakas. Žingsnis po žingsnio derinimas nustato kiekvienos pasirinktos komandos pertraukos tašką ir pašalina jį, kai pasiekiama komanda.

Tiesioginis sekimas (Run trace). Trace žingsnis po žingsnio vykdo programą ir įrašo jos vykdymą dideliame apskritame buferyje. Šiame protokole yra visi registrai (išskyrus SSE), gijų vėliavėlės ir klaidos, pranešimai ir dekoduoti žinomų funkcijų parametrai. Galite išsaugoti originalias komandas, todėl bus lengviau derinti savaime besikeičiantį kodą. Galite apibrėžti derinimo sustabdymo sąlygą įvesdami adresų diapazoną, išraišką arba komandą. Derinimo informaciją galite įrašyti į failą ir palyginti du nepriklausomus programos vykdymus. Sekimas leidžia išsamiai išanalizuoti milijonų komandų vykdymo istoriją.

Profiliavimas. Profiliuotojas apskaičiuoja, kiek kartų tam tikra komanda pasirodo sekimo buferyje. Su profiliuotoju sužinosite, kuri kodo dalis vykdoma ilgiausiai.

Atliekant pataisymus. Integruotas surinkėjas automatiškai parenka trumpiausią įmanomą kodą. Dvejetainis redaktorius vienu metu rodo duomenis ASCII, UNICODE ir šešioliktaine forma. Galimas ir senas geras kopijavimas ir įklijavimas. Automatinis atsarginis kopijavimas leidžia anuliuoti pakeitimus. Galite nukopijuoti pakeitimus tiesiai į vykdomąjį failą, OllyDbg netgi ištaiso įdiegtas klaidas. „OllyDbg“ prisimena visus ankstesnių derinimo seansų programos pataisymus. Galite juos pritaikyti arba pašalinti keliais klavišų paspaudimais.

Savaime išsiskleidžiantys failai. Derindami SFX failą, paprastai norite praleisti archyvatorių ir sustoti, kai tiesiogiai įeisite į programą. „OllyDbg“ atlieka SFX derinimą, bandydamas surasti tikrąją įvestį. SFX derinimas paprastai nepavyksta apsaugotuose archyvuose. Kai įvestis randama (arba apibrėžiama), OllyDbg gali greičiau ir patikimiau paleisti išpakavimo programą.

Programos papildymai. Galite pridėti papildinį prie OllyDbg arba parašyti savo programos papildinį. Programos priedai pasiekia visas svarbias duomenų struktūras, prideda meniu ir nuorodas į esamus OllyDbg langus ir naudoja daugiau nei 100 papildomų API funkcijų. API papildiniai yra gerai dokumentuoti. Standartinis platinimas apima du programos priedus: komandų eilutę ir žymes.

UDD. OllyDbg išsaugo visą su programa arba moduliu susijusią informaciją atskirame faile ir atkuria, kai modulis vėl įkeliamas. Ši informacija apima etiketes, komentarus, lūžio taškus, stebėtojus, analizės duomenis, sąlygas ir pan.

Sąranka. Galite nustatyti pasirinktinius šriftus, spalvas ir apšvietimo schemas.

Ir daug daugiau! Šis sąrašas jokiu būdu nėra baigtas, yra daug funkcijų, kurios paverčia OllyDbg patogiu ir maloniu derintuvu.

3. Programos svetainė

Sveiki visi. Šiandien aš aprašysiu OllyDebugger. OllyDebugger (toliau Olly) yra puikus derintuvas (ring-3). Šio derintuvo populiarumas auga didžiuliais šuoliais :). Pradedantiesiems šis derintuvas yra tinkamas profesionalams, kurie puikiai moka juo naudotis, tai yra nepakeičiamas įrankis. Šiame straipsnyje bus aprašyta viskas, ką galiu padaryti Olly.

1. Kas yra Olly Debugger

Paimta iš nuorodos: „Olly“ yra 32 bitų surinkėjo lygio derinimo priemonė su intuityvia sąsaja. Ypač naudinga, jei šaltinio kodas nepasiekiamas arba kai kyla problemų su kompiliatoriumi.

Palaikomi procesoriai. Olly palaiko visus 80x86, Pentium, MMX, 3DNow!, įskaitant Athlon plėtinius, SSE komandas ir susijusius duomenų formatus.

Duomenų formatai. Dump langai rodo duomenis visais įprastais formatais: šešioliktainis, ASCII, unikodas, 16 ir 32 bitų pasirašyti / nepasirašyti / šešioliktainiai sveikieji skaičiai, išardikliai (MASM, IDEAL arba HLA).

Paleisti. Galite apibrėžti vykdomąjį failą komandinėje eilutėje, pasirinkti iš meniu, nuvilkti failą į Olly, iš naujo paleisti paskutinę derinimo programą arba pridėti prie jau veikiančio proceso. Diegti nereikia, Olly galite paleisti iš diskelio!

DLL derinimas. Naudodami Olly galite derinti atskiras dinaminių nuorodų bibliotekas (DLL). Olly automatiškai paleidžia nedidelį vykdomąjį failą, kuris įkelia biblioteką ir leidžia iškviesti jos eksportuotas funkcijas.

Analizė. Analizatorius yra viena iš svarbiausių Olly dalių. Jis atpažįsta procedūras, kilpas, lenteles, konstantas ir eilutes, įterptas į kodą, sudėtingas konstrukcijas, API funkcijų užklausas, funkcijų parametrų numerius, importavimo skyrius ir pan. Analizė daro dvigubą kodą daug lengviau skaitomą, palengvina derinimą ir sumažina gedimų tikimybę. Analizatorius nėra orientuotas į kompiliatorių ir vienodai gerai veikia su visomis „Windows“ programomis.

Objektų skaitytuvas. Olly nuskaito objektų failus arba bibliotekas (OMF IR COFF formatai), ištraukia iš jų kodą, suskirsto juos į segmentus ir nustato derinimo programoje.

Visiškas Unicode palaikymas. Beveik visos operacijos, galimos ASCII eilutėms, taip pat galimos ir Unikodo eilutėms, ir atvirkščiai.

2. Spartieji klavišai

„Karštaisiais klavišais“ noriu pradėti istoriją, nes... Be jų turėsite praleisti daug laiko naršydami meniu ir derintuvas iš karto praras patogumą. Pradėkime nuo valdymo skydelio:

Pirmasis mygtukas yra atidaryti failą (horizontalusis klavišas F3)
Antrasis mygtukas yra paleisti failą iš naujo (horizontalusis klavišas Ctrl+F2)
Trečiasis mygtukas yra uždaryti failą (horizontalusis klavišas Alt + F2)
Ketvirtasis mygtukas skirtas paleisti programą (horizontalus klavišas F9)
Penktasis mygtukas skirtas pristabdyti paleidimą (horizontalus klavišas F12)
Šeštasis mygtukas skirtas sekti įėjus į paprogrames (horizontalusis klavišas F7)
Septintasis mygtukas skirtas sekti neįvedant paprogramių (horizontalusis klavišas F8)
Aštuntasis mygtukas skirtas pradėti automatinį sekimą įvedant paprogrames (horizontalusis klavišas Ctrl+F11)
Devintas mygtukas skirtas pradėti automatinį sekimą neįvedant paprogramių (horizontalusis klavišas Ctrl+F12)
Dešimtasis mygtukas skirtas paleisti programą prieš išeinant iš paprogramės (horizontalusis klavišas Ctrl+F9)
Vienuoliktas mygtukas – eikite į adresą (horizontalusis klavišas Ctrl+G)

Visi kiti valdymo skydelio mygtukai bus aptarti vėliau.

Reikalingos komandos:
Ctrl+A – analizuoti kodą
Ctrl+C – kopijuoti duomenis
Ctrl+F7 – įjungti režimą, kai kodas bus vykdomas taip, lyg paspaustumėte ir neatleistumėte F7 mygtuko
Ctrl+F8 – įjungti režimą, kai kodas bus vykdomas taip, lyg paspaustumėte ir neatleistumėte F8 mygtuko
Shift+F8 – tęsti programos sekimą, net jei įvyksta išimtis
Shift+F9 – tęskite programos vykdymą, net jei įvyktų išimtis
Ctrl+T – automatinio sekimo nustatymai
Ctrl+F11 – paleiskite automatinį sekimą įvesdami paprogrames
Ctrl+F12 – paleiskite automatinį sekimą neįvesdami paprogramių
F2 – įdėkite lūžio tašką pasirinktoje eilutėje

3. Papildiniai

Tikriausiai pradėjote piktintis, kodėl aš kalbu apie viską, bet ne apie patį derintuvą. Atsakydamas pasakysiu: „Pažiūrėsiu, kaip derinsite programą, bent jau be „CommandBar“ papildinio. Taip, iš tiesų yra daug sunkiau derinti programą be papildinių. Dabar pateiksiu įdiegtų papildinių sąrašą ir paaiškinsiu, kas yra kas:

1. IsDebuggerPresent – ​​slepia derintuvą nuo aptikimo naudojant IsDebuggerPresent funkciją.
2. Slėpti derintuvą – slepia derintuvą nuo aptikimo naudojant funkciją IsDebuggerPresent.
3. Olly Script – leidžia rašyti scenarijus, padedančius derinti. Nenaudoju šio papildinio, nes... Nemanau, kad reikia automatizuoti derinimą.
4. Olly Dump – leidžia iškelti derinamą procesą ir iš karto atkurti jo importą. Super įskiepis. Patariu visiems.
5. Command Bar – leidžia daryti stebuklus. Derinimo priemonėje atsiranda eilutė, kurioje galite įvesti labai protingas komandas. IMHO be šio įskiepio derinimas neįmanomas :). Pažymą išverčiau iš plagijo ir pateiksiu papildomai Nr.1.

4. Pirmoji pažintis

Kaip sakiau, su derintuvu labai lengva dirbti. Čia yra standartinis pagrindinio lango vaizdas su programa, įkelta derinimui:

Sakiau, kad tai standartinis langas, melavau, pakeičiau spalvas :). Dabar viskas tvarkoje. Aprašymo tvarka: Pagrindinis langas, Registro langas, Stack skydelis, Meniu skydelis.

Pagrindinis langas: šiame lange atliekamas tikrasis derinimas. Visos instrukcijos pateikiamos išardytoje formoje. Rodyklės eilutę galite perkelti naudodami žymeklį. Naudodami rodyklės eilutę galite pasirinkti, kokius duomenis kopijuoti (čia viskas daug paprasčiau nei SoftIce. Pasirinkta. Ctrl+C, nuėjo į reikiamą vietą Ctrl+V), kurią komandą keisti, kur dėti lūžio tašką ir t.t. . Adresas, kurį reikia atlikti toliau, yra paryškintas šone. Tarp adresų stulpelio ir išardyto sąrašo stulpelio yra stulpelis su mašininio kodo instrukcijomis. Pačiame paskutiniame stulpelyje yra komentarų.

Registro langas: Registro lange rodomi visi 32 bitų registrai, vėliavėlių registrai ir įvairūs kiti registrai. Norint pakeisti registrą, reikia 2 kartus spustelėti jo reikšmę ir įvesti naują reikšmę. Galite pakeisti vėliavėlės raidę dukart spustelėdami vieną iš jų.

Krūvos skydelis: dėklo skydelyje galite keisti reikalingus baitus atmintyje, nustatyti pertraukos taškus ir ieškoti teisingų regų. kodai ir kt.

Meniu juosta: meniu juosta bus aprašyta didesniame skyriuje, nes... ši tema labai svarbi.

5. Susipažinimas su pagrindiniu meniu

Pradėkime nuo meniu Failas. Šiame meniu yra skirtukai: Atidaryti, Pridėti, Išeiti. Atidaryti – atidaryti failą derinimui, Attach – prisijungti prie jau veikiančio derinimo proceso, Išeiti – išeiti.

Žiūrėti
Žurnalas – peržiūrėti failų atsisiuntimo žurnalą ir kt. (spartusis klavišas: Alt + L)
Vykdomi moduliai – peržiūrėkite visus modulius, kuriuos naudoja derinama programa. (spartusis klavišas: Alt + E)
Atmintis – peržiūrėti atminties kortelę. Štai apytikslė jo išvaizda:

Pirmasis stulpelis yra adresas, kuriame įkeliamos įvairios failo dalys, DLL bibliotekos. Antrasis stulpelis yra sekcijos atminties dydis. Trečiasis stulpelis paprastai yra modulio pavadinimas. Ketvirtasis stulpelis yra skyrių pavadinimai. Penktasis stulpelis yra tai, kas yra skyriuje. Visi kiti stulpeliai nėra svarbūs, nes jie atspindi sekcijų atributus atmintyje. (spartusis klavišas: Alt + M)

Gijos – peržiūrėkite visas programos gijas, užfiksuokite jas, p`glnpnghr| pakeisti jų prioritetą, nužudyti juos.
Langai – peržiūrėkite iki x.. informacijos apie langus, klases ir kt. naudoja programa.
Rankenos – peržiūros rankenos.
CPU – atidarykite pagrindinį langą. (spartusis klavišas: Alt + C)
SEH grandinė – pažiūrėkite, nustatykite pertraukos tašką visuose paskelbtuose Sehuose.
Pataisymai – peržiūrėkite visų programos pakeitimų sąrašą, anuliuokite visus pakeitimus ir pan. (spartusis klavišas: Ctrl+P)
Skambučių krūva – peržiūrėkite visus skambučius, kurių kodas yra krūvoje. (spartusis klavišas: Alt+K)
Lūžio taškai – peržiūrėkite visus lūžio taškus, išjunkite, ištrinkite juos. (spartusis klavišas: Alt + B)
Vykdyti sekimą – peržiūrėkite pėdsakų žurnalą.
Failas – šešioliktainis failų rengyklė.

Derinimas
Vykdyti – paleiskite programą.
Pause – pristabdykite programos vykdymą.
Paleisti iš naujo – iš naujo paleiskite derinamą programą.
Uždaryti – derinamos programos uždarymas.
Įeikite – atitinka F7.
Perženkite – atitinka F8.
Animuoti į – atitinka nuolatinį F7 paspaudimą.
Animate over – atitinka nuolatinį F8 paspaudimą.
Vykdyti iki sugrįžimo – paleiskite programą prieš išeidami iš paprogramės.
Trace into – automatinis sekimas su įėjimu į paprogrames.
Trace over – automatinis sekimas neįvedant paprogramių.
Nustatyti sąlygą – priskirkite sąlygą automatiniam sekimui.
Uždaryti bėgimo pėdsaką – sustabdyti automatinį sekimą.
Aparatinės įrangos lūžio taškai – peržiūrėkite aparatūros lūžio taškus.

Visa kita šiame meniu nėra svarbu.

Galimybės
Išvaizda – derinimo priemonės sąsajos nustatymai. Prie šių nustatymų nesigilinsiu, nes... Jie nėra privalomi ir galite juos išsiaiškinti patys.
Derinimo parinktys (horizontalusis klavišas – Alt+O) – derinimo priemonės nustatymai. Tai yra įdomiausias dalykas, kurį skirsiu šiam meniu punktui.
Derinimas laiku – šiuose nustatymuose galite priskirti Olly kaip derinimo priemonę, kuri bus paleista, kai kuri nors programa sukels rimtą klaidą.
Pridėti prie Explorer – įtraukite programos derinimo elementą į Explorer kontekstinį meniu.

6. Pagrindiniai programos nustatymai

Paaiškinsiu tik svarbiausius variantus.

Saugumas
Įspėti, kai lūžio taškas yra už kodo skilties – Praneškite, jei norite įdėti lūžio tašką už kodo skilties ribų. Žinoma, ši parinktis neturėtų būti pasirinkta.
Įspėti nutraukiant aktyvų procesą – Paklauskite: „Ar tikrai norite nutraukti procesą? Ši parinktis turi būti pasirinkta.
Įspėti, jei ne administratorius – kad jus apgaudinėtų, jei nesate administratorius. Šis variantas skirtas sadomazochizmui :)

Derinimas
Nustatykite aukštą prioritetą sekant derinimo procesą – nustatykite b(qnjhi) programos prioritetą sekdami Ši parinktis turi būti pasirinkta „pagal skonį“ (pasirinkau).

Renginiai
Padarykite pirmą pauzę ties – Pirmą sustokite ties. Šiuo atveju siūlomos trys parinktys: Sistemos lūžio taškas, Įėjimo taškas į pagrindinį modulį, Pagrindinis langas. Vėlgi, jūs visi turite pasirinkti geriausią variantą. Aš pasirinkau įėjimo į pagrindinį modulį tašką.
Pertraukite naują modulį DLL – sustokite ties kiekviena nauja įkelta biblioteka.
Modulio iškrovimo pertrauka – Sustabdykite iškraunant DLL bibliotekas iš atminties.
Pertraukti naują giją – Sustabdykite kurdami naują giją.
Nutraukite sriegio galą – sustokite, kai baigiasi siūlas.

Išimtys
Ignoruoti prieigos prie atminties pažeidimus KERNEL32 – Ignoruoti Kernel32 atminties klaidas.
Int3 pertraukos – nesustokite ties int3 komandomis. Ši parinktis LABAI naudinga išpakuojant kai kurias apsaugas. Norėdami gauti daugiau informacijos, skaitykite mano išpakavimo straipsnį.

Trace
Vykdymo sekimo buferio dydis – sekimo buferio dydis. Geriau nustatyti maksimalią vertę.
Žurnalo komandos – veskite sekimo įrenginio veikimo žurnalą. Ši parinktis šiek tiek sulėtina sekimą, todėl ją reikia nustatyti, kai reikia.
Visada sekite sistemos DLL – visada sekite ankstesnes sistemos bibliotekas. Ši parinktis turi būti pasirinkta visiems.
Po vykdymo iki RET pereikite prie RET – ši parinktis leidžia sustoti paspaudus Ctrl+F9 ne RET, o po jo vykdymo. Man šis variantas labai patogus, todėl patariu jį pasirinkti.

SFX
Kai pagrindinis modulis yra savaime ištraukiamas – čia mūsų prašoma pasirinkti vieną iš trijų parinkčių: Sustoti išpakavimo kodo pradžioje, sekti iki OEP blokais, sekti iki OEP pagal baitą. Na, ką aš galiu pasakyti, parinktys freeloaders. Automatinė paieška OER! Tiesa, kartais Olly neteisingai nustato, ar programa supakuota, ar ne.

Stygos
Na, čia viskas aišku. Įvairių simbolių dekodavimas.

Adresai
Šios parinktys nėra svarbios, nes jie nustato, kaip bus rodomi adresai.

Komandos
Šios parinktys reikalingos tik žmonėms, kurie tikrai mėgsta labai gražius ASM sąrašus.

Išardymas
Išmontuotojo nustatymai. Galite spustelėti visas parinktis ir pamatyti, kaip atrodys ASM sąrašas. Visi kiti nustatymai, mano nuomone, nėra svarbūs.

7. Pirmas derinimas

Mes derinsime „Fant0m crackme 4“. Jį galite atsisiųsti iš čia: http://fant0m.cjb.net/. Iš šio kreko bandysime gauti teisingą reg. numerį jūsų vardui. Įkelkite crackme po derintuvu ir paspauskite F9, kad paleistumėte. Įveskite asmens, kuriam norime užregistruoti šį kreką, vardą. Įveskite bet kokį slaptažodį. Taigi, dabar turime nustatyti pertraukos tašką, kad galėtume skaityti vardą ir slaptažodį. Perjunkite į Olly ir komandoje qrpnje parašykite bpx GetDlgItemTextA . Spustelėkite Tikrinti. Iš karto atsidūrėme Olly šioje vietoje:

00401217 E8 62010000 SKAMBINTI 0040121C 68 00010000 PUSH 100 00401221 68 84314000 PUSH 00403184 00401226 68 E9030000 PUSH 3E9 ; |ControlID = 3E9 (1001.) 0040122B FF75 08 PUSH DWORD PTR SS: ; |hWnd 0040122E E8 4B010000 SKAMBINTI 00401233 FF75 08 PUSH DWORD PTR SS: 00401236 E8 BE000000 CALL 004012F9 0040123B 83F8 00 CMP EAX, 0 0040123E 74 SHORT 154040 40 PUSH 40 00401242 68 29304000 PUSH 00403029 ; |Pavadinimas = "Check Serial" 00401247 68 60304000 PUSH 00403060 ; |Text = "You got it! Congrats! :)" 0040124C 6A 00 PUSH 0 ; |hOwner = NULL 0040124E E8 49010000 CALL !} >

Iš karto aišku, kad procedūroje adresu 004012F9 yra atliekama registracijos patikra. Mes pasiekiame jo skambutį naudodami F8 ir įveskite jį naudodami F7. Ką matome:

004012F9 55 PUSH EBP 004012FA 8BEC MOV EBP, ESP 004012FC 56 PUSH ESI 004012FD 57 PUSH EDI 004012FE 8D3584304000 LEATR0DS:40D:40D 40 00 LEA EDI, DWORD PTR DS: 0040130A 33C0 XOR EAX, EAX 0040130C 33C9 XOR ECX, ECX 0040130E B31A MOV BL, 1A 00401310 803E00 CMP BYTE PTR DS:, 0 00401313 7415 JE SHORT 0040132A 00401315 8A06 MOV AL, BYTE PTR 0LC01,17DD 319 32C1 XOR AL, CL 0040131B F6F3 DIV BL 0040131D 66C1E808 SHR AX, 8 00401321 0441 ADD AL, 41 00401323 8807 MOV BYTE PTR DS:, AL 00401325 47 INC EDI 00401326 46 INC ESI 00401327 41 INC.401X 0 0040132A C6 0700 MOV BYTE PTR DS:, 0 0040132D 33C0 XOR EAX, EAX 0040132F 83F900 CMP ECX, 0 00401332 741A JE SHORT 0040134E 00401334 6884324000 PUSH 00403284; /String2 = "" 00401339 6884314000 PUSH 00403184 ; |Eilutė1 = "qwerty" 0040133E E8A1000000 SKAMBINTI 00401343 83F800 CMP EAX, 0 00401346 7404 JE SHORT 0040134C 00401348 33C0 XOR EAX, EAX 0040134A EB02 JMP SHORT 004013 40134E 5F POP EDI 0040134F 5E POP ESI 00401350 C9 LEAVE 00401351 C20400 RETN 4
Iš šio kodo aišku, kad adresu 0040133E jūsų kodas lyginamas su teisingu. Įveskite pertraukos tašką šiuo adresu ir paspauskite F9. Komentaras String2 = "" pasikeis į kažką panašaus į šį String2 = "ODMZAMHN". Taigi, vietai ODMZAMHN turėsite savo reg. jūsų vardo kodas. Paspauskite F9, įveskite teisingą kodą, paspauskite Patikrinti, pašalinkite visus lūžio taškus, paspauskite F9 ir džiaukitės.

Priedas Nr.1

Pagalba su komandų juosta. Komandų juostos komandų paaiškinimas. Visos komandos, kurias laikiau nereikalingomis, buvo pašalintos iš šio sąrašo.

Išraiškos
CALC [išraiška] – apskaičiuokite išraiškos reikšmę

Išmontuotojas
AT [išraiška] – eikite į adresą išmontuotoje
FOLLOW [pagal išraišką] – eikite į adresą išardytoje
ORIG – eiti į dabartinį adresą (EIP)
* - Eiti į dabartinį adresą (EIP)

Išmeskite ir sukrauti
D [išraiška] – eikite į sąvartyno adresą
DUMP [išraiška] – eikite į sąvartyno adresą
DA [išraiška] – išrašymas asamblėjos formatu
DB [išraiška] – išvesti šešioliktaine tvarka
DC [išraiška] – ASCII išmetimas
DD [išraiška] – iškelti kaip adresus (dėklo formatas)
DU [išraiška] – koduoti UNICODE
DW [išraiška] – išvesti šešioliktainio žodžio formatu
STK [išraiška] – eikite į kamino adresą

Transliacija
A [išraiška] [, komanda] – išardykite adresą

Žymos ir komentarai
L išraiška, etiketė – simbolinę etiketę susieja su adresu
C išraiška, komentaras – nustato adreso komentarą

Lūžio taškai
BP [išraiška] [,sąlyga] – nustatykite pertraukos tašką
BPX [funkcijos pavadinimas] – nustatykite pertraukos taškus visose modulio instrukcijose, kurios iškviečia [funkcijos pavadinimas]
BC [adresas] – ištrinkite valdymo tašką adresu
MR išraiška1 [,išraiška2] – nustatykite atminties pertraukos tašką, kad galėtumėte pasiekti tam tikrą sritį
MBT išraiška1 [, išraiška2] – nustatykite atminties pertraukos tašką, kad galėtumėte įrašyti į konkrečią sritį
MD – Ištrinti lūžio tašką iš atminties
HR [adresas] – nustatykite aparatinės įrangos pertraukos tašką į vieną baitą prieigai prie adreso
HW [adresas] – nustatykite aparatinės įrangos pertraukos tašką į vieną baitą vienam įrašymui adresu
HE [adresas] – nustatykite aparatūros pertraukos tašką, kad jis vykdytų komandą adresu
HD [lūžio taško numeris] – ištrinkite aparatinės įrangos lūžio taško numerį

Trace komandos
STOP – pristabdykite sekimą
PAUSE – pristabdykite pėdsaką
RUN – paleiskite programą
G [adresas] – vykdykite adresu
GE – Vykdykite adresu
S – atitinka F7
SI – atitinka F7
SO – atitinka F8
TR – Vykdykite programą, kol išeis paprogramė

OllyDbg langai
LOG – žurnalo peržiūros langas
MOD – peržiūrėti vykdomuosius modulius
MEM – atidarykite atminties kortelės langą
CPU – atidarykite pagrindinį programos langą
BRK – atidaryti lūžio taško peržiūros langą
OPT – nustatymai

Įvairios komandos
IŠEITI – išeik iš Olly
ATSAKYK – išeik Olly
OPEN [failo pavadinimas] – atidarykite failą derinimui
UŽDARYTI – uždarykite derinamą programą
RST – iš naujo paleiskite derinamą programą
PAGALBA – rodyti pagalbą (šis tekstas, bet neišverstas)
PAGALBA – Olly rodyti pagalbą Oll
HELP APIfunction – pagalba apie API funkcijas

Priedas Nr.2

Lūžio taškai. „Olly“ palaiko kelių tipų lūžio taškus:
- Įprastas pertraukos taškas, kai pirmasis komandos, kurią norite nutraukti, baitas pakeičiamas INT3 (Trap to Debugger). Pertraukos tašką galite įdėti pasirinkę komandą išmontuotoje ir paspausdami F2 arba iškylančiame meniu. Paspaudus F2 antrą kartą, kai jau nustatytas lūžio taškas, jis bus pašalintas. INT3 lūžio taškų skaičius neribojamas. Kai uždarote derinimo programą arba derinimo priemonę, Olly automatiškai išsaugo lūžio taškus. Niekada nebandykite nustatyti duomenų pertraukos ar komandos viduryje! Olly jus įspės, jei bandysite nustatyti pertraukos tašką už kodo skilties ribų. Šį įspėjimą galite išjungti apsaugos nustatymuose. Kai kuriais atvejais Debugger gali įterpti savo laikinus INT3 lūžio taškus.

Sąlyginis lūžio taškas (horizontalusis klavišas Shift+F2) – įprastas INT3 lūžio taškas su sąlyga. Kiekvieną kartą, kai derintuvas susiduria su tokiu lūžio tašku, jis įvertina jo išraišką ir, jei rezultatas yra ne nulis arba išraiška neteisinga, sustabdo programos derinimą.

Sąlyginis lūžio taškas su registravimu (horizontalusis klavišas Shift+F4) – sąlyginis lūžio taškas su registravimu, kad būtų registruojama žinomos funkcijos išraiškos ar parametrų reikšmė kiekvieną kartą, kai vykdomas lūžio taškas.

Atminties lūžio taškas. „Olly“ leidžia vienu metu nustatyti vieną atminties pertraukos tašką. Jūs pasirenkate tam tikrą atminties dalį išmontuotoje arba procesoriaus iškrovimo įrenginyje ir naudojate iššokantįjį meniu, kad nustatytumėte pertraukos tašką į o`lr|. Ankstesnis atminties pertraukos taškas, jei toks buvo, bus automatiškai ištrintas. Turite dvi parinktis: sustabdyti prieigą prie atminties (skaityti, rašyti arba vykdyti) ir tik rašyti. Norėdami nustatyti pertraukos tašką, Olly modifikuoja atminties blokų, kuriuose yra duomenys, atributus.

Aparatinės įrangos lūžio taškas (pasiekiamas tik naudojant derinimo priemonę Windows ME, NT, 2000 arba XP). Su 80x86 suderinami procesoriai leidžia nustatyti 4 aparatinės įrangos lūžio taškus. Skirtingai nuo atminties pertraukos taško, aparatinės įrangos lūžio taškai nesulėtina vykdymo greičio, o apima tik iki 4 baitų.

Vienkartinis prieigos prie atminties sustojimas (galima tik naudojant Windows NT, 2000 ir XP). Atminties lange galite nustatyti jį visam atminties blokui per iškylantįjį meniu arba paspausdami F2. Šis lūžio taškas yra ypač naudingas, jei norite perimti užklausas tam tikram moduliui.

Automatinis sekimas – turite nurodyti sąlygą (horizontalusis klavišas Ctrl+T), kuriai esant derintuvas sustabdys programą. Atkreipkite dėmesį, kad ši parinktis gali žymiai (iki 20%) sulėtinti programos vykdymo greitį.

„OllyDbg“ taip pat gali sustabdyti programos vykdymą tam tikriems įvykiams, pvz., kai įkeliamas arba iškraunamas DLL arba sukuriama arba nutraukiama gija.

Priedas Nr.3

Mano derinimo nustatymai.
Jei norite naudoti mano nustatymus, pakeiskite visus duomenis šiuo tekstu faile ollydbg.ini, kuris yra tame pačiame aplanke, kuriame įdiegta derinimo priemonė.

Patikrinkite DLL versijas=0 Rodyti įrankių juostą=1 Būsena įrankių juostoje=0 Naudokite aparatūros lūžio taškus žingsniui = 1 Atkurti windows=104191 Slinkti MDI=1 Horizontalus slinktis=0 Viršutinis langas=0 Numatytųjų šrifto indeksas=1 Numatytųjų spalvų indeksas=0 Rodyklė numatytosios sintaksės highlighting=0 Žurnalo buferio dydis index=0 Vykdyti sekimo buferio dydį index=7 Grupuoti gretimas komandas profilyje=1 Paryškintas sekimo registras=-1 IDEALUS išardymo režimas=0 Išardyti mažosiomis raidėmis=0 Atskirkite argumentus su TAB=0 Papildoma vieta tarp argumentų=1 Rodyti numatytuosius segmentus=1 NEAR šuolio modifikatoriai=0 Naudoti trumpą eilučių komandų formą=0 dydžiui jautri mnemonika=1 SSE dydžio dekodavimo režimas=0 FPU krūvos viršus=1 Visada rodyti atminties dydis=1 Iššifruoti bet kurio IP registrus =0 Rodyti simbolinius adresus=1 Rodyti vietinių modulių pavadinimus=0 Pilki duomenys, naudojami kaip užpildymas=1 Rodyti šuolio kryptį=0 Rodyti šuolio kelią=0 Rodyti šuolio kelią=0 Rodyti kelią, jei šuolis nevykdomas=0 Pabraukti pataisymai=1 Centras stebimas command=0 Rodyti dėklo rėmelius=1 Rodyti vietinius pavadinimus stekelyje=1 Išplėstinis kamino trace=0 Sinchronizuoti šaltinį su CPU=1 Įtraukti SFX ekstraktorių į kodą=1 SFX sekimo režimas=0 Naudoti tikrą SFX įrašą iš ankstesnio paleidimo=1 Ignoruoti SFX išimtis =1 Pirma pauzė = 1 Sustabdyti naujame DLL = 0 Sustabdyti DLL iškrovus = 0 Sustabdyti prie naujos gijos = 0 Sustoti ties gijos pabaiga = 0 Sustabdyti derinimo eilutę = 0 Dekoduoti SSE registrus = 0 Įjungti paskutinę klaidą = 1 Ignoruoti prieigos pažeidimus KERNEL32=1 Ignoruoti INT3=1 Ignoruoti TRAP=0 Ignoruoti prieigos pažeidimus=0 Žingsnis į nežinomas komandas=1 Ignoruoti padalijimą iš 0=0 Ignoruoti nelegalias instrukcijas=0 Ignoruoti visas FPU išimtis=0 Įspėti, kai dažnai pertraukos=0 Įspėti, kai pertrauka neįeina code=0 Autoreturn=1 Išsaugoti pradinę komandą trace=1 Rodyti atsektą ESP=1 Animuoti per sistemos DLL=1 Sekti per eilutę komandos=1 Sinchronizuoti procesorių ir paleisti trace=0 Ignoruoti pasirinktines išimtis=1 Išmanusis atnaujinimas=1 Nustatyti aukštą prioritetą= 1 Pridėti argumentų=1 Naudokite ExitProcess=1 Leisti įpurškimą gauti WinProc=0 Rūšiuoti WM_XXX pagal pavadinimą=0 Paskutinio WinProc lūžio taško tipas=0 Piešimas be sniego=1 Išskleisti simbolinius pavadinimus=0 Laikyti eilinį pavadinimą=1 Galima spausdinti tik ASCII dump=0 Leisti diakritinius simbolius=1 Eilutės dekodavimas=0 Įspėti, jei ne administratorius=0 Įspėti baigiant procesą=1 Lygiuoti dialogs=1 Naudoti iškvietimo lango šriftą=0 Nurodytas dialogo šriftas=0 Atkurti lango pozicijas=1 Atkurti stulpelių plotį= 0 Paryškinti surūšiuotą stulpelį=0 Suspausti analizės duomenis=1 Atsarginė UDD failų kopija=1 Užpildyti likusią komandą NOPs=1 Nuorodų paieškos režimas=0 Visuotinė paieška=0 Sulygiuota paieška=0 Leisti klaidos maržą=0 Palikti šešioliktainio dydžio redagavimo pasirinkimą=0 Modifikuoti FPU registro žymą = 1 Hex inspektoriaus ribos = 1 MMX rodymo režimas = 0 Paskutinės pasirinktos parinktys kortelė = 15 Paskutinį kartą pasirinkta išvaizda kortelė = 6 Ignoruoti didžiąsias ir mažąsias raides teksto paieškoje = 1 Raidinis raktas Disassembler = 1 Kodo laisvumas = 1 Iššifruoti paskalį strings=1 Atspėti argumentų skaičių=1 Priimti tolimus skambučius ir grąžinimus=0 Priimti tiesiogines segmento modifikacijas=0 Dekoduoti VxD skambučius=0 Priimti privilegijuotas komandas=0 Priimti I/O komandas=0 Priimti NOP=1 Priimti poslinkius už diapazono=0 Priimti nereikalingus prefiksus=0 Priimti LOCK prefixes=0 Priimti nesulygiuotas krūvos operacijas=1 Priimti nestandartines komandų formas=1 Rodyti ARG ir LOCAL procedūrose=0 Išsaugoti analizę faile=1 Analizuoti pagrindinį modulį automatiškai=1 Analizuoti kodo struktūrą=1 Dekoduoti ifs as switches=0 Išsaugoti pėdsaką faile=0 Sekti registrų turinį=1 Funkcijos išsaugoti registrus=0 Dekoduoti gudrybes=0 Automatiškai pasirinkti registro tipą=1 Rodyti dekoduotus argumentus=1 Rodyti dekoduotus argumentus stack=1 Rodyti argumentus iškvietime stack= 1 Rodyti sukeltus skambučius = 1 Etiketės rodymo režimas = 0 Etiketė apima modulio pavadinimą = 0 Paryškinkite simbolines etiketes = 0 Pažymėkite RETURNs in stack = 1 Ignoruoti kelią vartotojo duomenų faile = 1 Ignoruoti laiko žymą vartotojo duomenų faile = 1 Ignoruoti CRC vartotojo duomenų faile =1 Numatytasis vardų rūšiavimo režimas=1 Žurnalo failo stulpelių sudarymas iš lentelės=0 Pridėti duomenis prie esamo žurnalo failo=0 Surinkite surinktus duomenis į žurnalo failą=0 Praleisti tarpus šaltinio komentaruose=1 Slėpti neegzistuojančius šaltinio failus=1 Tabulavimo stotelės= 8 Failo diagramos režimas=2 Rodyti vidinius rankenos pavadinimus=0 Slėpti nesusijusias rankenas=0 Naudoti RET vietoj RETN=0 Rodyti sekamas vėliavėles=1 Eilučių, einančių po EIP=0 Išsaugoti ne modulio vartotojo duomenis=0 CPU=194,324,812,360 ,3 procesoriaus antriniai langai=327,798,321,798,537,771,479,909 OllyTest=0,0,1024,746,1 Nuorodos=256,420,256,210,1 Lūžio taškai=75,248,210,1,1,6,6,1,4,1,1,1,2,1,2 ,210,256,210,1 Vykdomieji moduliai = 263,41,636,175,1 Atminties žemėlapis = 357 , 41,519,274,1 Žymės=110,145,624,175,1 Profilis=132,174,624,182,1 „Windows“=132,177,614,179,1 Gijos=155,204,492,124,1 Žurnalas,6,2,1,8,2,2 1 0,256,210,1 Handles=196,325,647,175,1 Šaltinio failai=205,268,473,168,1 Skambučių krūva =0,420,256,210 ,1 Skambučių medis=132,132,791,175,1 SEH grandinė=0,0,256,210,1 Stebėjimo išraiškos=256,0,256,210,1 CPU schema=0 CPU Disassembler=7,0,0,0,0 CPU,1 ,0 ,4353.0 CPU Stack=7,0,0,0 CPU informacija=7,0,0,0 CPU registrai=7,0,0,0 Nuorodos=7,0,1,0,0 Lūžio taškai=1,0 ,1,0,0 Vykdymo trasa=1,0,1,0,0 Patches=1

Užbaigimas

Taip baigiasi jūsų pažintis su nuostabiu derintuvu OllyDebugger. Žinoma, straipsnyje neįmanoma aprašyti visų šio derintuvo galimybių, bet aš pabandžiau ir tikiuosi, kad tai pavyko. Kai kurios galimybės nepatenka į šio straipsnio taikymo sritį, tačiau esu tikras, kad šias galimybes atrasite patys. Aš mokiau Olly visiškai be jokių straipsnių, ir jūs galėsite toliau susipažinti su derinimo programa be niekieno pagalbos. Jei turite klausimų, pasiūlymų, keiksmažodžių ir pan. siųsti juos visus [apsaugotas el. paštas].

P.S. Būtinai perskaitykite mano straipsnį apie išpakavimą naudojant Olly.

Sveiki

Sveiki visi cracklab, o ypač MozgC ir Bad_guy, ALEX, Kerghan, Mario555, Hex ir visi, kurie skaitė šį straipsnį.

Šio „Įvadas į krekingą nuo nulio naudojant OllyDbg“ tikslas yra suteikti tiems, kurie tik pradeda įvaldyti krekingo meną, ir tuo pačiu tai padaryti taip, kad šios žinios leistų vėliau skaityti. ir suprasti sudėtingesnes mokymo programas, tokias kaip , kurias galite rasti „Naujame „CracksLatinos“ kurse“, kuri, žinoma, yra atvira naujiems papildymams ir papildymams.

Kurso idėja kilo dėl to, kad daugelis „New Course from CracksLations“ pamokų buvo per sunkūs pradedantiesiems, o tie, kurie nepasiekė reikiamo lygio, buvo nusivylę ir daugeliu atvejų atsisakė tęsti. Todėl šio „Įvado...“ tikslas yra ne kartoti puikias pamokas iš „Naujo kurso...“, kurių skaičius jau viršijo 500, o padėti pamatus, kad baigusieji šį kursą galės skaityti sudėtingesnes pamokas. Tai, kaip ir visa kita mūsų amato, reikalauja didelių pastangų, o pagrindinis tikslas – sumažinti šį kiekį, suteikiant pagrindines žinias ir leidžiant toliau suprasti sudėtingesnę medžiagą.

Kodėl OLLYDBG?

Čia nekalbėsime apie amžiną „Soft-Ice“ ir „OllyDbg“ konfrontaciją, manau, kad net „Soft-Ice“ fanatikai pripažįsta, kad su OllyDbg yra lengviau pradėti, nes apie jį yra daug informacijos ir lengviau mokytis. Į laužymo pasaulį reikia patekti pro duris, vadinamas „OllyDbg“, ir tik tada kam reikia, gali pereiti prie bet kurio kito reikalingo derintuvo, nes keičiasi tik jų naudojimo būdai, o esmė išlieka ta pati.

Pradėti iš naujo

Pirmiausia turite apsiginkluoti įrankiu, kurį daugiausia naudosime, kurį naudodami spustelėkite ir atsisiųskite.

Kadangi pradedame nuo nulio, pirmiausia turime išpakuoti atsisiųstą archyvą į aplanką standžiajame diske, kurį būtų galima lengvai pasiekti. Gera idėja būtų sukurti aplanką C:/ diske. Nors jis veiks bet kurioje kitoje vietoje, manysiu, kad pasirinktas C:/ diskas.

Kai failas bus išpakuotas, eikite į sukurtą aplanką ir žiūrėkite:

Jame yra vykdomasis failas OLLYDBG.exe, kurį turime paleisti ir dėl kurio patogumo darbalaukyje padariau nuorodą.

Gerai, viskas paruošta paleisti. Spustelėkite OllyDbg:

Matome pranešimą, kad bibliotekoje esantis DLL yra senesnis nei tos pačios sistemos DLL, ir jei pasirinksime „Taip“, senasis DLL bus ištrintas iš aplanko ir bus naudojamas sisteminis. Nors nematau didelio skirtumo tarp šių dviejų, vis tiek man labiau patinka tas, kuris pateikiamas kartu su platinimu, todėl visada paspaudžiu „Ne“.

Tai yra grynas OllyDbg, o pirmoji programa, kurią atidarysime tik norėdami susipažinti su OllyDbg, bus garsusis CrueHead CrackMe, kuris pridedamas prie šios pamokos.

Norėdami atidaryti failą OllyDbg, eikite į Failas -> Atidaryti arba spustelėkite piktogramą:

Atsidarys langas, kuriame rasite norimą failą, šiuo atveju tai yra CrueHead crackme.

Atsidarys minėtas crackme, ir šiuo metu visai neaišku, ką reiškia mums atsiveriantis vaizdas – kol kas tik apžvelgsime įvairias OllyDbg dalis ir funkcijas bei kai kuriuos nustatymus, kad kai vėlesnėse pamokose sakoma, tarkime, „eiti į DUMP“, jūs bent jau žinojote, kur yra ši parinktis.

Čia pažvelgsime į keturias pagrindinio OllyDbg lango dalis:

1) Išardytas kodas

Taip pat vadinamas sąrašu. Čia Ollie parodo mums išardytą programos, kurią ketiname derinti, kodą; Pagal numatytuosius nustatymus Ollie yra sukonfigūruotas analizuoti programą, kai ji atidaroma. Tai galima pakeisti skiltyje Parinktys -> DERINIMO PARINKTYS.

Tai yra, jei pažymėtas žymimasis laukelis „AUTOMATINIS PAGRINDINIO MODULO ANALIZĖS PALEIDIMAS“, OllyDbg analizuos programą ir parodys apie ją papildomos informacijos.

Tai yra „CrueHead“ išanalizuoti įtrūkimų sąrašo pradžia, ir jei atidarysime jį neanalizuodami, pamatysime skirtumą.

Analizės lange yra daug informacijos, kuri, nepaisant to, kad ji mums dar nėra labai aiški, atrodo labai įdomi. Tuo pat metu malonu žinoti, kad galite bet kada ją pašalinti, jei analizė pasirodys nelabai tiksli arba joje įsivėlė klaida.

Dažnai OllyDbg kai kurias programos dalis rodo neteisingai, nes klaidingai interpretuoja vykdomąjį kodą kaip duomenis, o tada rodo maždaug taip:

Tokiu atveju galite rankiniu būdu pašalinti analizę, dešiniuoju pelės mygtuku spustelėdami sąrašą ir pasirinkę „ANALISIS -> REMOVE ANALYS FROM MODULE“.

Ir tada sąrašas bus rodomas teisingai.

Kitas variantas, kurį galite naudoti norėdami palengvinti ir kuris man asmeniškai nelabai patinka (bet skoniai skiriasi), yra peršokti ir skambinti – dešiniuoju pelės mygtuku spustelėkite įrašą ir pasirinkite „APEARENCE -> HIGHHLIGHTING -> ŠUOLIAI IR SKAMBINIAI“.

Jūs gausite šiuos dalykus:

Čia matome, kad skambučiai paryškinti žydra spalva, o perėjimai – geltonai.

Sąrašas dabar yra lengviau skaitomas, bet dar neįsivaizduojame, ką tai reiškia, bet gerai, kad įrankis būtų paruoštas naudoti ateityje.

2) Registrai

Antras svarbus langas yra registro langas.

Prisiminkite, kad registro langas yra pačioje dešinėje OllyDbg pusėje ir ten rodoma daug informacijos.

Yra daug daugiau informacijos, kurios mes nematome, tačiau galite nustatyti trijų būsenų rodymo režimą ("PERŽIŪRĖTI FPU REGISTRUS" - rodyti FPU registrus, "PERŽIŪRĖTI 3D DABAR REGISTRUS" - rodyti "3D DABAR" registrus ir "PERŽIŪRĖTI DERINIMO REGISTRUS" “ – rodyti derinimo registrus). Pagal numatytuosius nustatymus rodomi pirmieji.

3) Sukrauti arba kaupti

Dabar pereikime prie „krūvos arba krūvos“. Čia nėra per daug konfigūravimo parinkčių, išskyrus galimybę rodyti informaciją apie ESP ir EBP registrus.

Pagal numatytuosius nustatymus informacijos, susijusios su ESP, rodymo režimas (ir jis taip pat yra pats naudingiausias), tačiau jį galima pakeisti į informacijos, susijusios su EBP, rodymo režimą, kuriam reikia dešiniuoju pelės mygtuku spustelėti šiame lange ir pasirinkti „ GO TO EBP“ ir toliau naudojant elementą „GO TO ESP“ grįšime į ankstesnį režimą.

Išsamiau paaiškinsiu kamino funkcionalumą vėlesniuose skyriuose, tačiau kol kas apžvelgsime tik tai, ką galima pakeisti konfigūruojant.

4) Sąvartynas

Iškelties lange yra daug rodymo režimų, kuriuos galima pakeisti dešiniuoju pelės klavišu spustelėjus iškelties lange ir pasirinkus reikiamą. Numatytasis režimas yra 8 baitų Hex/ASCII.

Numatytasis režimas taip pat yra dažniausiai naudojamas, tačiau tuo pat metu turime galimybę jį pakeisti, kad būtų rodomas išardytas kodas (DISASSEMBLE), tekstas (TEKSTAS) ir kiti formatai (TRUMPAS, ILGAS, FLOAT).

Ir galiausiai, SPECIAL -> PE HEADER parinktis, kuri, kaip matysime artimiausiuose skyriuose, gali būti labai naudinga.

Dabar žinome pagrindines OllyDbg pagrindinio lango dalis, tačiau yra ir langų, kurie nėra tiesiogiai pasiekiami, tačiau juos galima iškviesti per meniu arba valdymo skydelio mygtukais.

Pažvelkime į kiekvieną iš jų.

Mygtukas L arba VIEW->LOG parodo, ką OllyDbg įrašo žurnalo lange. Jį galima sukonfigūruoti taip, kad būtų rodoma įvairaus tipo informacija, o pagal numatytuosius nustatymus žurnalo lange saugoma visa paleidimo informacija, taip pat informacija, susijusi su SĄLYGINIŲ ŽURNALŲ LŪKŽIAIS. Su pastaruoju susitiksime daug vėliau, bet kol kas pažvelkime į informaciją apie veikimo procesą (mūsų atveju tai yra „CrueHead“ įtrūkimas) ir jo įkeliamas bibliotekas.

Viena iš svarbiausių šio lango parinkčių yra prisijungimas prie failo, jei norime išsaugoti informaciją tekstiniame faile. Norėdami suaktyvinti šią parinktį, dešiniuoju pelės mygtuku spustelėkite ir pasirinkite "LOG TO FILE".

Mygtukas E arba VIEW->EXECUTABLES parodo mums programos naudojamų modulių sąrašą: exe, dll, ocx ir kt.

Čia taip pat dešinysis pelės mygtukas atveria daugybę parinkčių, kurių dabar nenagrinėsime, bet kurias jau matėme tyrinėdami pagrindinį OllyDbg langą.

Mygtukas M arba VIEW->MEMORY rodo mūsų programos užimtą atmintį. Čia matome programos sekcijas, proceso naudojamas bibliotekas, steką ir įvairius sistemos užimamus skyrius, o dažnai programos vykdymo metu užima naujas atminties dalis.

Dešiniuoju pelės mygtuku spustelėję galime atlikti PAIEŠKĄ atmintyje, norėdami rasti įvairių rūšių eilutes (tekstas, šešioliktainis, unikodas), taip pat yra galimybė sekcijose paryškinti lūžio taškus, taip pat galimybė pakeisti pastarųjų prieigos teises ( pasirinkite NUSTATYTI PRIEIGĄ).

Mygtukas T arba VIEW->THREADS parodo mums programos gijų (gijų) sąrašą.

Nors dabar mes nežinome, kas tai yra, ir sužinosime tik tolesniuose skyriuose, susipažinti su kiekvienu langu nebus nereikalinga. Vėliau išmoksime juos naudoti.

Mygtukas W arba VIEW->WINDOWS rodo programos langus, bet kadangi ji dar neveikia, langų sąrašas lieka tuščias.

Mygtukas H arba VIEW->HANDLES rodo rankenas, vėliau paaiškinsiu ką jos daro.

Mygtukas C arba VIEW->CPU grąžina mus į pagrindinį OllyDbg langą.

Mygtukas / arba VIEW->PATCHES rodo pritaikytų pataisų sąrašą, jei programa buvo pakeista. Kadangi dar nebuvo atlikta jokių pakeitimų, langas kol kas lieka tuščias.

Mygtukas K arba VIEW->CALL STACK rodo „skambučių krūvą“ – skambučių, su kuriais susidūrėme iki taško, kur programa sustojo, sąrašą.

Mygtukas B arba VIEW->BREAKPOINTS parodo įprastų programoje esančių lūžio taškų sąrašą. Nėra aparatinės įrangos ar atminties lūžio taškų, yra tik įprasti.

Mygtukas R arba PERŽIŪRA-> NUORODOS rodo nuorodų langą, kurį gavome ieškodami nuorodų Ollie.

Mygtukas „…“ arba VIEW->RUN TRACE rodo komandos RUN TRACE rezultatą. Čia taip pat galime pasirinkti parinktį LOG TO FILE, kad išsaugotume sekimo rezultatus tekstiniame faile.

Mes padengėme skydelį svarbiausiais mygtukais, kad susipažintumėte su jų teikiamomis galimybėmis, kai pradėsime gilintis į juos kituose skyriuose.

Kaip sukonfigūruoti OllyDbg, kad jis taptų JIT (JUST IN TIME DEBUGGER)

Žinoma, mes nenaudosime JIT visą laiką, o tik ypatingais atvejais, nes jei bet kurioje mūsų kompiuteryje veikiančioje programoje įvyksta klaida, tada Ollie visai nereikia naudoti (pagal numatytuosius nustatymus dr.watson yra naudojamas kaip JIT).

Jei norite, kad OllyDbg būtų JIT derintuvas, turite eiti į OPTIONS-> DERINTI LAIKĄ

Ir iš eilės paspauskite MAKE OLLYDBG JUST IN TIME DEBUGGER ir DONE mygtukus

Norėdami pašalinti šią funkciją, toje pačioje vietoje turite spustelėti RESTORE JUST IN TIME DEBUGGER ir DONE.

Papildinių prijungimas „OllyDbg“.

OllyDbg leidžia prijungti papildinius, kurie gali būti naudingi sprendžiant konkrečią problemą. Kol kas mes apsiribosime prijungdami COMMAND BAR papildinį, kad sužinotume, kaip tai padaryti.

Po to išpakuokite papildinį ir pažiūrėkite į aplanko, kuriame tai buvo padaryta, turinį:

Visų pirma, turite sukurti įskiepių aplanką. Sukursiu jį C:/ ir pavadinsiu PLUGINS.

Žinoma, įskiepių gali būti bet kur, bet man patinka viską talpinti C. Šiaip ar taip, dabar turime sukonfigūruoti OllyDbg, kad atpažintų šį aplanką kaip visų įskiepių vietą.

Norėdami tai padaryti, eikite į PARINKČIAI->IŠVAIZDA.

Ir atsidariusiame lange atidarykite skirtuką KATALOGAI.

Matome, kad kelias į papildinius yra katalogas, kuriame yra pats OllyDbg.exe, ir galėtume ten įdėti įskiepius, bet man patinka juos laikyti atskirai, tada spustelėkite PLAGIN PATH-> BROWSE, kad rastumėte aplanką, kurį sukūrėme. .

Pasirinkite aplanką PLUGINS ir išsaugokite pakeitimus.

Tai reiškia, kad turite iš naujo paleisti Ollie, kad jis atpažintų naują aplanką su papildiniais, tačiau pirmiausia turite į jį nukopijuoti paskutinį atsisiųstą papildinį.

Nukopijuokite visą archyvo turinį į PLUGINS aplanką.

Dabar visi „Command Bar“ papildinio failai yra aplanke PLUGINS, o likusieji taip pat turėtų būti dedami į jį (dažnai galite nukopijuoti ne visus archyve esančius failus, o tik dll).

Dabar uždarykite OllyDbg, jei jis vis dar buvo uždarytas, ir paleiskite jį dar kartą. Matome, kad KOMANDŲ JUOSTA ir jos parinktys atsirado PLUGINS meniu.

„OllyDbg“ apačioje matome įdiegtą KOMANDŲ JUOSTĄ.

Tai teksto laukas komandoms įvesti, kurios mums gali praversti daugeliu atvejų, vėliau pamatysime jų panaudojimą, tačiau kol kas svarbu išmokti prijungti įskiepius.

Norėdami pašalinti PLUGIN, tiesiog ištrinkite atitinkamą dll iš aplanko PLUGINS ir iš naujo paleiskite OllyDbg, o papildinys išnyks. Tačiau protinga visada laikyti įjungtą KOMANDŲ JUOSTĄ.

Dar kartą atidarykime „CrueHead“ įtrūkimą „OllyDbg“.

Naudingiausi OllyDbg raktai yra šie:

F7: Vykdo vieną kodo eilutę (jei esame CALL, eikite į iškviestą kodo skyrių)

F8: Vykdo vieną kodo eilutę (jei esame CALL, tiesiog įvykdo skambutį neįeidamas į vidų ir pereina į kitą eilutę po CALL).

Šie du rankinio sekimo tipai labai skiriasi ir kokiais atvejais kiekvieną iš jų naudoti, svarstysime vėliau.

F2: pažymėtoje eilutėje nustato įprastą pertraukos tašką. Norėdami pašalinti šį pertraukos tašką, dar kartą paspauskite F2.

Pavyzdžiui:

Diegimo tašką norime nustatyti 40101A pozicijoje, todėl šią eilutę pažymime pele.

Vienu pelės paspaudimu jis pažymėtas ir tampa pilkas kaip paveikslėlyje. Tada paspauskite F2.

Matome, kad atitinkama vieta pirmajame stulpelyje nusidažo raudonai, o tai rodo, kad čia yra lūžio taškas. Dar kartą paspausdami F2 galite jį pašalinti.

F9: paleidžia programą, kuri veiks tol, kol pasieks pertraukos tašką, padarys išimtį arba tiesiog nustos veikti dėl kokios nors priežasties. Kai programa veikia, OllyDbg apatiniame dešiniajame kampe rodomas žodis VEIKIA.

Paleidę „CrueHead's crackme“, pamatysime:

Norėdami laikinai sustabdyti programos vykdymą, paspauskite F12 arba DEBUG->PAUSE.

Matome, kad OllyDbg rodo žodį PAUSED. Galite tęsti programos vykdymą paspausdami F9 arba DEBUG->RUN.

Norėdami uždaryti derinamą programą, pasirinkite DEBUG->CLOSE.

Tai buvo greita „OllyDbg“ apžvalga, o kituose skyriuose toliau išsamiau išnagrinėsime daugybę jo parinkčių ir galimybių. Svarbiausia, kad atsisiųstumėte programą, ją sukonfigūruotumėte, dar kartą peržiūrėtumėte viską, kas buvo aptarta šioje pamokoje, taip pat prijungtumėte priedą, paleistumėte ir sustabdytumėte „CrueHead“ įtrūkimą, pabandykite nustatyti lūžio taškus, kad kitame skyriuje visi šie dalykai nebūtų sukelti problemų ir abejonių.