Mitä ovat Discmblers ja Decomplilers?

Analysoimalla omia ohjelmistoja ilman pääsyä lähdekoodiin vaatii usein erikoistyökaluja. Discassemblerit ja dekompplilerit ovat kaksi luokkaa käänteisen suunnittelun työkaluja, joiden avulla tutkijat, tietoturva-analyytikot ja kehittäjät voivat tutkia suoritettavia binäärit eri tasoilla abstraktio. A disastembler[] lukee konekoodin ja kääntää sen ihmisen luettavaksi kokoonpanokieleksi, paljastaa matalan tason ohjeet, joita prosessori suorittaa. A dekomppliler[[] menee askel pidemmälle yrittäessään rekonstruktioida korkeamman tason ohjelmointikielen edustusta, kuten C tai pseudokoodia, kootusta binääristä. Vaikka kumpikaan työkalu ei tuotakaan samaa lähtöä alkuperäisen lähteen kanssa, jokainen antaa kriittisen käsityksen siitä, miten oma ohjelmisto toimii sisäisesti.

Miten Disassemblers toimii

Dissassemblers toimii suoraan binääritiedostoissa.PE, ELF, Mach-O tai raakafirmware kuvien . Yhdistämällä ohjeet ja kartoittamalla niitä niiden kokoonpanomuistoja. Prosessi perustuu prosessorin ohjeset arkkitehtuuri (ISA), kuten x86, ARM tai MIPS. Disassemblers käyttää joko lineaarinen lakaisu (askeleet koodin sekvenssi) tai rekursiivinen traversaali (seuraava ohjausvirta) dekoodata ohjeita. Rekursio dissorptio on tarkempi käsitellä koodia yhdistettynä datan tai obfuscated structures. Moderni disassembers kuten IDA Pro ja Ghidra] myös tunnistaa funktion rajat, tunnistaa kirjastopuhelut, ja näytön ristiviittaukset, suuresti apua analyysi.

Miten hajottimet toimivat

Decomperit yhdistävät purkamisen analyysipassit nostaa abstraktiotasoa. Ensinnäkin ne hajottaa binääri. Sitten ne suorittavat ohjaus-flow analyysi rakentaa ohjausvirtakäyrä (CFG) ja data-flow analyysi seurata muuttujan käyttöä ja tyyppejä. Mallin vastaavuus ja heuristics sovelletaan rekonstruoida tyypillinen korkean tason rakenne: silmukat, jos-n-else lohkot, kytkin lausuntoja, ja toimintopuhelut. Tulos on yleensä jäsennelty, luettava muoto kuten C-like pseudocode. Yksikään dekompiler ei voi täysin palauttaa menetettyjä kommentteja, paikallisia vaihtelevia nimiä tai alkuperäinen koodirakenne, mutta työkaluja kuten Hex-Rays Decompiler] (plugin IDA Pro) ja Ghidra....

Purkukoneiden ja romuttajien käyttö käytännössä

Turvallisuusanalyysi ja haavoittuvuustutkimus

Turvallisuus ammattilaiset käyttävät rutiininomaisesti disassemblers ja decompilers tarkastaa oman ohjelmiston heikkouksia. Tutkimalla binary, he voivat tunnistaa muistin korruptio vikoja, väärä syöte validointi, tai kovakoodatut valtuudet. Huomattavia tapahtumia. Kuten löytö Heartbleed haavoittuvuus OpenSSL tai takaovet firmware.often alkoi binary analyysi. Decompliled koodi auttaa analyytikot ymmärtävät logiikan monimutkaisia toimintoja tuijottamatta kokoonpano sivuja.

Haittaohjelmien analysointi

Haittaohjelmat näytteet eivät juuri koskaan jaeta lähdekoodilla. Analysaattorit luottavat disselgereihin ymmärtääkseen pahansuopa hyötykuorma, tunnistaakseen salausrutiineja ja jäljittääkseen komento- ja-ohjauskomentoa. Hajottimet nopeuttavat tätä työtä muuntamalla obfuscated binary blobs hallittavissa olevaksi pseudocode-esittelyksi. Työkalut kuten [Radare2[ ja Ghidra[ ovat erityisen suosittuja tällä alueella, koska ne ovat vapaita ja erittäin.

Löytää kadonneen tai periytyvän lähdekoodin

Muinaisten ohjelmistojen ylläpitoorganisaatiot menettävät joskus alkuperäisen lähteen huonon versionhallinnan tai henkilöstön vaihtuvuuden vuoksi. Hajoaminen voi auttaa korjaamaan koodipohjan toiminnallista vastinetta, jolloin huolto tai siirtäminen nykyaikaisille alustoille on mahdollista. Vaikka hajonnut tuotos saattaa vaatia merkittävää puhdistusta, se tarjoaa lähtökohdan, jota muuten olisi mahdotonta saada.

Oppimisoppimisoppimisoppimiset ja yhteentoimivuus

Kilpailijat tai avoimen lähdekoodin projektit saattavat joutua toimimaan yhteistyössä omistusoikeudellisten protokollien tai tiedostoformaattien kanssa. Asiaan liittyvien binäärien purkaminen paljastaa algoritmin rakenteen, tietoformaatteja ja valtion koneita. Tämä on yleistä kehitettäessä yhteensopivia pudotus-in korvaavia ohjelmistoja. Samoin kehittäjien, jotka haluavat kirjoittaa plugins-ohjelmia tai laajentaa suljettuja lähdetiedostosovelluksia, on usein käännettävä binaarilinkkejä.

Suositut purku- ja purkulaitteet

IDA Pro (Interaktiivinen disassembler)

IDA Pro on de facto standardi binary analyysi. Se tukee kymmeniä CPU arkkitehtuurit, tarjoaa tehokkaan skripti käyttöliittymän (IDAPython), ja integroituu Hex-Rays decompiler plugin. Sen ristiviittaukset, kaavion näkymät, ja debuggeri tehdä kattava alusta sekä purkamiseen ja purkamiseen. IDA on kaupallinen ohjelmisto, mutta ilmaisohjelmistoversio (IDA Free) on saatavilla rajoitettuun käyttöön.

Ghidra

Ghidran kehittämä ja avoimena lähteenä julkaistu Ghidra kilpailee IDA:n kanssa monessa suhteessa. Se sisältää sisäänrakennetun hajotusaineen, ohjelmoitavan API:n (Python tai Java) ja yhteistyöanalyysiominaisuudet. Ghidra. Ghidran purkukone on erityisen vahva x86:lle, ARM:lle ja PowerPC:lle. Se on ilmainen käyttää ja sillä on suuri plugin-kehittäjien yhteisö. Lisätietoja saat [Ghidran viralliselta sivustolta[.

Tutka 2

Tutka2 on komentorivivetoinen käänteistekniikkajärjestelmä, joka tarjoaa purkua, hajoamista ([ tai [ liitännäisten kautta) ja vianetsintäominaisuuksia. Se on erittäin modulaarinen ja skriptoitu, mikä tekee siitä ihanteellisen automaatiolle ja integraatiolle suurempiin analyysiputkiin. Tutka2 on vapaa ja avoin lähde.

Hex-Rays-dekompellier

Hex-Rays on kaupallinen hajotusaine plugin IDA Pro, joka tukee x86, x64, ARM, ja PowerPC. Se tuottaa huomattavan puhdas C-tyyppinen pseudokoodi ja pidetään yleisesti tarkin hajotusaine saatavilla. Monet turvallisuusyritykset ja haavoittuvuus tutkijat pitävät Hex-Rays olennaisen tärkeää työnkulkua.

Muut merkittävät työkalut

  • Hopper[ (macOS ja Linux) ... tarjoaa sekä purkua että purkua käyttäjäystävällisen käyttöliittymän kanssa.
  • Binary Ninja[ . Moderni käänteistekniikka alusta, jossa keskitytään käytettävyyteen ja vahvaan välikieleen.
  • ]objdump[ ja readelf (GNU binutils) .

Haasteet ja rajoitukset

Koodattu koodikompleksisuus

Koostaja optimointi (inlining, silmukan kiertymättömyys, jatkuva taittuminen) tuottaa koneen koodin, joka poikkeaa merkittävästi alkuperäisestä lähteestä. Hajoajien on rekonstruoitava korkean tason semantiikkaa matalan tason sekvensseistä, mikä voi johtaa moniselitteiseen tai virheelliseen lähtöön. Edistyneet obfuscation tekniikat.

Laillisuus ja lisenssit

Käänteistekniikan omistamat ohjelmistot ovat oikeudellisesti rajoitettuja monilla lainkäyttöalueilla. Digital Millennium Copyright Act (DMCA) Yhdysvalloissa, EU Copyright Directive ja vastaavat lait maailmanlaajuisesti sisältävät säännöksiä, jotka voivat vapauttaa käänteisen suunnittelun yhteentoimivuuden, turvallisuustutkimuksen tai koulutuksen, mutta rajat vaihtelevat. Aina kuulla oikeudellista neuvonantajaa ennen kuin purkaa tai hajottaa tuotteen, jota et omista tai ole lupa analysoida. Hyödyllinen resurssi on Electronic Frontier Foundationin yleiskatsaus DMCA poikkeuksia[.

Epätäydellinen tuloste

Purkajat eivät pysty käsittelemään kaikkia koodipolkuja (esim. epäsuorat hypyt tietokoneiden kautta), ja hajottajat eivät välttämättä pysty rekonstruoimaan monimutkaisia datarakenteita tai inline-toimintoja. Lähtö vaatii usein manuaalista korjausta ja näppäintä. Kokeneet analyytikot kehittävät ohjelman mielenterveyden malleja vaihtamalla osiin ja hajotettuihin näkökantoihin.

Oikeudellinen ja eettinen kehys

Käyttämällä disassemblereita ja hajottajia ilman lupaa voi rikkoa sopimuksia tai tekijänoikeuslakeja. Kuitenkin useita laillisia turvallisia satamat ovat olemassa. Turvallisuustutkijat ovat yleensä suojattuja suorittaessa hyvän uskon haavoittuvuustutkimus, kuten Yhdysvaltain Cybersecurity Information Sharing Act (CISA) ja ohjeet oikeusministeriön. Euroopan unioni. Direktiivi tekijänoikeudesta digitaalisilla sisämarkkinoilla mahdollistaa käänteisen suunnittelun yhteentoimivuuden, kunhan työkaluja ei käytetä laittomiin tarkoituksiin. Lisäksi ... airair-käyttö. opin Yhdysvalloissa voi kattaa hajoamisen analysointia, koulutusta tai parodia.

Eettinen käyttö edellyttää ohjelmiston luojan oikeuksien kunnioittamista. Älä käytä uutettua koodia kopioidaksesi tuotekohtaisia toimintoja, äläkä julkaise luottamuksellisia algoritmia ilman lupaa. Alan parhaat käytännöt kannustavat paljastamaan vastuullisesti takautuvan suunnittelun kautta havaitut haavoittuvuudet.

Jos haluat syvemmälle sukeltaa oikeudellisia näkökohtia, harkitse lukemista []S Copyright Office.S Fair Use Index ja []CISA teksti[.

Purkamisen ja purkamisen tulevat suuntaukset

Koneoppimisen tehostettu analyysi

Viimeaikainen tutkimus käyttää hermoverkkoja toimintojen luokittelemiseen, muuttuvien tyyppien tunnistamiseen ja jopa binääristen snippejen hajottamiseen suoraan korkean tason kieliselonteoksiin. Vaikka AI-avusteinen käänteistekniikka on kokeellinen, se lupaa nopeuttaa obfuscated- tai isojen binäärien analysointia.

Platformin kattavuuden parantaminen

Uusia ohjekokonaisuuksia (RISC-V, WebAssembly jne.) syntyy, ja ne ovat myös mukana. Esimerkiksi Ghidra tukee jo yli 30:tä arkkitehtuuria ja yhteisö osallistuu IoT-mikro-ohjaimiin ja blockchain virtuaalikoneisiin.

Pilviyhteistyö

Työkalut kuten Binary Ninja... pilvianalyysi ja Ghidra... jaetut projektitiedostot mahdollistavat hajautetut käänteistekniikkatiimit. Tämä suuntaus heijastaa laajempaa siirtymistä kohti yhteistyöohjelmistojen kehittämistä ja on erityisen hyödyllinen suurten, monimutkaisten rikkomusten tai haittaohjelmien kampanjoiden analysoinnissa.

Päätelmät

Disassemblerit ja dekomploytit ovat välttämättömiä välineitä, jotta ne voivat saada näkyvyyttä omiin ohjelmistoihin. Ne mahdollistavat tietoturvaauditoinnin, haittaohjelmien analysoinnin, koodin palautuksen ja yhteentoimivuuden ilman alkuperäisen lähdekoodin käyttöä. IDA Pro, Ghidra, Radare2, ja Hex-Rays tarjoavat kukin erillisiä etuja, ja avoimen lähdekoodin yhteisö jatkaa näiden tehokkaiden työkalujen demokratisointia. Käyttäjien on kuitenkin ohjattava huolellisesti oikeudellisia ja eettisiä rajoituksia. Kun niitä käytetään vastuullisesti, purkaminen ja hajottaminen antavat analyytikoille mahdollisuuden paljastaa piileviä haavoittuvuuksia, ymmärtää omistusoikeudellisia algoritmeja ja säilyttää tieto, joka on lukittu perinteisiin binääriin.