Ce sunt dezagregatorii şi decompilatorii?

Analiza software-ului propriu fără acces la codul său sursă necesită adesea instrumente specializate. Dezasamblatorii și decompilerii sunt două categorii de instrumente de inginerie inversă care permit cercetătorilor, analiștilor de securitate și dezvoltatorilor să examineze binarele executabile la diferite niveluri de abstractizare. A dezasamblor citește codul mașinii și îl traduce în limbajul de asamblare lizibil uman, expunând instrucțiunile de nivel scăzut pe care procesorul le execută. A compilerul merge un pas mai departe prin încercarea de a reconstrui o reprezentare lingvistică de programare la nivel înalt, cum ar fi C sau pseudocode, din binarul compilat. În timp ce nici un instrument nu produce ieșire identică cu sursa originală, fiecare oferă o perspectivă critică asupra modului în care software-ul brevetat funcționează intern.

Cum acţionează dezagregatorii

Dezagregatorii operează direct pe fişiere binare . Procesul se bazează pe structura de instruire procesor (ISA), cum ar fi x86, ARM, sau MIPS. Dezagregatorii folosesc fie matura liniară (pasa prin cod secvenţial) sau transversivă (urmând fluxul de control) pentru a decoda instrucţiunile. Demontarea recursive este mai exactă pentru manipularea codului amestecat cu datele sau construcţiile obfuzate. Dezagregatoarele moderne, cum ar fi ]IDA Pro şi ]Ghidra detectează de asemenea limite ale funcţiei, identifică apelurile bibliotecii şi afişează referinţe încrucişate, analize de asistenţă.

Cum acţionează decompilatorii

Decompilerii combină demontarea cu trecerile de analiză pentru a ridica nivelul de abstractizare. În primul rând, ei dezasamblează binarul. Apoi efectuează analiza fluxului de control pentru a construi un grafic de control (CFG) și analiza fluxului de date pentru a urmări utilizarea și tipurile variabile. Nu se aplică potrivirea tip și euristicile pentru a reconstrui structuri tipice de nivel înalt: bucle, dacă-atunci-blocuri, comuta declarații și apeluri de funcții. Ieșirea este de obicei o formă structurată, lizibilă ca pseudocod C. Nici un decompiler nu poate recupera perfect comentariile pierdute, nume variabile locale, sau structura de cod original, dar instrumente precum ]Hex-Rays Decompiler (plugin pentru IDA Pro) și Ghidras built-in decompiler produce rezultate surprinzător exacte.

Folosirea de dezagregatori şi decompilatori în practică

Analiza de securitate și cercetarea vulnerabilității

Profesioniștii de securitate folosesc în mod obișnuit demontoare și decompilere pentru a audita software-ul de proprietate pentru slăbiciuni. Prin examinarea binar, ei pot identifica bug-uri de corupție de memorie, validarea de intrare necorespunzătoare, sau acreditări hardcoded. Incidente notabile . Cum ar fi descoperirea de vulnerabilitate Heartbleed în OpenSSL sau backdoors în firmware . De multe ori, a început cu analiza binară. Cod decompilat ajută analiștii să înțeleagă logica funcțiilor complexe fără a se holba la paginile de asamblare.

Analiza malware-ului

Mostrele de malware sunt aproape niciodată distribuite cu codul sursă. Analiştii se bazează pe dezagregatori pentru a înţelege sarcina utilă malefică, pentru a identifica rutinele de criptare şi pentru a urmări comunicaţiile de comandă şi control. Decompilatorii accelerează această lucrare prin transformarea blocurilor binare obfuscate într-o reprezentare pseudocod mai uşor de gestionat. Instrumente precum Radare2 şi Ghidra sunt deosebit de populare în această zonă, deoarece sunt libere şi extensibile.

Codul sursă pierdută sau moștenitoare

Organizaţiile care menţin software-ul antic uneori pierde sursa originală din cauza controlului slab versiune sau cifra de afaceri a personalului. Decompilarea poate ajuta la reconstruirea unui echivalent funcţional al bazei de cod, permiţând întreţinerea sau portarea pe platforme moderne. Deşi ieşirea decompilat poate necesita curăţare semnificativă, aceasta oferă un punct de pornire care altfel ar fi imposibil de obţinut.

Algoritmile și interoperabilitatea propriilor activități de învățare

Concurenții sau proiectele open-source pot avea nevoie de a interopera cu protocoale de proprietate sau formate de fișiere. Dezasamblarea binarelor relevante dezvăluie structura algoritmului, formatele de date și mașinile de stat. Acest lucru este comun în dezvoltarea unor înlocuiri compatibile drop-in pentru software-ul moștenitor. În mod similar, dezvoltatorii care doresc să scrie plugin-uri sau să extindă aplicațiile cu sursă închisă trebuie să inverseze adesea interfețe binare cu inginerul.

Dezagregatoare și decompilatoare populare

IDA Pro (Dezastru interactiv)

IDA Pro este standardul de facto pentru analiza binară. Acesta susține zeci de arhitecturi CPU, oferă o interfață puternică de scripting (IDAPython), și se integrează cu plugin-ul decompiler Hex-Rays. Referințele sale încrucișate, vizualizarea grafică și depanatorul o fac o platformă cuprinzătoare atât pentru dezasamblare cât și pentru decompilare. IDA este software comercial, dar o versiune freeware (IDA Free) este disponibilă pentru utilizare limitată.

Ghidra

Dezvoltat de Agenția Națională de Securitate și lansat ca sursă deschisă, Ghidra rivals IDA în multe privințe. Acesta include un decompiler încorporat, un programabil API (Python sau Java) și caracteristici de analiză colaborativă. Decompiler Ghidras este deosebit de puternic pentru x86, ARM, și binare PowerPC. Este liber să folosească și are o comunitate mare de dezvoltatori de plugin. Pentru mai multe informații, a se vedea Ghidra site-ul oficial.

Radar 2color

Radar2 este un cadru de inginerie inversă condus de comandă care oferă dezasamblare, decompilare (prin intermediul ] sau ] și capabilități de depanare. Este extrem de modular și scriptabil, ceea ce îl face ideal pentru automatizare și integrare în conducte de analiză mai mari. Radar2 este gratuit și open source.

Decompiler cu raze hex

Hex-Rays este un plugin decompiler comercial pentru IDA Pro care suportă x86, x64, ARM, și PowerPC. Acesta produce un pseudocod C-deosebit de curat și este considerat pe scară largă ca fiind cel mai precis decompiler disponibil. Multe firme de securitate și cercetători de vulnerabilitate consideră Hex-Rays esențiale pentru fluxurile lor de lucru.

Alte instrumente notabile

  • Hopper (macOS și Linux)
  • Binar Ninja
  • objdump și readelf (Binutils GNU)

Provocări şi limitări

Complexitate cod compilat

Optimizările Compiler (inlining, bucla unrolling, pliere constantă) produc cod mașină care se diferențiază semnificativ de la sursa originală. Decompilatorii trebuie să reconstituie semantica de nivel înalt de secvențe de nivel scăzut, care poate duce la o ieșire ambiguă sau incorectă. Tehnici avansate de obfuscare . Cum ar fi ambalaje bazate pe virtualizare, control-flux aplatizare, și predicates vulgare analiza.

Legalitatea și autorizarea

Ingineria inversă software-ul de proprietate este restricţionat legal în multe jurisdicţii. Digital Millennium Copyright Act (DMCA) în Statele Unite, Directiva UE privind drepturile de autor, şi legi similare din întreaga lume conţin prevederi care pot scuti ingineria inversă pentru interoperabilitate, cercetare de securitate sau educaţie, dar limitele variază. Consultaţi întotdeauna consiliere juridică înainte de a demonta sau decompilarea unui produs pe care nu aveţi sau au permisiunea să-l analizaţi. O resursă utilă este Fundaţia de Urgenţă Interzisă de la DMCA sumar al excepţiilor.

Ieșire incompletă

Dezagregatorii nu pot gestiona toate căile de cod (de exemplu, salturi indirecte prin adrese calculate), iar decompilatorii pot să nu reușească să reconstruiască structuri complexe de date sau funcții de linie. De ieșire necesită adesea corecție manuală și adnotare. analiști experimentați dezvoltă modele mentale ale programului prin alternarea între vederi demontate și decompilate.

Cadrul juridic și etic

Folosind demontatorii și decompilatorii fără autorizație pot încălca contracte sau legile privind drepturile de autor. Cu toate acestea, există mai multe porturi legale sigure. Cercetătorii în domeniul securității sunt în general protejați atunci când efectuează cercetări de vulnerabilitate bună-credință, astfel cum este recunoscut prin Legea privind partajarea informațiilor în materie de securitate cibernetică (CISA) și orientările Departamentului de Justiție. Directiva Uniunii Europene privind drepturile de autor în piața unică digitală permite ingineria inversă pentru interoperabilitate, atâta timp cât instrumentele nu sunt utilizate în scopuri ilegale. În plus, doctrina privind utilizarea echitabilă în SUA poate acoperi decompilarea pentru analiză, educație sau parodie.

Utilizarea etică necesită respect pentru drepturile creatorului software. Nu utilizaţi codul extras pentru a replica un produs de bază funcţionalitatea exactă, şi nu publica algoritmi confidenţiale de proprietate fără permisiune. Cele mai bune practici industriale încurajează dezvăluirea responsabilă a vulnerabilităţilor găsite prin inginerie inversă.

Pentru o scufundare mai profundă în aspectele juridice, să ia în considerare citirea S. Office Copyright

Tendinţe viitoare în dezasamblare şi descompunere

Analiza îmbunătățită a procesului de învățare a mașinilor

Cercetări recente utilizează rețele neurale pentru a clasifica funcții, a identifica tipuri variabile, și chiar a decompila fragmente binare direct în declarații lingvistice de nivel înalt. În timp ce încă experimentale, AI-asisted inginerie inversă promite să accelereze analiza binare obfuscate sau mari.

Îmbunătățirea acoperirii platformei

Pe măsură ce apar noi seturi de instrucțiuni (RISC-V, WebAssembly etc.), dezvoltatorii de demontare și decompiler adaugă sprijin. Ghidra, de exemplu, sprijină deja peste 30 de arhitecturi, iar contribuțiile comunității își extind ajungerea la microcontrolere IoT și mașini virtuale din blockchain.

Colaborare bazată pe cloud

Instrumente precum binar Ninja

Concluzie

Dezagregatorii și decompilatorii sunt instrumente indispensabile pentru a obține vizibilitate în software-ul de proprietate. Ele permit auditarea de securitate, analiza malware, recuperarea de coduri și interoperabilitatea fără acces la codul sursă original. IDA Pro, Ghidra, Radare2 și Hex-Rays fiecare oferă avantaje distincte, iar comunitatea open-source continuă să democratizeze aceste instrumente puternice. Cu toate acestea, utilizatorii trebuie să navigheze cu atenție constrângeri juridice și etice. Atunci când sunt utilizați în mod responsabil, dezasamblare și decompilare, analiștii pot descoperi vulnerabilități ascunse, înțelege algoritmi de proprietate proprie, și să păstreze cunoștințele blocate în binare moștenite .