Olly atkļūdotājs no A līdz Z. "Cracking nodarbība, izmantojot OllyDbg" Kāpēc jūs nevarat rusificēt automātiski l ollydbg

Sveiki visiem. Šodien es aprakstīšu OllyDebugger. OllyDebugger (turpmāk tekstā Olly) ir lielisks atkļūdotājs (ring-3). Šī atkļūdotāja popularitāte pieaug ar lēcieniem un robežām :). Iesācējiem šis atkļūdotājs ir piemērots profesionāļiem, kuri ļoti labi zina, kā to izmantot, tas ir neaizstājams rīks. Šajā rakstā tiks aprakstīts viss, ko es varu darīt Olly.

1. Kas ir Olly Debugger

Ņemts no atsauces: Olly ir 32 bitu montētāja līmeņa atkļūdotājs ar intuitīvu saskarni. Īpaši noderīgi, ja avota kods nav pieejams vai ja rodas problēmas ar kompilatoru.

Atbalstītie procesori. Olly atbalsta visus 80x86, Pentium, MMX, 3DNow!, tostarp Athlon paplašinājumus, SSE komandas un saistītos datu formātus.

Datu formāti. Izgāztuves logi parāda datus visos izplatītajos formātos: heksadecimālais, ASCII, Unicode, 16 un 32 bitu parakstīts/neparakstīts/heksadecimāls veseli skaitļi, demontētāji (MASM, IDEAL vai HLA).

Palaist. Varat definēt izpildāmo failu komandrindā, atlasīt no izvēlnes, vilkt failu Olly, restartēt pēdējo programmu, kurā tika veikta atkļūdošana, vai pievienot jau esošam procesam. Nav nepieciešama instalēšana, jūs varat palaist Olly no disketes!

DLL atkļūdošana. Izmantojot Olly, varat atkļūdot atsevišķas dinamisko saišu bibliotēkas (DLL). Olly automātiski palaiž nelielu izpildāmo failu, kas ielādē bibliotēku un ļauj izsaukt tās eksportētās funkcijas.

Analīze. Analizators ir viena no nozīmīgākajām Olly daļām. Tā atpazīst procedūras, cilpas, tabulas, konstantes un kodā iegultas virknes, sarežģītas konstrukcijas, API funkciju pieprasījumus, funkciju parametru numurus, importēšanas sadaļas utt. Analīze padara dubulto kodu daudz lasāmāku, atvieglo atkļūdošanu un samazina avāriju iespējamību. Analizators nav orientēts uz kompilatoru un darbojas vienlīdz labi ar visām Windows programmām.

Objektu skeneris. Olly skenē objektu failus vai bibliotēkas (OMF UN COFF formātus), izvelk no tiem kodu, sadala tos segmentos un atrod tos programmā, kurā tiek veikta atkļūdošana.

Pilns Unikoda atbalsts. Gandrīz visas ASCII virknēm pieejamās darbības ir pieejamas arī Unikoda virknēm un otrādi.

2. Karstie taustiņi

Tieši ar “karstajiem taustiņiem” gribu sākt stāstu, jo... Bez tiem jums būs jāpavada daudz laika, rāpojot pa izvēlni, un atkļūdotājs nekavējoties zaudēs ērtības. Sāksim ar vadības paneli:

Pirmā poga ir atvērt failu (horizontālais taustiņš F3)
Otrā poga ir faila restartēšana (horizontālais taustiņš Ctrl+F2)
Trešā poga ir aizvērt failu (horizontālais taustiņš Alt+F2)
Ceturtā poga ir programmas palaišana (horizontālais taustiņš F9)
Piektā poga ir apturēt palaišanu (horizontālais taustiņš F12)
Sestā poga ir paredzēta, lai izsekotu, ievadot apakšprogrammas (horizontālais taustiņš F7)
Septītā poga ir paredzēta, lai izsekotu, neievadot apakšprogrammas (horizontālais taustiņš F8)
Astotā poga ir automātiskās izsekošanas sākšana, ievadot apakšprogrammas (horizontālais taustiņš Ctrl+F11)
Devītā poga ir automātiskās izsekošanas sākšana, neievadot apakšprogrammas (horizontālais taustiņš Ctrl+F12)
Desmitā poga ir programmas izpilde pirms iziešanas no apakšprogrammas (horizontālais taustiņš Ctrl+F9)
Vienpadsmitā poga — dodieties uz adresi (horizontālais taustiņš Ctrl+G)

Visas pārējās pogas vadības panelī tiks apspriestas vēlāk.

Nepieciešamās komandas:
Ctrl+A – analizē kodu
Ctrl+C – kopēt datus
Ctrl+F7 - iespējojiet režīmu, kurā kods tiks izpildīts tā, it kā jūs nospiestu un neatlaistu F7 pogu
Ctrl+F8 - iespējojiet režīmu, kurā kods tiks izpildīts tā, it kā jūs nospiestu un neatlaistu F8 pogu
Shift+F8 – turpināt programmas izsekošanu pat tad, ja notiek izņēmums
Shift+F9 – turpiniet palaist programmu, pat ja notiek izņēmums
Ctrl+T – automātiskās izsekošanas iestatījumi
Ctrl+F11 - Sāciet automātisko izsekošanu, ievadot apakšprogrammas
Ctrl+F12 – sāciet automātisko izsekošanu, neievadot apakšprogrammas
F2 — atlasītajā rindā novietojiet pārtraukuma punktu

3. Spraudņi

Jūs droši vien sākāt būt sašutis par to, kāpēc es runāju par visu, bet ne par pašu atkļūdotāju. Atbildot uz to, es teikšu: "Es redzēšu, kā jūs atkļūdosit programmu, vismaz bez CommandBar spraudņa." Jā, patiešām ir daudz grūtāk atkļūdot programmu bez spraudņiem. Tagad es sniegšu sarakstu ar maniem instalētajiem spraudņiem un pa ceļam paskaidrošu, kas ir kas:

1. IsDebuggerPresent — paslēpj atkļūdotāju no atklāšanas, izmantojot funkciju IsDebuggerPresent.
2. Slēpt atkļūdotāju — paslēpj atkļūdotāju no noteikšanas, izmantojot funkciju IsDebuggerPresent.
3. Olly Script — ļauj rakstīt skriptus, lai palīdzētu veikt atkļūdošanu. Es neizmantoju šo spraudni, jo... Es nedomāju, ka ir nepieciešams automatizēt atkļūdošanu.
4. Olly Dump – ļauj izmest atkļūdošanas procesu un uzreiz atjauno tā importēšanu. Super spraudnis. Iesaku visiem.
5. Command Bar – ļauj radīt brīnumus. Atkļūdotājā parādās rinda, kurā var ievadīt ļoti gudras komandas. IMHO bez šī spraudņa atkļūdošana nav iespējama :). Iztulkoju apliecību no plāģijas un sniegšu papildus Nr.1.

4. Pirmā iepazīšanās

Kā jau teicu, ar atkļūdotāju ir ļoti viegli strādāt. Šeit ir standarta skats uz galveno logu ar programmu, kas ir ielādēta atkļūdošanai:

Teicu, ka standarta logs, meloju, mainīju krāsas :). Tagad viss ir kārtībā. Apraksta secībā: Galvenais logs, Reģistra logs, Stack panelis, Izvēlņu panelis.

Galvenais logs: šajā logā notiek faktiskā atkļūdošana. Visas instrukcijas tiek sniegtas izjauktā veidā. Varat pārvietot indeksa līniju, izmantojot kursoru. Izmantojot indeksa rindiņu, var izvēlēties, kurus datus kopēt (šeit viss ir daudz vienkāršāk nekā SoftIce. Atlasīts. Ctrl+C, aizgāja uz pareizo vietu Ctrl+V), kuru komandu mainīt, kur likt pārtraukuma punktu utt. . Adrese, kas jāizpilda pēc tam, ir izcelta sānos. Starp adrešu kolonnu un izjauktā saraksta kolonnu ir kolonna ar mašīnkoda instrukcijām. Pēdējā kolonnā ir komentāri.

Reģistra logs: Reģistra logā tiek parādīti visi 32 bitu reģistri, karogu reģistri un dažādi citi reģistri. Lai mainītu reģistru, 2 reizes jānoklikšķina uz tā vērtības un jāievada jauna vērtība. Varat mainīt karoga reģistru, veicot dubultklikšķi uz viena no tiem.

Stack panelis: steka panelī varat mainīt atmiņā nepieciešamos baitus, iestatīt pārtraukuma punktus un meklēt pareizos reg. kodi utt.

Izvēlņu josla: izvēļņu josla tiks apskatīta plašākā nodaļā, jo... šī tēma ir ļoti svarīga.

5. Galvenās izvēlnes iepazīšana

Sāksim ar izvēlni Fails. Šajā izvēlnē ir cilnes: Atvērt, Pievienot, Iziet. Atvērt - atveriet failu atkļūdošanai, Attach - pievienojieties jau esošam atkļūdošanas procesam, Exit - iziet.

Skatīt
Žurnāls — skatiet žurnālu par failu lejupielādi utt. (karstais taustiņš: Alt+L)
Izpildāmie moduļi — skatiet visus moduļus, ko izmanto lietojumprogramma, kurā tiek veikta atkļūdošana. (karstais taustiņš: Alt+E)
Atmiņa — skatiet atmiņas karti. Šeit ir tā aptuvenais izskats:

Pirmā kolonna ir adrese, kurā tiek ielādētas dažādas faila sadaļas, DLL bibliotēkas. Otrā kolonna ir sadaļas atmiņas lielums. Trešā kolonna parasti ir moduļa nosaukums. Ceturtā kolonna ir sadaļu nosaukums. Piektā kolonna ir sadaļā ietvertais. Visas pārējās kolonnas nav svarīgas, jo tie atspoguļo sadaļu atribūtus atmiņā. (karstais taustiņš: Alt+M)

Pavedieni — skatiet visus programmas pavedienus, iesaldējiet tos, p`glnpnghr| mainīt viņu prioritāti, nogalināt viņus.
Logi – skatiet līdz x.. informāciju par logiem, klasēm utt. ko izmanto programma.
Rokturi — skata rokturi.
CPU — atveriet galveno logu. (karstais taustiņš: Alt+C)
SEH ķēde – Skatieties, ielieciet pārtraukuma punktu visiem paziņotajiem Seh's.
Patches — skatiet visu programmā veikto izmaiņu sarakstu, atsauciet visas izmaiņas utt. (karstais taustiņš: Ctrl+P)
Zvanu kopa — skatiet visus zvanu steksā esošo kodu. (karstais taustiņš: Alt+K)
Pārtraukuma punkti — skatiet visus pārtraukuma punktus, atspējojiet, dzēsiet tos. (karstais taustiņš: Alt+B)
Palaist izsekošanu — skatiet izsekošanas žurnālu.
Fails — heksadecimālais failu redaktors.

Atkļūdošana
Palaist – palaidiet lietojumprogrammu.
Pauze — aptur lietojumprogrammas izpildi.
Restartēt — restartējiet programmu, kurā tiek veikta atkļūdošana.
Aizvērt — tiek aizvērta programma, kas tiek atkļūdota.
Iesaistieties — līdzvērtīgs F7.
Pārkāpiet — līdzvērtīgs F8.
Animēt uz — līdzvērtīgs pastāvīgai F7 nospiešanai.
Animēt pāri — līdzvērtīgs pastāvīgai F8 nospiešanai.
Izpildīt līdz atgriešanai — izpildiet programmu pirms iziešanas no apakšprogrammas.
Izsekot — automātiska izsekošana ar ievadi apakšprogrammās.
Trace over — automātiska izsekošana, neievadot apakšprogrammas.
Iestatīt nosacījumu — piešķiriet automātiskās izsekošanas nosacījumu.
Aizvērt palaišanas trasēšanu — apturēt automātisko izsekošanu.
Aparatūras pārtraukuma punkti — skatiet aparatūras pārtraukuma punktus.

Viss pārējais šajā izvēlnē nav svarīgs.

Iespējas
Izskats — atkļūdotāja saskarnes iestatījumi. Pie šiem iestatījumiem nekavēšos, jo... Tie nav obligāti, un tos varat izdomāt pats.
Atkļūdošanas opcijas (horizontālais taustiņš — Alt+O) — atkļūdotāja iestatījumi. Šī ir visinteresantākā lieta, es šim izvēlnes elementam veltīšu nākamo nodaļu.
Atkļūdošana tieši laikā — šajos iestatījumos varat piešķirt Olly kā atkļūdotāju, kas tiks palaists, kad kāda lietojumprogramma izraisīs nopietnu kļūdu.
Pievienot pārlūkprogrammai — Explorer konteksta izvēlnei pievienojiet vienumu programmas atkļūdošanai.

6. Galvenie programmas iestatījumi

Paskaidrošu tikai svarīgākos variantus.

Drošība
Brīdināt, ja pārtraukuma punkts atrodas ārpus koda sadaļas — ziņojiet, ja vēlaties novietot pārtraukuma punktu ārpus koda sadaļas. Protams, šo opciju nevajadzētu izvēlēties.
Brīdināt, pārtraucot aktīvo procesu – jautājiet: "Vai tiešām vēlaties pārtraukt procesu?" Šī opcija ir jāatlasa.
Brīdināt, ja ne administrators — lai jūs apmānītu, ja neesat administrators. Šis variants ir paredzēts sadomazohismam :)

Atkļūdošana
Iestatīt augstu prioritāti, izsekojot atkļūdoto procesu — iestatiet b(qnjhi) prioritāti lietojumprogrammai izsekošanas laikā.

Pasākumi
Veikt pirmo pauzi plkst. – Veikt pirmo pieturu plkst. Šajā gadījumā tiek piedāvātas trīs iespējas: Sistēmas pārtraukuma punkts, Ieejas punkts galvenajā modulī, Galvenais logs. Atkal, jums visiem ir jāizvēlas labākais risinājums. Es izvēlējos ieejas punktu galvenajam modulim.
Pārtraukt jaunu moduli DLL — apstājieties pie katras jaunas ielādes bibliotēkas.
Pārtraukt moduļa izkraušanu — apstājieties, izlādējot DLL bibliotēkas no atmiņas.
Pārtraukt jaunu pavedienu — pārtrauciet, veidojot jaunu pavedienu.
Pārraut vītnes galā – Apturiet, kad vītne beidzas.

Izņēmumi
Ignorēt atmiņas piekļuves pārkāpumus KERNEL32 — Ignorēt atmiņas kļūdas programmā Kernel32.
Int3 pārtraukumi — neapstājieties pie int3 komandām. Šī opcija ir ĻOTI noderīga, izsaiņojot dažus aizsargus. Lai iegūtu sīkāku informāciju, izlasiet manu izpakošanas rakstu.

Trace
Izsekošanas bufera izmērs — izsekošanas bufera lielums. Labāk ir iestatīt maksimālo vērtību.
Žurnāla komandas – saglabājiet izsekotāja darbību žurnālu. Šī opcija nedaudz palēnina izsekošanu, tāpēc tā ir jāiestata, kad tas ir nepieciešams.
Vienmēr izsekojiet sistēmas DLL — vienmēr izsekojiet pagātnes sistēmas bibliotēkām. Šī opcija ir jāatlasa ikvienam.
Pēc izpildes līdz RET pārejiet pāri RET — šī opcija ļauj apstāties, nospiežot taustiņu kombināciju Ctrl+F9 nevis uz RET, bet pēc tās izpildes. Man šī iespēja šķiet ļoti ērta, tāpēc iesaku to izvēlēties.

SFX
Ja galvenais modulis ir pašizņemams — šeit mums tiek lūgts izvēlēties vienu no trim opcijām: Apstāties atpakotāja koda sākumā, izsekot līdz OEP blokos, izsekot līdz OEP pa baitiem. Nu ko lai saka, varianti freeloaders. Automātiskā meklēšana OER! Tiesa, dažreiz Olly nepareizi nosaka, vai programma ir iepakota vai nav.

Stīgas
Nu šeit viss ir skaidrs. Dažādu rakstzīmju atšifrēšana.

Adreses
Šīs iespējas nav svarīgas, jo tie nosaka, kā adreses tiks parādītas.

Komandas
Šīs iespējas ir nepieciešamas tikai cilvēkiem, kuriem patiešām patīk ļoti skaisti ASM saraksti.

Izjaukt
Demontāžas ierīces iestatījumi. Varat noklikšķināt uz visām opcijām un redzēt, kā izskatīsies ASM saraksts. Visi pārējie iestatījumi, manuprāt, nav svarīgi.

7. Pirmā atkļūdošana

Mēs atkļūdosim Fant0m crackme 4. Varat to lejupielādēt no šejienes: http://fant0m.cjb.net/. No šī kreka mēs mēģināsim iegūt pareizo reg. numurs jūsu vārdam. Ielādējiet crackme zem atkļūdotāja un nospiediet F9, lai palaistu. Ievadiet tās personas vārdu, kurai mēs vēlamies reģistrēt šo kreku. Ievadiet jebkuru paroli. Tātad, tagad mums ir jāiestata pārtraukuma punkts, lai nolasītu vārdu un paroli. Pārslēdzieties uz Olly un komandā qrpnje ierakstiet bpx GetDlgItemTextA . Noklikšķiniet uz Pārbaudīt. Mēs uzreiz atradāmies Olly šajā vietā:

00401217 E8 62010000 ZVANIET 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 ZVANIET 00401233 FF75 08 PUSH DWORD PTR SS: 00401236 E8 BE000000 CALL 004012F9 0040123B 83F8 00 CMP EAX, 0 0040123E 74 SHORT 1540 40 PUSH 40 00401242 68 29304000 PUSH 00403029 ; |Title = "Check Serial" 00401247 68 60304000 PUSH 00403060 ; |Text = "You got it! Congrats! :)" 0040124C 6A 00 PUSH 0 ; |hOwner = NULL 0040124E E8 49010000 CALL !} >

Uzreiz ir skaidrs, ka procedūrā pēc adreses 004012F9 ir čeka reģistrācijai. Mēs sasniedzam tā zvanu, izmantojot F8, un ievadām to, izmantojot F7. Ko mēs redzam:

004012F9 55 PUSH EBP 004012FA 8BEC MOV EBP, ESP 004012FC 56 PUSH ESI 004012FD 57 PUSH EDI 004012FE 8D3584304000 LEATR0DS:43D 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,10DD 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.BE301X 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 ; |String1 = "qwerty" 0040133E E8A1000000 CALL 00401343 83F800 CMP EAX, 0 00401346 7404 JE SHORT 0040134C 00401348 33C0 XOR EAX, EAX 0040134A EB02 JMP SHORT EAX 40134E 5F POP EDI 0040134F 5E POP ESI 00401350 C9 LEAVE 00401351 C20400 RETN 4
No šī koda ir skaidrs, ka adresē 0040133E jūsu kods tiek salīdzināts ar pareizo. Novietojiet pārtraukuma punktu šajā adresē un nospiediet taustiņu F9. Komentārs String2 = "" tiks mainīts uz kaut ko līdzīgu šim String2 = "ODMZAMHN". Tātad vietai ODMZAMHN jums būs jūsu reg. kodu jūsu vārdam. Nospiediet F9, ievadiet pareizo kodu, nospiediet Pārbaudīt, noņemiet visus pārtraukuma punktus, nospiediet F9 un priecājieties.

Pielikums Nr.1

Palīdzība ar komandjoslu. Komandjoslas komandu skaidrojums. Visas komandas, kuras uzskatīju par nevajadzīgām, tika izņemtas no šī saraksta.

Izteicieni
CALC [izteiksme] — aprēķina izteiksmes vērtību

Demontētājs
AT [izteiksme] — dodieties uz adresi disassembler
FOLLOW [pēc izteiksmes] — dodieties uz adresi demontētājā
ORIG — pāriet uz pašreizējo adresi (EIP)
* Doties uz pašreizējo adresi (EIP)

Izgāzt un sakraut
D [izteiksme] — dodieties uz adresi izgāztuvē
DUMP [izteiksme] — dodieties uz adresi izgāztuvē
DA [izteiksme] — izgāzt montētāja formātā
DB [izteiksme] — izgāzt heksadecimālā
DC [izteiksme] — izmest ASCII kodējumā
DD [izteiksme] — izmest kā adreses (steka formāts)
DU [izteiksme] — izmest UNICODE kodējumā
DW [izteiksme] — izgāzt heksadecimālā vārda formātā
STK [izteiksme] — dodieties uz adresi kaudzē

Raidījums
A [izteiksme] [, komanda] — izjaukt adresi

Atzīmes un komentāri
L izteiksme, etiķete — saista simbolisku etiķeti ar adresi
C izteiksme, komentārs — iestata adreses komentāru

Pārtraukuma punkti
BP [izteiksme] [,nosacījums] — iestatiet pārtraukuma punktu
BPX [funkcijas nosaukums] — iestatiet pārtraukuma punktus visiem moduļa norādījumiem, kas izsauc [funkcijas nosaukums]
BC [adrese] — dzēst kontrolpunktu adresē
MR izteiksme1 [,izteiksme2] — iestatiet pārtraukuma punktu atmiņā, lai piekļūtu noteiktam apgabalam
MBT izteiksme1 [, izteiksme2] — iestatiet pārtraukuma punktu atmiņā, lai rakstītu noteiktā apgabalā
MD — dzēst pārtraukuma punktu no atmiņas
HR [adrese] — iestatiet aparatūras pārtraukuma punktu uz vienu baitu katrai piekļuvei adresei
HW [adrese] — iestatiet aparatūras pārtraukuma punktu uz vienu baitu katram ierakstam adresē
HE [adrese] — iestatiet aparatūras pārtraukuma punktu, lai izpildītu komandu adresē
HD [pārtraukuma punkta numurs] — dzēst aparatūras pārtraukuma punkta numuru

Izsekošanas komandas
STOP — apturēt izsekošanu
PAUSE — pauzējiet izsekošanu
RUN - palaidiet programmu
G [adrese] — izpildīt uz adresi
GE — izpildīt, lai adrese
S — līdzvērtīgs F7
SI — līdzvērtīgs F7
SO — līdzvērtīgs F8
TR - izpildiet programmu, līdz iziet no apakšprogrammas

OllyDbg logi
LOG — žurnāla skata logs
MOD — skatiet izpildāmos moduļus
MEM — atveriet atmiņas kartes logu
CPU — atveriet programmas galveno logu
BRK — atvērt pārtraukuma punkta skatīšanas logu
OPT — iestatījumi

Dažādas komandas
IZIET — izejiet no Olly
ATSTĀJIET — pamet Olliju
OPEN [faila nosaukums] — atveriet failu atkļūdošanai
AIZVĒRT — aizveriet programmu, kurā tiek veikta atkļūdošana
RST — restartējiet programmu, kurā tiek veikta atkļūdošana
PALĪDZĪBA — parādīt palīdzību (šis teksts, bet nav tulkots)
PALĪDZĪBA — Olly parādīt Oll palīdzību
HELP API funkcija — palīdzība par API funkcijām

Pielikums Nr.2

Pārtraukuma punkti. Olly atbalsta vairāku veidu pārtraukumpunktus:
- Parastais pārtraukuma punkts, kur pirmais komandas baits, kurā vēlaties pārtraukt, tiek aizstāts ar INT3 (Trap to Debugger). Varat ievietot pārtraukuma punktu, atlasot komandu demontētājā un nospiežot F2 vai izmantojot uznirstošo izvēlni. Nospiežot taustiņu F2 otrreiz, kad pārtraukuma punkts jau ir iestatīts, tas tiks noņemts. INT3 pārtraukuma punktu skaits ir neierobežots. Kad aizverat atkļūdošanas programmu vai atkļūdotāju, Olly automātiski saglabā pārtraukuma punktus. Nekad nemēģiniet iestatīt pārtraukuma punktu datiem vai komandas vidū! Olly jūs brīdinās, ja mēģināsit iestatīt pārtraukuma punktu ārpus koda sadaļas. Šo brīdinājumu varat izslēgt savos aizsardzības iestatījumos. Dažos gadījumos atkļūdotājs var ievietot savus pagaidu INT3 pārtraukuma punktus.

Nosacījuma pārtraukuma punkts (horizontālais taustiņš Shift+F2) - parasts INT3 pārtraukuma punkts ar nosacījumu. Katru reizi, kad atkļūdotājs saskaras ar šādu pārtraukuma punktu, tas novērtē tā izteiksmi un, ja rezultāts nav nulle vai izteiksme ir nederīga, aptur programmas atkļūdošanu.

Nosacījuma pārtraukuma punkts ar reģistrēšanu (horizontālais taustiņš Shift+F4) - nosacījuma pārtraukuma punkts ar reģistrēšanu, lai reģistrētu izteiksmes vērtību vai zināmas funkcijas parametrus katru reizi, kad tiek izpildīts pārtraukuma punkts.

Atmiņas pārtraukuma punkts. Olly ļauj vienlaikus iestatīt vienu pārtraukuma punktu atmiņā. Jūs atlasāt kādu atmiņas daļu demontētājā vai CPU dump un izmantojiet uznirstošo izvēlni, lai iestatītu pārtraukuma punktu uz o`lr|. Iepriekšējais atmiņas pārtraukuma punkts, ja tāds ir, tiks automātiski izdzēsts. Jums ir divas iespējas: pārtraukt piekļuvi atmiņai (lasīt, rakstīt vai izpildīt) un tikai rakstīt. Lai iestatītu pārtraukuma punktu, Olly modificē datus saturošo atmiņas bloku atribūtus.

Aparatūras pārtraukuma punkts (pieejams tikai, izmantojot atkļūdotāju operētājsistēmā Windows ME, NT, 2000 vai XP). Ar 80x86 saderīgie procesori ļauj iestatīt 4 aparatūras pārtraukuma punktus. Atšķirībā no atmiņas pārtraukuma punkta, aparatūras pārtraukuma punkti nepalēnina izpildes ātrumu, bet aptver tikai līdz 4 baitiem.

Viena pietura piekļuvei atmiņai (pieejama tikai operētājsistēmās Windows NT, 2000 un XP). Varat iestatīt to logā Memory uz visu atmiņas bloku, izmantojot uznirstošo izvēlni vai nospiežot F2. Šis pārtraukuma punkts ir īpaši noderīgs, ja vēlaties pārtvert pieprasījumus noteiktam modulim.

Automātiskā izsekošana — ir jānorāda nosacījums (horizontālais taustiņš Ctrl+T), saskaņā ar kuru atkļūdotājs apturēs programmu. Lūdzu, ņemiet vērā, ka šī opcija var ievērojami (līdz 20%) palēnināt programmas izpildes ātrumu.

OllyDbg var arī apturēt programmas izpildi noteiktos notikumos, piemēram, kad tiek ielādēts vai izlādēts DLL vai pavediens tiek izveidots vai pārtraukts.

Pielikums Nr.3

Mani atkļūdotāja iestatījumi.
Ja vēlaties izmantot manus iestatījumus, aizstājiet visus datus ar šo tekstu failā ollydbg.ini, kas atrodas tajā pašā mapē, kurā ir instalēts atkļūdotājs.

Pārbaudiet DLL versijas=0 Rādīt rīkjoslu=1 Statuss rīkjoslā=0 Izmantojiet aparatūras pārtraukumpunktus, lai step=1 Atjaunot windows=104191 Ritināt MDI=1 Horizontāli scroll=0 Augšējais logs=0 Noklusējuma fonta indekss=1 Noklusējuma krāsu rādītājs=0 Indekss no noklusējuma sintakses highlighting=0 Žurnāla bufera lielums index=0 Izpildīt trasēšanas bufera lielumu index=7 Grupējiet blakus esošās komandas profilā=1 Iezīmētās trasēšanas reģistrs=-1 IDEĀLS izjaukšanas režīms=0 Izjaukt ar mazajiem burtiem=0 Atdaliet argumentus ar TAB=0 Papildu vieta starp argumentiem=1 Rādīt noklusējuma segmentus=1 NEAR jump modifikatori=0 Izmantot īsu virknes komandu formu=0 Izmēru jutīga mnemonika=1 SSE izmēra dekodēšanas režīms=0 FPU steka augšdaļa=1 Vienmēr rādīt atmiņas lielumu=1 Atšifrēt reģistrus jebkuram IP =0 Rādīt simboliskās adreses=1 Rādīt vietējo moduļu nosaukumus=0 Pelēkos datus izmanto kā aizpildījumu=1 Rādīt lēciena virzienu=0 Rādīt lēciena ceļu=0 Rādīt lēcienu no ceļa=0 Rādīt ceļu, ja lēciens nav veikts=0 Pasvītrot labojumus=1 Centrs SEKO command=0 Rādīt steka rāmjus=1 Rādīt lokālos nosaukumus stekā=1 Paplašināta steka trace=0 Sinhronizēt avotu ar CPU=1 Iekļaut SFX ekstraktoru kodā=1 SFX trasēšanas režīms=0 Izmantot reālu SFX ierakstu no iepriekšējās palaišanas=1 Ignorēt SFX izņēmumus =1 Pirmā pauze=1 Apstāties pie jaunā DLL=0 Apturēt pie DLL unload=0 Apturēt pie jauna pavediena=0 Apturēt pavediena beigās=0 Apturēt atkļūdošanas virknē=0 Atšifrēt SSE reģistrus=0 Iespējot pēdējo kļūdu=1 Ignorēt piekļuves pārkāpumus KERNEL32=1 Ignorēt INT3=1 Ignorēt TRAP=0 Ignorēt piekļuves pārkāpumus=0 Nezināmu komandu darbība=1 Ignorēt dalīšanu ar 0=0 Ignorēt nelikumīgas instrukcijas=0 Ignorēt visus FPU izņēmumus=0 Brīdināt, ja bieži pārtraukumi=0 Brīdināt, ja pārtraukums nav code=0 Autoreturn=1 Saglabāt sākotnējo komandu trace=1 Rādīt izsekoto ESP=1 Animēt sistēmā DLL=1 Trace over string komandas=1 Sinhronizēt CPU un palaist trace=0 Ignorēt pielāgotos izņēmumus=1 Viedais atjauninājums=1 Iestatīt augstu prioritāti= 1 Pievienot argumentus=1 Izmantot ExitProcess=1 Atļaut injekciju, lai iegūtu WinProc=0 Kārtot WM_XXX pēc nosaukuma=0 Pēdējā WinProc pārtraukuma punkta veids=0 Zīmējums bez sniega=1 Atdalīt simboliskos nosaukumus=0 Saglabāt kārtas numuru nosaukumā=1 Drukājams tikai ASCII dump=0 Atļaut diakritiskos simbolus=1 Virknes dekodēšana=0 Brīdināt, ja nav administrators=0 Brīdināt, pārtraucot procesu=1 Izlīdzināt dialogs=1 Izmantot izsaukšanas loga fontu=0 Norādītais dialoga fonts=0 Atjaunot loga pozīcijas=1 Atjaunot kolonnu platumu= 0 Izcelt sakārtoto kolonnu=0 Saspiest analīzes datus=1 Dublēt UDD failus=1 Aizpildiet pārējo komandu ar NOPs=1 Atsauces meklēšanas režīms=0 Globālā meklēšana=0 Līdzinātā meklēšana=0 Atļaut kļūdas robežu=0 Saglabāt heksadecimālā rediģēšanas atlases lielumu=0 Modificēt FPU reģistra tagu=1 Hex inspektora ierobežojumi=1 MMX displeja režīms=0 Pēdējās atlasītās opcijas kartīte=15 Pēdējā atlasītā izskata karte=6 Ignorēt reģistru teksta meklēšanā=1 Burtu atslēga programmā Disassembler=1 Koda analīžu vaļīgums=1 Atšifrēt paskālu strings=1 Uzminiet argumentu skaitu=1 Pieņemt tālu zvanus un atgriešanos=0 Pieņemt tiešās segmenta modifikācijas=0 Atšifrēt VxD calls=0 Pieņemt priviliģētās komandas=0 Akceptēt I/O komandas=0 Akceptēt NOPs=1 Pieņemt nobīdes ārpus diapazona=0 Pieņemt liekos prefiksus=0 Akceptēt LOCK prefiksus=0 Akceptēt neizlīdzinātas kaudzes darbības=1 Pieņemt nestandarta komandu formas=1 Rādīt ARG un LOCAL procedūrās=0 Saglabāt analīzi failā=1 Automātiski analizēt galveno moduli=1 Analizēt koda struktūru=1 Atšifrēt ifs as switches=0 Saglabāt trasēšanu failā=0 Izsekot reģistru saturu=1 Funkcijas saglabāt reģistrus=0 Atšifrēt trikus=0 Automātiski atlasīt reģistra veidu=1 Rādīt dekodētos argumentus=1 Rādīt dekodētos argumentus stekā=1 Rādīt argumentus izsaukuma steksā= 1 Rādīt inducētos zvanus=1 Etiķetes displeja režīms=0 Iezīme ietver moduļa nosaukumu=0 Iezīmējiet simboliskās etiķetes=0 Iezīmējiet RETURNs kaudzē=1 Ignorēt ceļu lietotāja datu failā=1 Ignorēt laikspiedolu lietotāja datu failā=1 Ignorēt CRC lietotāja datu failā =1 Noklusējuma kārtošanas režīms nosaukumos=1 Tabulu kolonnas žurnālfailā=0 Pievienot datus esošajam žurnālfailam=0 Izskalojiet savāktos datus žurnāla failā=0 Izlaist atstarpes avota komentāros=1 Paslēpt neesošos avota failus=1 Tabulēšanas pieturas= 8 Faila diagrammas režīms=2 Rādīt iekšējo rokturu nosaukumus=0 Slēpt neatbilstošos rokturus=0 RETN vietā izmantot RET=0 Rādīt izsekotos karogus=1 Rindiņu skaits, kas seko EIP=0 Saglabāt ārpus moduļa lietotāja datus=0 CPU=194,324,812,360 ,3 CPU apakšlogi=327,798,321,798,537,771,479,909 OllyTest=0,0,1024,746,1 Atsauces=256,420,256,210,1 Pārtraukuma punkti=75,248,621,6,6,1,1,4,1,2 ,210,256,210,1 Izpildāmie moduļi=263,41,636,175,1 Atmiņas karte=357, 41,519,274,1 Grāmatzīmes=110,145,624,175,1 Profils=132,174,624,182,1 Windows=132,177,614,179,1 Pavedieni=155,204,492,124,1, Avots,6,2,1,2 1 0,256,210,1 rokturi =196,325,647,175,1 avota faili =205,268,473,168,1 zvanu kopa =0,420,256,210 ,1 Zvanu koks=132,132,791,175,1 SEH ķēde=0,0,256,210,1 Skatīšanās izteiksmes=256,0,256,210,1 CPU shēma=0 CPU izjaukšanas ierīce=7,0,0,0,0, CPU,1,1 ,0 ,4353.0 CPU Stack=7,0,0,0 CPU Info=7,0,0,0 CPU reģistri=7,0,0,0 Atsauces=7,0,1,0,0 Pārtraukuma punkti=1,0 ,1,0,0 Run trace=1,0,1,0,0 ielāpi=1

Pabeigšana

Ar šo ir beigusies jūsu iepazīšanās ar brīnišķīgo atkļūdotāju OllyDebugger. Protams, rakstā nav iespējams aprakstīt visas šī atkļūdotāja iespējas, bet es mēģināju, un es ceru, ka tas strādāja. Dažas iespējas ir ārpus šī raksta darbības jomas, taču esmu pārliecināts, ka šīs iespējas atklāsit pats. Es mācīju Olliju pilnīgi bez rakstiem, un jūs varēsiet turpināt iepazīties ar atkļūdotāju bez neviena palīdzības. Ja jums ir jautājumi, ieteikumi, lāstu vārdi utt. nosūtīt tos visus uz [aizsargāts ar e-pastu].

P.S. Noteikti izlasiet manu rakstu par izpakošanu, izmantojot Olly.

Sveiki

Sveiki visiem cracklab, un jo īpaši MozgC un Bad_guy, ALEX, Kerghan, Mario555, Hex un visiem, kas lasa šo rakstu.

Daudzi reversētāji ir pazīstami ar OllyDbg, bezmaksas 32 bitu lietotāja režīma atkļūdotāju (3. g.). Galvenās šī atkļūdotāja priekšrocības: bezmaksas, mazs izmērs, intuitīvs interfeiss, vienkārša pārvaldība un atbalsts spraudņiem, kas ievērojami paplašina tā funkcionalitāti. Šodien ir vairāk nekā 500 spraudņu, un no šīs šķirnes mēs centāmies izcelt jums interesantākos.

OllyDumpEx

Risinot dažādas ar reverso inženieriju saistītas problēmas vai, precīzāk, strādājot ar ļaunprātīgu programmatūru, kas aktīvi izmanto dažādus obfuskatorus un pakotājus, diezgan bieži ir nepieciešams izmest procesa atmiņu tā turpmākai analīzei. Tā kā process ir aktīvs, lielākā daļa tā iepakotāju un aptumšotāju jau ir nostrādājuši un var redzēt gandrīz īsto neliešu seju. Tātad procesa atmiņas dumperis ir neaizvietojama lieta šādos uzdevumos. Katrs pētnieks dod priekšroku vienam vai otram atkļūdotājam, piemēram, spraudņu komplekta dēļ, bet dažreiz ir nepieciešams tos variēt, un es vēlētos, lai spraudņiem būtu vienāds interfeiss un iespējas neatkarīgi no atkļūdotāja. OllyDumpEx Plugin atrisina šo problēmu – tas ļauj ļoti elastīgi izmest atmiņu un atbalsta vairākus populārākos atkļūdotājus: OllyDbg 1/2, Immunity Debugger 1.7/1.8, IDA Pro, WinDbg. Rīka funkcijas:

EXE faila, DLL vai cita moduļa izvēle izgāztuvei; - MZ/PE parakstu meklēšana atmiņā; - atbalsts PE32+; - atbalsts vietējiem 64 bitu procesiem (šobrīd tikai IDA Pro); - izmest jebkuru adrešu telpu kā sadaļu (pat ja tā nav sadaļas galvenē); - pievienojot tukšas sadaļas; - RVA rediģēšana programmā DataDirectory turpmākām izmaiņām ImageBase; - automātiska liela skaita parametru aprēķins (RawSize, RawOffset, VirtualOffset un citi).

Projekts tiek aktīvi izstrādāts, un autors to pastāvīgi pārbauda, ​​lai noteiktu saderību ar jaunākajām atbalstīto atkļūdotāju versijām.

Kā instalēt spraudņus?

Pirmkārt, programmas direktorijā ir jāizveido mape ar nosaukumu Plugins. Tas ļaus jums izvairīties no galvenā direktorija piegružošanas nākotnē, un, ja nepieciešams, jūs varat viegli atrast nedarbojas/konfliktējošu spraudni. Pēc tam kopējiet spraudņa DLL failu izveidotajā direktorijā, pēc tam palaidiet atkļūdotāju un norādiet ceļu uz šo mapi:

  • OllyDBG v1.10: atlasiet Opcijas -> Izskats un cilni Katalogi. Vienumā Spraudņa ceļš norādiet ceļu uz mapi ar spraudņiem.
  • OllyDBG v2.01h: atlasiet Opcijas -> Opcijas un sadaļu Katalogi. Vienumā Plugin direktorija norādiet ceļu uz mapi ar spraudņiem.

Restartējiet atkļūdotāju un atrodiet vienumu, kas parādās izvēlnē Plugins.

OllyMigrate

  • Paredzēts: OllyDbg 1.10/2.01, ImmunityDbg 1.7/1.8, IDA Pro, WinDbg 6

Katram atkļūdotājam ir gan stiprās, gan vājās puses, un katram ir savas - ideāla rīka nav. Vienā ir ērti apiet pretatkļūdošanas metodes, citā varat izmantot milzīgu gatavu spraudņu arsenālu, bet trešajā rakstāt savus skriptus. Nesen ir kļuvis iespējams secīgi strādāt OllyDbg, Immunity Debugger, WinDbg un IDA Pro. Kā? Iepazīstieties ar OllyMigrate spraudni — šis spraudnis ļauj pārsūtīt atkļūdošanas procesu uz citu atkļūdotāju, nerestartējot pētāmo lietojumprogrammu. Tādējādi mēs varam izmantot tikai katra atkļūdotāja stiprās puses, izmantojot migrāciju no viena uz otru. Piemēram, mēs varam sākt ar OllyDbg, lai apietu pretatkļūdošanas paņēmienus un atrastu OEP (Original Entry Point), un pēc tam pārsūtītu vadību uz Immunity Debugger un, pateicoties tā atbalstam Python skriptiem, rediģētu aptumšoto importēšanas tabulu. Kā jūs jau saprotat, spraudnis atbalsta: OllyDbg 1/2, Immunity Debugger 1.7/1.8, IDA Pro, WinDbg. Īpatnības:

Daudzpavedienu veidošana un iespēja pauzēt pavedienus; - programmatūras pārtraukumpunkta iestatījumu pārsūtīšana (saglabājot iespējotu/atspējotu statusu).


Grafiskās shēmas iestatīšana

Standarta OllyDbg krāsu shēma ir diezgan garlaicīga un ne pārāk informatīva. Protams, ar laiku pie tā var pierast, taču labāk ir pielāgot izskatu, lai acs uzreiz varētu orientēties komplektācijas sarakstā. Galu galā produktivitāte ir atkarīga no tā. Krāsu shēmu var pielāgot divos veidos: tieši no izvēlnes Opcijas -> Izskats -> Krāsas vai rediģējot failu ollydbg.ini. Jūs meklējat failā sadaļu un spēlējat ar krāsu iestatījumiem, kā vēlaties. Šis process ir detalizēti aprakstīts oficiālajā vietnē bit.ly/1cGR2zr.

OllySocketTrace

  • Paredzēts: OllyDbg v1.10

Spraudnis visu procesa veikto ligzdas darbību izsekošanai. Programmas izpildes laikā tiek ierakstīti visi nosūtītie un saņemtie buferi, kā arī visi tīkla funkcijām nodotie parametri un šo funkciju atgrieztās vērtības.

Pašlaik tiek atbalstītas šādas ligzdas darbības: WSASocket, WSAAccept, WSAConnect, WSARecv, WSARecvFrom, WSASend, WSASendTo, WSAAsyncSelect, WSAEventSelect, WSACloseEvent, listen, ioctlsocket, connect, recm, recv bind, close, shutm, recv bind, close Nosūtīt.

Vienkārši palaidiet spraudni ikreiz, kad vēlaties pārraudzīt ligzdas darbības. OllySocketTrace automātiski ievietos visus nepieciešamos pārtraukuma punktus un reģistrēs visu nepieciešamo informāciju, tiklīdz tie tiks aktivizēti. Lai skatītu iegūto rezultātu, jums ir jāatlasa OllySocketTrace žurnāla izvēlnes vienums.


OllyHeapTrace

  • Paredzēts: OllyDbg v1.10

Spraudnis kaudzes manipulāciju izsekošanai. Paredzēts galvenokārt kaudzes pārpildes atkļūdošanai, kad nepieciešams kontrolēt kaudzes atrašanās vietu, pārrakstot konkrētu struktūru, piemēram, bloka galveni, kritiskās sadaļas struktūru vai citus lietojumprogrammas datus. Kad tas ir aktivizēts, spraudnis automātiski izveido pārtraukuma punktus (RtlAllocateHeap, RtlFreeHeap, RtlCreateHeap, RtlDestroyHeap, RtlReAllocateHeap, RtlSizeHeap, GetProcessHeap un RtlInitializeCriticalSection, RtlDzēst tos nepieciešamo informāciju) un raksta tosCritesSe. Īpatnības:

  • apskatīt kaudzes pēdas;
  • katras atsevišķas kaudzes pēdas izcelšana dažādās krāsās;
  • “papildu” informācijas filtrēšana noteiktai kaudzītei.

Pallons

  • Paredzēts: OllyDbg v2.01

Kāpēc tik daudzi reversori izmanto imunitātes atkļūdotāju? Jā, jo tai, tāpat kā IDA, ir iebūvēts Python atbalsts. Šī skriptu valoda ļauj ievērojami vienkāršot binārā koda izpētes uzdevumu, ļaujot ātri uzrakstīt nelielu skriptu, kas automatizē vienu vai otru rutīnas uzdevumu. Diemžēl neapbruņotais OllyDbg atbalsta tikai tā montāžai līdzīgo valodu automatizācijas skriptu rakstīšanai. Par laimi, puisis ar segvārdu Pablo Eskobars nolēma nepaciest šo situāciju un uzrakstīja OllyDbg spraudni, kas tajā integrē Python atbalstu - Pyllow. Tagad varat rakstīt skriptus, kas automatizē reversētāja rutīnas darbu, kas darbosies atkļūdotāja iekšienē un varēs piekļūt lielākajai daļai OllyDbg API. Spraudnis tiek izplatīts avota kodā, tāpēc es teikšu dažus vārdus par tā montāžu. Lai to apkopotu, jums būs nepieciešama Visual Studio 2010, Boost bibliotēka, kompilētais Boost.Python un Python 3.x 32 bitu versija (testēta uz 3.2). Atkarībā no jūsu operētājsistēmas iestatījumiem, iespējams, jums būs jāpaziņo Boost par visām jūsu sistēmā instalētajām Python versijām un pēc tam izveides laikā jāizvēlas vajadzīgā versija. To var izdarīt, failam /boost-dir/tools/build/v2/user-config.jam pievienojot šādas rindas:

Izmantojot python: 3.2: "C:/Program Files (x86)/Python32/python.exe" # ceļš uz jūsu Python iestatījumiem: : : 32 # x86-32 tikai ;

Galvenais šeit ir norādīt pareizo ceļu pie tulka. Pēc tam izveidojiet Boost.Python, izmantojot komandu:

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

Ja rodas kādas grūtības, oficiālajai Boost rokasgrāmatai vajadzētu palīdzēt bit.ly/14FU7xP

OllyGraph

  • Paredzēts: OllyDbg v2.01

Viena no IDA Pro funkcijām, kas mani īpaši piesaista, ir spēja attēlot funkciju kā diagrammu. Tādējādi ir daudz ērtāk analizēt kodu, un uzreiz kļūst skaidrs, kā mēs nokļuvām tajā vai citā sadaļā, kādi apstākļi darbojās un kā tie darbojās. Turklāt jūs varat arī apskatīt zvanu grafiku, lai saprastu, no kurām programmas vietām tiek izsaukta pētāmā funkcija. Par laimi, šī funkcija tagad ir pieejama OllyDbg, jums vienkārši jāinstalē OllyGraph spraudnis. Tas ļauj prezentēt programmu blokshēmu veidā, kas ir līdzīgas IDA Pro iebūvētajām. Turklāt vizualizācijai tiek izmantots rīks wingraph32, kas ir daļa no ida. Versijai 1.10 ir pieejams alternatīvs spraudnis OllyFlow bit.ly/14lNtpb – tā paša autora nedaudz uzlabota OllyGraph versija.


InjectHookLib

  • Paredzēts: OllyDBG v1.10

Diezgan interesants paplašinājums, kas ļauj pārtvert sistēmas zvanus no lietotāja režīma. Pārtveršanas tehnika ir interesanta, tāpēc iesaku to izlasīt autora emuārā (bit.ly/OjxUMj operētājsistēmai Windows XP, bit.ly/NZW6Ci operētājsistēmai Windows 7). Viss, kas no lietotāja ir nepieciešams, ir instalēt spraudni un uzrakstīt savu DLL bibliotēku, kurā tiks ieviesti pārtverto funkciju apstrādātāji. Kā to realizēt, var apskatīties saitēs vai papētīt piemēra bit.ly/168kcF2 pirmkodu, ko laipni nodrošināja šī paplašinājuma autors. Šāds spraudnis var būt noderīgs dažādu uzdevumu risināšanai, piemēram, analizējot ļaunprātīgu programmatūru un izpakojot.


uberstealth

  • Paredzēts: OllyDbg v2.01, IDA Pro

Kādus garumus pieliks programmu izstrādātāji, lai pasargātu savu prātu no pētījumiem! Ar šādām dāvanām īpaši ir daudz dažādu iepakotāju, lai gan starp parastajām programmām diezgan bieži sastopamas arī personas, kas pildītas ar pretatkļūdošanas paņēmieniem. Manuāli apiet visus šos aizsardzības veidus vienkārši kļūs garlaicīgi — tikai funkcijas IsDebuggerPresent atgrieztās vērtības rediģēšana nedarbosies. Tātad jums ir jāizmanto īpaši rīki šī spraudņa formā. Tas ir avota kodā, tāpēc jums tas ir jāsamontē manuāli. Lai to izdarītu, jums būs nepieciešama Boost bibliotēka>=1.48.0, WTL (Windows veidņu bibliotēka)>=8.1, Windows draiveru komplekts>=7.0, DDKBuild. Jā, jā, jūsu redze jūs nav pievīlusi — WDK un DDK, jo atkļūdotājs izmanto draiverus, lai paslēptu sevi. Un, protams, Visual Studio 2008. Interesanti, ka spraudnis darbojas ne tikai OllyDbg, bet arī IDA Pro.

Būtiski spraudņi

Papildus uzlabotajiem spraudņiem, kurus var izmantot ne pārāk bieži, jums ir nepieciešams arī džentlmeņu komplekts katrai dienai. Parasti šajā komplektā ir iekļauti šādi paplašinājumi:

  • Komandjosla bit.ly/14GHQcr - iebūvētā komandrindas spraudņa analogs. Pievieno komandrindas paneli atkļūdotāja vadības komandu ievadīšanai, kas ļauj paātrināt atkļūdošanas procesu.
  • PhantOm spraudnis bit.ly/qyNqJO — Krievijas izstrādātāja spraudnis pret atkļūdošanu, lai paslēptu OllyDbg un labotu aizsarga izmantotās atkļūdotāja ievainojamības. Palīdz pret visbiežāk sastopamajām noteikšanas metodēm.
  • Ķīniešu spraudnim StrongODbit.ly/gzazAd ir līdzīga funkcionalitāte. Bija pat baumas par tajā atrasto PhanOm izvilkto kodu.
  • Pretatkļūdošanas īpašības ir pieejamas arī vietnē Olly Advanced bit.ly/14GI0An. Šis ir sava veida Šveices armijas nazis, kas, cita starpā, paplašina OllyDbg funkcionalitāti un novērš dažas šī atkļūdotāja kaitinošas lietas un kļūdas.
  • Tikpat svarīgs spraudnis ir ODBGScript bit.ly/17Is2AM, kas ļauj rakstīt un izpildīt skriptus, lai automatizētu nepieciešamo procesu, piemēram, failu izpakošanu.
  • Pēdējais sarakstā ir OllyDump bit.ly/17Is4si – lielisks procesa pašizgāzējs ar iebūvētu importa tabulas rekonstruktoru.

OllyMSDN

  • Paredzēts: OllyDbg v1.10, imunitātes atkļūdotājs 1.7/1.8

WinAPI funkciju skaits ir milzīgs, un zināt tās visas kā savu roku ir vienkārši nereāli. Tāpēc dažreiz ir jāskatās dokumentācija, lai noskaidrotu/uzzinātu, ko konkrētā funkcija atgriež vai kādus parametrus tā ņem kā ievadi. Diemžēl standarta palīdzības fails nevar sniegt visu nepieciešamo informāciju, tāpēc jums ir jāaktivizē pārlūkprogramma un jādodas uz MSDN. Tātad, kāpēc gan pilnībā neaizstāt šo failu ar tiešsaistes dokumentāciju? Lai to izdarītu, jums vienkārši jāinstalē OllyMSDN spraudnis, pārliecinieties, ka mums ir WIN32.HLP fails kā palīdzība (Help -> Select API help). Ja šāda faila nav, jums ir jāizveido tukšs fails ar tādu pašu nosaukumu un jānorāda uz Olly. Tagad, mēģinot piekļūt atkļūdotāja palīdzības failam, spraudnis pārtvers WinHelp() API funkciju un vecā faila vietā atvērs MSDN vietni. Un, lai iegūtu informāciju par konkrētu funkciju atkļūdošanas laikā, ar peles labo pogu noklikšķiniet uz zvana norādījuma un atlasiet Palīdzība uz simboliskā nosaukuma vai vienkārši noklikšķiniet uz .


DetachMe

  • Paredzēts: OllyDbg v1.10

Viena no noderīgajām funkcijām, kas parādījās OllyDbg otrajā versijā, bija Detach funkcija, kas ļāva “atdalīt” atkļūdotāju no izmeklējamā procesa, lai process varētu turpināt darboties neatkarīgi. Diemžēl daudzu iemīļotajai versijai 1.10 šādas funkcijas nav - jūs varat tikai pievienoties pētāmajam procesam. Taču to var novērst, instalējot DetachMe spraudni, kas ļauj jebkurā laikā atvienot atkļūdotās programmas no OllyDbg un turpināt ārēju kontroli pār atkļūdotāju. Turklāt programmatūras un procesora pārtraukuma punktu atspējošana neietekmēs atbilstošos udd failus.

OllyDbg PDK

Nav spraudņu visiem gadījumiem, tāpēc agri vai vēlu var pienākt brīdis, kad pašam būs “jātaisa tērps” Oljai, lai atrisinātu nākamo vērienīgo uzdevumu. Šajā gadījumā jums būs nepieciešams PDK — spraudņu izstrādes komplekts, kuru var lejupielādēt no oficiālās vietnes bit.ly/18oD7t6.

Ollydbg-dublējumi

  • Paredzēts: OllyDbg v1.10/v2.01

Strādājot pie nākamā bināra, reversētājam ir jāpievieno diezgan daudz savas informācijas: jāraksta komentāri apgrieztajām funkcijām, lai nākamajā dienā nebūtu no jauna jāmācās to darbības algoritms un ievades parametri, jāiestata pārtraukuma punkti un tā tālāk. Visu šo pakalpojuma informāciju atkļūdotājs automātiski saglabā UDD failā. Bet gadās, ka tad, kad atkļūdotājs avarē vai tiek atkārtoti instalēts, šie faili tiek zaudēti. Un mums ir jāsāk analīze no jauna. Lai izvairītos no šādas bēdīgas situācijas, varat izmantot spraudni ollydbg-backup, kas ļauj dublēt šo informāciju, saglabājot to CSV failā, no kura to var viegli ielādēt atpakaļ atkļūdotājā. CSV failam ir šāda struktūra:

RVA, etiķete, komentārs

Secinājums

OllyDbg ir ļoti populārs atkļūdotājs, tam ir diezgan daudz spraudņu, un jūs varat runāt par tiem ilgu laiku. Mūsu mērķis nebija izskatīt tos visus, mēs tikai centāmies atlasīt interesantākos “tērpus” mūsu cīņas draugam Oljai. Ceru, ka mums izdevās.

Būtībā es vienmēr esmu izmantojis visu laiku atkļūdotāju OllyDbg atkļūdošanai. Šis ir elegants atkļūdotājs, kas ir ļoti ērts un vienkāršs, un tajā pašā laikā tam ir ļoti jaudīga funkcionalitāte. Bet pēdējā laikā arvien biežāk saskaros ar x64 programmām, un mans mājas dators darbojas ar x64 operētājsistēmu, un OllyDbg versija 1.10 nedarbojas pareizi uz šādas operētājsistēmas, tā zaudē ieejas punktu un viss kopumā ir skumji. Mēģinājumi izmantot jaunāko versiju 2.01a arī bija neveiksmīgi, jo tā sastingst negaidītā brīdī un pārstāj reaģēt, protams, jūs varat izlikt virkni ielāpu no ķīniešu draugiem un vairāk vai mazāk atdzīvināt atkļūdotāju, taču joprojām ir. milzīgs kļūdu skaits un izskatās, ka izstrāde ir apstājusies (kopš 2011. gada augusta, nekāda progresa) lika man skatīties uz Interactive Disassembler, saīsināti IDA. Šis ir spēcīgs rīks programmu atkļūdošanai un izpētei, kurā ir virkne nepieciešamo un ne tik nevajadzīgu triku un triku.
Bet tam ir arī daži trūkumi, kas vienmēr atturēja mani no šī spēcīgā rīka izpētes:
1. Saprātīgas dokumentācijas ir maz, protams, ir grāmatas no cienījamā K. Kasperska kunga, bet tās ir tik senas, ka ir jēga lasīt, bet mūsdienu realitātē tas nav īpaši daudz, galvenokārt vispārējai attīstībai.
2. Šī produkta cena no X-Rays ir sākuma licence vairāk nekā 500 Austrālijas dolāru apmērā, un tas ir bez X-Rays Decompiler, kas maksā diezgan neadekvāti daudz naudas.
Taču OllyDbg vilšanās ņēma virsroku pār manu krupi un veselo saprātu, un es tomēr nolēmu sākt studēt IDA.


Neliela atkāpe - nejautājiet man, kur lejupielādēt IDA bez maksas un bez SMS, vai drīzāk varat jautāt, bet es nezinu un nosūtīšu uz šo tīmekļa vietne.

Pirmkārt, es meklēju informāciju par rokasgrāmatām un biju nedaudz vīlies, informācijas ir diezgan maz un tā ir novecojusi, ir forumi, kur cilvēki apmainās ar visādām noderīgām lietām par IDA, bet vispirms man bija jāpaņem vismaz jauno vīriešu kurss. Te man palīdzēja video ceļvedis no TiGa, var paņemt Pavadījis gandrīz visu nedēļas nogali un izdzēris pusi kastes alus, noskatījos visas video pamācības. Pēc kā man radās doma, kāpēc gan nepamēģināt izprast IDA ar veco labo Rikardo Navajas rakstu palīdzību ar nosaukumu “Ievads krekingā no nulles izmantojot OllyDbg”, tos var izlasīt krieviski, piemēram, var rasties jautājums, ko dara OllyDbg un IDA, bet tāpēc, ka raksti ir ļoti detalizēti un es meklēšu līdzīgus elementus IDA, kas man sniegs pamata izpratni par darbu ar IDA.

Tāpēc es neaprakstīšu pamatprasmes strādājot ar montētāju kā Rikardo Navajas rakstos, jo, manuprāt, tie, kas pāriet uz IDA, jau nedaudz saprot, kas ir steka, reģistri, kā darbojas atmiņa un kas ir nosacīta un ne- nosacīts lēciens ir, bet tūlīt sāksim pētīt programmas, kuras ir aprakstītas Rikardo rakstos. Es mēģināšu iet cauri visiem viņa rakstiem, analizējot viņa pieminēto kreku.

Pirmais raksts, kurā crackme jau tiek analizēts, ir 9. nodaļa, bet man tā būs pirmā nodaļa.
Lejupielādējiet nepieciešamo failu, kas tiks pārbaudīts, piemēram, no vietnes wasm.ru
Palaidiet IDA un atveriet tajā esošo failu, izmantojot File-> Open. Tad mēs redzam šādu attēlu:

Visus iestatījumus var atstāt pēc noklusējuma, jo tie šobrīd man neko īpašu nepasaka. Noklikšķiniet uz Labi un skatiet galveno IDA logu:


Tālāk norādītās pozīcijas ir izceltas ar apļiem ar cipariem:
1. Informācija par bāzi, ieejas punktu, virtuālā un reālā koda sadaļas lielumu un cita noderīga informācija par sadaļu.
2. Funkcijas, kas atrodamas programmā, funkcijas, kas importētas no ārējām bibliotēkām, ir norādītas rozā krāsā. sākt- visbiežāk šī ir funkcija, kas nāk ieejas punktā, starp citu, apskatiet iespējas Ieejas punkts varat nospiest karsto taustiņu CTRL+E.
3. Faktiski pats pašreizējās atvērtās funkcijas montāžas kods, ja nevēlaties skatīties grafiskā režīmā, varat to pārslēgt uz teksta nepārtrauktu lapu pa atstarpi, ar peles labo pogu noklikšķiniet uz grafikas grafika skata sarakstā.
4. Funkciju minikarte ar visām pārejām un tamlīdzīgi ir ļoti noderīga, lai orientētos kodā.

Lai lietojumprogrammu varētu palaist atkļūdotājā, jums ir jāatlasa pats atkļūdotājs, jo uzskaites kods nav atkļūdošana.
Klikšķis F9 vai atlasiet opciju augšpusē Atkļūdotājs- sauca logs Atlasiet atkļūdotāju kurā mēs izvēlamies Vietējais Win32 atkļūdotājs Iesākumam mums pietiks ar šo atkļūdotāju, un ar pārējo tiksim galā vēlāk.

Noklikšķiniet vēlreiz F9 un programma sākas bez apstāšanās plkst Ieejas punkts kā OllyDbg. To var labot, ja vēlaties pastāvīgi apstāties pašā sākumā, atkal doties uz grāmatzīmi Atkļūdotājs un tur mēs izvēlamies Atkļūdotājs Iespējas atvērtajā logā varat atzīmēt izvēles rūtiņu Apstāties procesa ieejas punktā un mēs saņemam tādu pašu reakciju kā OllyDbg, kad sākam atkļūdot, mēs apstājamies ieejas punktā. Bet jūs varat arī nekavējoties iestatīt pārtraukuma punktu manuāli, ja nepieciešams, apskatot ASM sarakstu un apstāties tur.

Tagad apskatīsim atkļūdotāja logu:


Bultiņas parāda galvenos interfeisa elementus, tie īpaši neatšķiras no tā paša OllyDbg, lai gan ir daži papildinājumi, piemēram, attēlot nevis saraksta formā, bet gan grafiskā formā, neaizmirstiet, ka mēs varam vienmēr pārslēdzieties uz sarakstu no grafiskā režīma pēc atstarpes un visbiežāk arī atpakaļ. Ir panelis ar žurnālu un grafisko displeja karti.

Kas vēl mums ir vajadzīgs Galvenie rīki ir parādīti šajā attēlā:


Demontāža- faktiski izsauc logu ar izjauktu programmu.
Hex izgāztuve- atver logu ar izgāztuvi.
Pseidokods- šī funkcija mēģina pārvērst ASM kodu nožēlojamā C līdzībā.
Eksports- ko programma vai bibliotēka eksportē.
Imports- ko programma vai bibliotēka importē.
Vārdi- šajā izpildāmajā failā atrasto API nosaukumu saraksts.
Funkcijas- programmā atrodamo funkciju saraksts.
Stīgas- programmā konstatētas teksta virknes.
Segmenti- segmenti, kas tiek atklāti atmiņā.
Iesākumam ar to pietiek, jo pārējo funkciju mērķis vēl nav īsti skaidrs, un pašreizējā būs nepieciešama pirmās crackme programmas izpētei.

Tagad nedaudz par atkļūdotāju, galvenās atslēgas paliek standarta
F9- izpildīt programmu
F8- izsekot, neiedziļinoties funkcijā
F7- izsekot funkciju ieiešanai
F2- noņemiet/instalējiet pārtraukuma punktu rindā, kurā pašlaik atrodas kursors.

Kā IDA noteikt, kur mēs šobrīd atrodamies programmā, kurā mēs veicam atkļūdošanu vai jau rakņājamies pa importēšanas dll — varat apskatīt teksta formā pa kreisi no pozīcijas numura un redzēt aprakstu, piemēram, šādi:
kernel32.dll:764FD8F3 mov edi, edi
Nu, saskaņā ar vārdu kernel32. Uzreiz kļūst skaidrs, ka tagad esam kodolā.

Nu, tagad atgriezīsimies pie mūsu ilgi cietusī kreka.
Palaidīsim to un mēģināsim ievadīt kaut kādu nosaukumu un sērijas numuru, parādīsies ziņojuma lodziņš ar uzrakstu “Nav veiksmes, draugs!” Tas nozīmē, ka mēs neuzminējām vārdu un lietotāju. Mēģināsim uztvert šo ziņojumu un redzēt, kā mēs varam piespiest to radīt pareizo ziņojumu, ka nosaukums un sērijas numurs ir pareizi. Ir zināms, ka atteices ziņojuma izvadē tiek izmantota standarta API funkcija MessageBoxA, tāpēc mums ir jāievieto pārtraukuma punkts.
Ejam uz Skatīt->Atveriet apakšskatus->Funkcijas vai nospiežot Shift+F3 un šeit mēs redzam visas funkcijas, kuras mēs varējām noteikt IDA.
Izvēlieties mums nepieciešamo funkciju MessageBoxA un, izmantojot peles labās puses nolaižamo izvēlni, iestatiet funkcijas pārtraukuma punktu. Kaut kas tamlīdzīgs:

LABI. Pēc instalēšanas mēs turpināsim programmas izpildi un mēģināsim vēlreiz ievadīt nepareizu nosaukumu un sērijas numuru (starp citu, ar pogu jūs varat atgriezties noklusējuma atkļūdošanas logā ESC)
Atkļūdošana apstājās pie ziņojuma izejas par nepareizu pieteikumvārdu un paroli, lieliski, paskatīsimies, kādu noderīgu informāciju varam iegūt.
Mēs atrodamies pie funkcijas MessageBoxA ieejas, pati funkcija mums nav interesanta, tāpēc mēs noklikšķinām CTRL+F7 kas nozīmē, izpildiet kodu, līdz tiek atklāts pirmais ret, tas ir, funkcija iziet. Pēc visām manipulācijām izjauktā koda galvenais logs izskatās šādi:

Jā! Šī ir procedūra, kas nodod argumentus MessageBoxA, kas parāda ziņojumu par nepareizu sērijas numuru un nosaukumu. Tā kā mērķis ir skaidrs, varat nekavējoties pārdēvēt funkciju, ar peles labo pogu noklikšķinot uz tā sub_401362 un tur atlasot vienumu Pārdēvēt vai izmantojot karsto pogu N. Es nosaukšu šo funkciju AHTUNGS! :)

Tālāk apskatīsim, no kurienes nāk šīs procedūras kājas un kas aiz tās slēpjas. Noklikšķināsim F8 un mēs sasniegsim augstāko līmeni. Un tur uzreiz var redzēt kaut kādu čeku ar bultiņām, viena bultiņa pa kreisi noved pie kaitīgas procedūras AHTUNGS, bet otrais nav īsti skaidrs, bet tur ir redzams ZVANIET un adrese sub_40134D, ir ļoti interesanti redzēt, kas tur ir. 2. variants principā, 1 ir 2 reizes noklikšķināt uz LMB (peles kreisā poga). sub_40134D un iekļūt šajā funkcijā, un otrā ir vienkārši virzīt peles kursoru virs tās pašas sub_40134D un pagaidiet pussekundi, kas parādīs daļu no šīs funkcijas, piemēram:

Tas jau ir ļoti interesanti, šķiet, ka cita verifikācijas opcija ved uz pareizo logu. Sauksim šo procedūru LABI.
Mēs noņemam veco pārtraukuma punktu MessageBoxA, mums viņš nav vajadzīgs, ejam uz Atkļūdotājs-> Pārtraukuma punkti-> Pārtraukuma punktu saraksts un atvērtajā logā dzēsiet veco pārtraukuma punktu.
Tagad jums ir jāievieto pārtraukuma punkts jz pārbaudei pār šīm procedūrām AHTUNGS Un LABI izmantojot RMB un izvēloties atbilstošo opciju, vai karsto taustiņu F2. Restartēsim programmu un paskatīsimies apkārt.
Mēs iegūsim šādu logu:

Diemžēl statiskajā bildē tas nav redzams, bet ņemiet vērā, šobrīd mirgo bultiņa, kas ved uz procedūru AHTUNGS un tas nav ļoti labi. Būtu jauki, ja mūsu izsauktās procedūras virzienā mirgo zaļa bultiņa LABI. Lai to izdarītu, jums ir jāiestata ZF karodziņš uz 1. RMB uz karoga un atlasiet opciju Palielināt vērtību vai atlasiet karogu un noklikšķiniet uz pogas +(plus) ciparu tastatūra. Protams, labāk to skatīties dinamikā, statiskās bildēs to grūti redzēt, bet tagad bultiņa mirgo uz sāniem LABI procedūra sarakstā izskatās šādi:

Šeit ir skaidrāk statiskā izteiksmē, kad ZF = 0, pāreja nenotiek un izskatās pēc punktētas līnijas, attiecīgi mēs nonākam pie AHTUNG procedūras, un, kad tā notiek, mēs varam redzēt biezu zaļu bultiņu un tā noved pie LABAS procedūras.
Nu beidzot spiedīsim F9 un izbaudi rezultātu: Lielisks darbs, draugs. Tagad izmēģiniet nākamo CrackMe.


Taisnība, ja aizver programmu un atver to vēlreiz atkļūdotā, karodziņš protams pazudīs, vajag kaut ko izdomāt ar ko lāpīt un vairs nepervert ar karodziņiem, vienkāršākais variants, šī ir vieta JZ darīt JNZ, lai, gluži pretēji, tiktu pieņemts jebkurš nepareizs sērijas numurs, izņemot pareizo.
Hex kods JZ - 74 , un JNZ kods ir 75, Tas nozīmē, ka mums ir jāmaina baits, jādodas uz rindu, kuru vēlamies mainīt, dodieties uz Rediģēt->Patch programma->Mainīt baitu.
Parādīsies panelis ar baitu kopu:
74 07 E8 18 01 00 00 EB 9A E8 FC 00 00 00 EB 93
ir nepieciešams labot pirmo ciparu par 75 lai tas darbotos
75 07 E8 18 01 00 00 EB 9A E8 FC 00 00 00 EB 93
Jūs varēsiet redzēt izmaiņas izjauktā kodā.
Tādējādi jebkurš sērijas numurs, izņemot pareizo, tagad tiks nodots pareizi, lai gan, manuprāt, tas ir netīrs triks, labāk ir zināt sērijas numuru vai izveidot beznosacījuma numuru. J.M.P.

Saglabāsim ielāpa rezultātu, Fails->Ražot failu, izkritīs daudz iespējamo ietaupījumu, pat iekšā EXE, bet kaut kādu iemeslu dēļ tas nedarbojas, tāpēc saglabāsim to kā banālu DIF.
Apskatīsim failu, lai redzētu, kas notika:

Tieši tas, kas jums nepieciešams.

Nu tas arī šodienai viss, nākamā daļa, manuprāt, būs pēc nedēļas.

Ievads krekingā no nulles, izmantojot OllyDbg — 1. nodaļa — arhīvs WASM.RU

Šīs sadaļas "Ievads krekingā no nulles, izmantojot OllyDbg" mērķis ir sniegt tiem, kas tikko sāk apgūt krekinga mākslu, pamatzināšanas un tajā pašā laikā darīt to tā, lai šīs zināšanas vēlāk ļautu lasīt. un izprast sarežģītākas apmācības, piemēram, , kuras var atrast sadaļā “Jaunais kurss no CracksLatinos”, kas, protams, joprojām ir atvērta jauniem papildinājumiem un papildinājumiem.

Kursa ideja radās tāpēc, ka daudzas New CracksLations kursa apmācības bija pārāk sarežģītas iesācējiem, un tie, kuri nesasniedza nepieciešamo līmeni, bija neapmierināti un daudzos gadījumos atteicās turpināt. Tāpēc šī “Ievada...” mērķis nav atkārtot lieliskās pamācības no “Jaunā kursa...”, kuru skaits jau pārsniedzis 500, bet gan ielikt pamatus, lai tie, kas pabeidz šo kursu varēs lasīt sarežģītākas pamācības. Tas, tāpat kā viss mūsu amatā, prasa ievērojamas pūles, un galvenais mērķis ir šo apjomu samazināt, sniedzot pamatzināšanas un ļaujot tālāk izprast sarežģītāku materiālu.

Kāpēc OLLYDBG?

Mēs šeit nerunāsim par mūžīgo konfrontāciju starp Soft-Ice un OllyDbg, manuprāt, pat Soft-Ice fanātiķi atzīst, ka ar OllyDbg ir vieglāk sākt, jo par to ir daudz informācijas un to ir vieglāk izpētīt. Mums ir jāieiet plaisāšanas pasaulē caur durvīm ar nosaukumu "OllyDbg", un tikai tad tas, kuram tas ir nepieciešams, var pārslēgties uz jebkuru citu nepieciešamo atkļūdotāju, jo mainās tikai to lietošanas metodes, bet būtība paliek nemainīga.

Sāciet no jauna

Vispirms jums ir jāapbruņojas ar rīku, kuru mēs galvenokārt izmantosim, un noklikšķiniet uz tā un lejupielādējiet to.

Tā kā mēs sākam no nulles, vispirms mums ir jāizpako lejupielādētais arhīvs jūsu cietā diska mapē, kuru var viegli sasniegt. Laba ideja būtu izveidot mapi diskā C:/. Lai gan tas darbosies jebkurā citā vietā, es pieņemu, ka ir izvēlēts disks C:/.

Kad fails ir izsaiņots, dodieties uz izveidoto mapi un skatiet:

Tajā ir izpildāmais fails OLLYDBG.exe, kas mums ir jāpalaiž, un ērtības labad es izveidoju saīsni uz darbvirsmas.

Labi, viss ir gatavs palaišanai. Noklikšķiniet uz OllyDbg:

Mēs redzam ziņojumu, ka bibliotēkā esošais DLL ir vecāks par tās pašas sistēmas DLL, un, ja atlasīsim “Jā”, vecais DLL tiks izdzēsts no mapes un tiks izmantots sistēmas DLL. Lai gan es neredzu lielu atšķirību starp abiem, es joprojām dodu priekšroku tam, kas tiek piegādāts kopā ar izplatīšanu, tāpēc es vienmēr noklikšķiniet uz "Nē".

Šī ir tīrā OllyDbg programma, un pirmā programma, ko atvērsim, lai iepazītos ar OllyDbg, būs CrueHead slavenā CrackMe, kas ir pievienota šai apmācībai.

Lai atvērtu failu OllyDbg, dodieties uz Fails -> Atvērt vai noklikšķiniet uz ikonas:

Tiks atvērts logs, kurā varēsiet atrast vajadzīgo failu, šajā gadījumā tas ir CrueHead's crackme.

Atvērsies iepriekš minētais crackme, un šobrīd nav svarīgi, ka ir pilnīgi neskaidrs, ko nozīmē mums atvērtais skats - pagaidām tikai iziesim cauri OllyDbg dažādajām daļām un funkcijām un dažiem iestatījumiem, lai kad turpmākajās pamācībās ir teikts, teiksim, "iet uz DUMP", jūs vismaz zinājāt, kur šī opcija ir.

Šeit mēs apskatīsim četras OllyDbg galvenā loga daļas:

1) Izjauktais kods

To sauc arī par sarakstu. Šeit Ollija mums parāda izjaukto programmas kodu, kuru mēs atkļūdojam; Pēc noklusējuma Ollie ir konfigurēts analizēt programmu, kad tā tiek atvērta. To var mainīt sadaļā Opcijas -> ATKLĀŠANAS OPTIONS.

Tas ir, ja ir atzīmēta izvēles rūtiņa "AUTO START ANALISIS OF MAIN MODULE", OllyDbg analizēs programmu un parādīs papildu informāciju par to.

Šis ir CrueHead parsēto plaisu saraksta sākums, un, ja mēs to atveram bez parsēšanas, mēs varam redzēt atšķirību.

Analīzes logā ir daudz informācijas, kas, neskatoties uz to, ka mums vēl nav īsti skaidra, izskatās ļoti interesanta. Tajā pašā laikā ir patīkami apzināties, ka to var noņemt jebkurā laikā, ja analīze izrādās ne pārāk precīza vai tajā ir iezagusies kāda kļūda.

Bieži vien OllyDbg dažas programmas daļas parāda nepareizi, jo kļūdaini interpretē izpildāmo kodu kā datus, un pēc tam tiek parādīts kaut kas līdzīgs šim:

Šādā gadījumā jūs varat manuāli noņemt analīzi, ar peles labo pogu noklikšķinot uz saraksta un atlasot “ANALĪZE -> NOŅEMT ANALĪZI NO MODUĻA”.

Un tad saraksts tiks parādīts pareizi.

Vēl viena iespēja, ko varat izmantot, lai atvieglotu lietas un kas man personīgi nepatīk (bet gaumes atšķiras), ir izcelšana un zvana izcelšana — ar peles labo pogu noklikšķiniet uz saraksta un atlasiet “IZSKATS —> IZCELŠANA —> LĒCIENI UN ZVANI”.

Jūs iegūsit sekojošo:

Šeit redzams, ka zvani ir izcelti debeszilā krāsā, bet pārejas – dzeltenā krāsā.

Saraksts tagad ir lasāmāks, taču mums vēl nav ne jausmas, ko tas nozīmē, taču ir labi, ja rīks ir gatavs turpmākai lietošanai.

2) Reģistri

Otrs svarīgais logs ir reģistra logs.

Atgādiniet, ka reģistra logs atrodas OllyDbg labajā pusē, un tajā ir redzams ievērojams informācijas apjoms.

Ir daudz vairāk informācijas, ko mēs neredzam, bet jūs varat iestatīt displeja režīmu uz trīs stāvokļiem (“SKATĪT FPU REĢISTRUS” – rāda FPU reģistrus, “SKATĪT 3D TAGAD REĢISTRUS” – rāda “3D NOW” reģistrus un “SKATĪT ATKLĀŠANAS REĢISTRUS ” — parādīt atkļūdošanas reģistrus). Pēc noklusējuma tiek parādīti pirmie.

3) Salieciet kaudzi vai sakrājiet kaudzi

Tagad pāriesim pie “kaudze vai kaudze”. Šeit nav pārāk daudz konfigurācijas opciju, izņemot iespēju parādīt informāciju par ESP un EBP reģistriem.

Pēc noklusējuma ar ESP saistītās informācijas parādīšanas režīms (un tas ir arī visnoderīgākais), taču to var mainīt uz ar EBP saistītās informācijas parādīšanas režīmu, kuram šajā logā jānoklikšķina ar peles labo pogu un jāizvēlas “ DOTIES UZ EBP”, un turpmāk, izmantojot vienumu “GO TO ESP”, mēs atgriezīsimies iepriekšējā režīmā.

Sīkāk steka funkcionalitāti paskaidrošu turpmākajās nodaļās, taču pagaidām apskatīsim tikai to, ko var mainīt, izmantojot konfigurāciju.

4) Izgāztuve

Izgāztuves logā ir daudz displeja režīmu, kurus var mainīt, noklikšķinot ar peles labo pogu izgāztuves logā un izvēloties vajadzīgo. Noklusējuma režīms ir 8 baitu Hex/ASCII.

Noklusējuma režīms ir arī visbiežāk izmantotais, taču tajā pašā laikā mums ir iespēja to mainīt, lai parādītu izjauktu kodu (DISASSEMBLE), tekstu (TEXT) un citus formātus (ĪSS, LONG, FLOAT).

Un visbeidzot, opcija SPECIAL -> PE HEADER, kas, kā redzēsim nākamajās nodaļās, var būt ļoti noderīga.

Tagad mēs zinām galvenās OllyDbg galvenā loga daļas, taču ir arī logi, kas nav tieši pieejami, bet kurus var izsaukt, izmantojot izvēlni vai vadības paneļa pogas.

Apskatīsim katru no tiem.

Poga L vai VIEW->LOG parāda, ko OllyDbg ieraksta žurnāla logā. To var konfigurēt, lai parādītu dažāda veida informāciju, un pēc noklusējuma žurnāla logā tiek saglabāta visa palaišanas informācija, kā arī informācija, kas saistīta ar BREAKPOINTS NOSACĪJUMA ŽURNĀLĀM. Ar pēdējo tiksimies daudz vēlāk, bet pagaidām apskatīsim informāciju par darbības procesu (mūsu gadījumā tā ir CrueHead kreka) un tajā ielādētajām bibliotēkām.

Viena no svarīgākajām opcijām šajā logā ir pieteikšanās failā, ja mēs vēlamies saglabāt informāciju teksta failā. Lai aktivizētu šo opciju, ar peles labo pogu noklikšķiniet un atlasiet “LOG TO FILE”.

Poga E vai VIEW-> EXECUTABLES parāda mums programmas izmantoto moduļu sarakstu: exe, dll, ocx un citus.

Arī šeit ar peles labo pogu tiek parādītas daudzas iespējas, kuras mēs šobrīd neapskatīsim, bet kuras mēs jau esam redzējuši, izpētot galveno OllyDbg logu.

Poga M vai VIEW->MEMORY parāda mūsu programmas aizņemto atmiņu. Šeit mēs redzam lietojumprogrammas sadaļas, procesa izmantotās bibliotēkas, steku un dažādas sistēmas aizņemtās sadaļas, un bieži vien programmas izpildes laikā aizņem jaunas atmiņas sadaļas.

Noklikšķinot ar peles labo pogu, mēs varam veikt MEKLĒŠANU atmiņā, lai atrastu dažāda veida virknes (tekstu, heksadecimālo, unikoda), ir arī iespēja izcelt pārtraukuma punktus sadaļās, kā arī iespēja mainīt piekļuves tiesības uz pēdējiem ( atlasiet IESTATĪT PIEKĻUVI).

Poga T vai VIEW->THREADS parāda mums programmas pavedienu (pavedienu) sarakstu.

Lai gan tagad mēs nezinām, kas tas ir, un mēs to uzzināsim tikai nākamajās nodaļās, nebūs lieki iepazīties ar katru no logiem. Kā tos izmantot, mēs uzzināsim vēlāk.

Poga W vai VIEW->WINDOWS parāda programmas logus, bet, tā kā tā vēl nedarbojas, logu saraksts paliek tukšs.

Poga H vai VIEW->HANDLES parāda rokturus, vēlāk paskaidrošu, ko tie dara.

Poga C vai VIEW->CPU atgriež mūs galvenajā OllyDbg logā.

Poga / vai VIEW->PATCHES parāda lietoto ielāpu sarakstu, ja programma ir mainīta. Tā kā izmaiņas vēl nav veiktas, logs pagaidām paliek tukšs.

K poga vai VIEW->CALL STACK parāda “zvanu steku” — to zvanu sarakstu, ar kuriem esam saskārušies līdz brīdim, kad programma apstājās.

Poga B vai VIEW->BREAKPOINTS parāda parasto pārtraukuma punktu sarakstu, kas atrodas programmā. Nav aparatūras pārtraukuma punktu vai atmiņas pārtraukuma punktu, ir tikai parastie.

Poga R vai VIEW->REFERENCES parāda atsauču logu, ko saņēmām, meklējot atsauces pakalpojumā Ollie.

Poga “…” vai VIEW->RUN TRACE parāda komandas RUN TRACE rezultātu. Šeit mēs varam arī atlasīt opciju LOG ​​TO FILE, lai saglabātu izsekošanas rezultātus teksta failā.

Mēs esam pārklājuši paneli ar vissvarīgākajām pogām, lai jūs būtu iepazinušies ar to sniegtajām iespējām, kad turpmākajās nodaļās sāksim tajās iedziļināties.

Kā konfigurēt OllyDbg, lai kļūtu par JIT (JUST IN TIME DEBUGGER)

Protams, mēs neizmantosim JIT visu laiku, bet tikai īpašos gadījumos, jo, ja rodas kļūda ar kādu mūsu datorā darbojošos programmu, tad Ollie mums vispār nav jāizmanto (pēc noklusējuma dr.watson ir izmanto kā JIT).

Lai padarītu OllyDbg par JIT atkļūdotāju, jums jāiet uz OPTIONS->JUST IN TIME ATKLĀŠANA

un secīgi nospiediet pogas MAKE OLLYDBG JUST IN TIME DEBUGGER un DONE

Lai noņemtu šo funkciju, tajā pašā vietā jānoklikšķina uz RESTORE JUST IN TIME DEBUGGER un DONE.

Spraudņu savienošana pakalpojumā OllyDbg

OllyDbg ļauj savienot spraudņus, kas var būt noderīgi konkrētas problēmas risināšanai. Pagaidām mēs aprobežosimies ar spraudņa COMMAND BAR pievienošanu, lai uzzinātu, kā to izdarīt.

Lejupielādējiet šo spraudni no šejienes (saite, kas norādīta sākotnējā rakstā, ir mirusi, tāpēc es lejupielādēju spraudni no interneta un ievietoju to vietnē wasm.ru - apm.).

Pēc tam izpakojiet spraudni un apskatiet tās mapes saturu, kurā tas tika izdarīts:

Pirmkārt, jums ir jāizveido mape spraudņiem. Es to izveidošu programmā C:/ un nosaukšu par PLUGINS.

Protams, spraudņi var atrasties jebkur, bet man patīk visu mitināt C. Jebkurā gadījumā tagad mums ir jākonfigurē OllyDbg, lai tas atpazītu šo mapi kā visu spraudņu atrašanās vietu.

Lai to izdarītu, dodieties uz OPTIONS->APPEARANCE.

Atvērtajā logā atveriet cilni DIREKTORIJI.

Mēs redzam, ka ceļš uz spraudņiem ir direktorijs, kurā atrodas pati OllyDbg.exe, un mēs varētu tur ievietot spraudņus, taču man patīk tos turēt atsevišķi un pēc tam noklikšķiniet uz PLAGIN PATH-> BROWSE, lai atrastu mūsu izveidoto mapi. .

Atlasiet mapi PLUGINS un saglabājiet izmaiņas.

Tas ir, jums ir jārestartē Ollie, lai tā atpazītu jauno mapi ar spraudņiem, bet vispirms tajā ir jākopē pēdējais lejupielādētais spraudnis.

Kopējiet visu arhīva saturu mapē PLUGINS.

Tagad visi spraudņa “Command Bar” faili atrodas mapē PLUGINS, un arī pārējie ir jāievieto tajā (bieži vien jūs varat kopēt nevis visus arhīvā esošos failus, bet tikai dll).

Tagad aizveriet OllyDbg, ja tas joprojām bija aizvērts, un palaidiet to vēlreiz. Redzam, ka izvēlnē PLUGINS ir parādījusies KOMANDJOSLA un tās opcijas.

OllyDbg apakšā mēs redzam instalēto KOMANDJOSLU.

Šis ir teksta lauks komandu ievadīšanai, kas mums var noderēt daudzos gadījumos, un vēlāk redzēsim to izmantošanu, bet pagaidām svarīgi ir iemācīties savienot spraudņus.

Lai atinstalētu PLUGIN, vienkārši izdzēsiet atbilstošo dll no mapes PLUGINS un restartējiet OllyDbg, un spraudnis pazudīs. Tomēr ir saprātīgi vienmēr turēt ieslēgtu KOMANDJOSLU.

Atvērsim CrueHead kreka OllyDbg vēlreiz.

Visnoderīgākie OllyDbg taustiņi ir:

F7: izpilda vienu koda rindiņu (ja esam zvanā, dodieties iekšā izsauktajā koda sadaļā)

F8: izpilda vienu koda rindiņu (ja mums ir CALL, tas vienkārši izpilda zvanu, neieejot iekšā un pāriet uz nākamo rindiņu pēc CALL).

Šie divi manuālās izsekošanas veidi ir ļoti atšķirīgi, un kādos gadījumos katru no tiem izmantot, mēs apsvērsim vēlāk.

F2: iestata normālu pārtraukuma punktu uz iezīmētās līnijas. Lai noņemtu šo pārtraukuma punktu, vēlreiz nospiediet taustiņu F2.

Piemēram:

Mēs vēlamies uzstādīt instalācijas punktu pozīcijā 40101A, tāpēc atzīmējam šo līniju ar peli.

Ar vienu peles klikšķi tas tiek atzīmēts un kļūst pelēks kā attēlā. Pēc tam nospiediet taustiņu F2.

Mēs redzam, ka atbilstošā pozīcija pirmajā kolonnā kļūst sarkana, kas norāda, ka šeit ir pārtraukuma punkts. Vēlreiz nospiežot F2, varat to noņemt.

F9: palaiž programmu, kas darbosies, līdz sasniegs pārtraukuma punktu, izdara izņēmumu vai vienkārši pārstāj darboties kāda iemesla dēļ. Kad programma darbojas, OllyDbg apakšējā labajā stūrī tiek parādīts vārds RUNNING.

Palaižot CrueHead's crackme, mēs redzēsim sekojošo:

Lai īslaicīgi apturētu programmas darbību, nospiediet F12 vai DEBUG->PAUSE.

Mēs redzam, ka OllyDbg parāda vārdu PAUSED. Varat turpināt programmas darbību, nospiežot F9 vai DEBUG->RUN.

Lai aizvērtu programmu, kurā tiek veikta atkļūdošana, atlasiet DEBUG->CLOSE.

Šis ir ātrs OllyDbg pārskats, un turpmākajās nodaļās mēs turpināsim padziļināti izpētīt tās daudzās iespējas un iespējas. Galvenais ir lejupielādēt programmu, konfigurēt to, vēlreiz apskatīt visu, kas tika apspriests šajā apmācībā, pievienot arī spraudni, sākt un apturēt CrueHead kreka, mēģināt iestatīt pārtraukuma punktus, lai nākamajā nodaļā visas šīs lietas netiktu radīt problēmas un šaubas. Rikardo Narvaja, tulk. Akvila

Smilšu kaste

jauns spēlētājs 2016. gada 7. janvārī plkst. 13:36

Pamati darbam ar OllyDebug, izmantojot arhivētāja “ārstēšanas” piemēru

  • Montētājs

Šodien es jums parādīšu, kā jūs varat izmantot "Olka", lai "izārstētu" vienu slavenu arhivētāju. Šim nolūkam mums ir nepieciešams: OllyDBG, “CommandBar” spraudnis.

Mēs instalējam arhivētāju, pēc 40 dienām mēs redzam attēlu:


Pirmā lieta, kas nāk prātā, ir mainīt licences pārbaudi vai programmas lietošanas ilguma čeku. Izvēlēsimies vienkāršāko ceļu – meklējiet WinAPI funkciju, kas saņem pašreizējo GetLocalTime. Konteksta izvēlnē atlasiet

Meklēt -> Vārds (iezīme) pašreizējā modulī.


Meklējam ar laiku saistītas funkcijas, ak, lūk, gandrīz palaidām garām.

Tagad šai funkcijai ir jāiestata pārtraukuma punkts. CommandBar spraudņa logā ievadiet

un tagad, kad mēs izsaucam šo funkciju, mūsu atkļūdotājs apstāsies mums vajadzīgajā vietā.

Mēs sākam atkļūdošanu, taustiņu F9. Mūsu pārtraukuma punkts tika veiksmīgi izpildīts un mēs atradāmies GetLocalTime funkcijas sākumā, nokļūstam šīs funkcijas izejas punktā (Ctr+F9), speram vienu soli (F7). Te redzam, ka pēc laika saņemšanas tiek izsaukta funkcija adresē 004B8C00, iesaku tajā iedziļināties un paskatīties, kas tur varētu būt interesants, izmantojam soli ar ierakstu (F7).

Mēs redzam labvēlīgas pazīmes.

Mēs izsekojam programmu, izmantojot F8, pirms pārbaudes adresē 004B8C26, novērojam TEST AL, AL.

Atgādināšu, ka AL ir EAX zemais reģistrs, tagad mums tas ir tukšs. Komanda TEST AL,AL pārbauda, ​​vai AL reģistrs ir vienāds ar nulli, ja tas ir vienāds, tiks ieslēgts ZF karogs. Nākamā komanda JE SHORT 004B8C44, nosūta uz adresi 004B8C44, ja ir ieslēgts ZF karogs. Es ierosinu noņemt šo pārejas pārbaudi. Nospiediet atstarpes taustiņu un ievadiet nop, nospiediet Assemble vairākas reizes, līdz šīs divas komandas ir nolietotas.

Mēs sākam atkļūdošanu (F9) un redzam, ka esam atkal apstājušies mūsu pārtraukuma punktā, noņemsim to (F2) un turpināsim atkļūdošanu vēlreiz (F9). Tagad redzam, ka nekas neliedz strādāt un reģistrācijas laukā ir uzraksts, ka programma ir reģistrēta.

Birkas: Reversā inženierija, Assembler, OllyDebug

Šis raksts nav komentējams, jo tā autors vēl nav pilntiesīgs kopienas loceklis. Ar autoru varēs sazināties tikai pēc tam, kad viņš saņems