Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet · Oppitunti

Merkkijono- ja ristiviiteanalyysi

Käytä merkkijonoja ja ristiviitteitä (xrefs) nopeana väylänä binäärin tarkoituksen ymmärtämiseen sekä koodin ja datan välillä navigointiin.

Oppitunti 4/413 vaihetta

Merkkijono- ja ristiviiteanalyysi on ilmainen Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-kurssilla on yhteensä 4 oppituntia.

Merkkijonot ovat vihjeitä

Osaatte purkaa koodia, tunnistaa funktioita ja lukea ohjausvuokaavioita. Yksi nopeimmista tavoista hahmottaa tuntematonta binaaria on lukea sen merkkijonot.

Virheilmoitukset, URL-osoitteet, tiedostopolut ja formaattimääritteet paljastavat tarkoituksen ennen kuin luette yhtäkään käskyä.

Merkkijonojen poimiminen

Klassinen komentorivityökalu tulostaa tulostettavissa olevat merkkijonojaksot. Ghidran ja IDA:n kaltaisissa disassemblereissa on erillinen Strings-ikkuna osoitteineen.

strings -a -n 5 target.bin
strings -e l target.bin   # 16-bit little-endian (UTF-16)

ASCII- ja wide-merkkijonot

Windows-binaarit tallentavat tekstin usein UTF-16-merkkijonoina (wide), joissa kukin merkki vie kaksi tavua. Yksinkertainen ASCII-haku ei löydä niitä.

Tarkistakaa aina molemmat koodaukset; wide-merkkijonojen puuttuminen piilottaa puolet todisteista.

ASCII:  48 65 6C 6C 6F          -> Hello
UTF-16: 48 00 65 00 6C 00 6C 00 -> Hello

Mikä on ristiviittaus?

Ristiviittaus (xref) yhdistää sijainnin kaikkiin paikkoihin, joissa siihen viitataan.

  • Koodin xref: käsky, joka hyppää tähän tai kutsuu tätä
  • Datan xref: käsky, joka lukee tästä osoitteesta tai kirjoittaa siihen

Merkkijonosta koodiin

Tehokas toimintatapa on etsiä kiinnostava merkkijono ja seurata sitten sen datan xref-ristiviittausta sitä käyttävään koodiin.

Kun löydätte merkkijonon 'Invalid license key' ja siirrytte sen xref-ristiviittaukseen, päädytte usein suoraan lisenssin tarkistukseen.

; In Ghidra: right-click string -> References -> shows
; FUN_00401a30 loads this string at 0x00401a55

Kutsukaaviot xref-ristiviittauksista

Xref-ristiviittaukset kuvaavat myös funktioiden välisiä suhteita. Kun luette, ketkä kutsuvat funktiota (callers) ja mitä funktioita se kutsuu (callees), muodostuu kutsukaavio.

Se näyttää, miten tärkeä rutiini liittyy ohjelman kokonaisrakenteeseen.

Tuonnit ankkureina

API-tuonnit ovat arvokkaita xref-kohteita. Etsikää tuonti kohteelle connect tai CreateFileW ja käyttäkää sitten xref-ristiviittausta kaikkien verkko- tai tiedostorutiinien paikantamiseen.

Näin analyysi voidaan kohdistaa kiinnostavaan toimintaan.

; xrefs to 'recv' reveal all network read sites
0x00402100 call recv
0x004023f0 call recv

Uudelleennimeäminen ja kommentointi

Kun xref-ristiviittaukset paljastavat tarkoituksen, nimetkää funktiot uudelleen ja lisätkää kommentteja. FUN_00401a30 muuttuu muotoon check_license.

Hyvät nimet kertaavat hyötynsä: jokainen tuleva xref-ristiviittaus näkyy nyt merkityksellisenä pseudokoodina.

Harhaanjohtavat merkkijonot

Olkaa varovaisia: merkkijonot voivat olla harhautuksia, kuollutta koodia tai kirjaston vakiokoodia. Merkkijonon olemassaolo ei todista, että toiminto on saavutettavissa.

Varmistakaa xref-ristiviittauksilla, että aktiivinen koodi todella viittaa merkkijonoon.

Salatut tai obfuskoidut merkkijonot

Haittaohjelmat piilottavat merkkijonoja usein purkamalla ne suorituksen aikana. Jos strings näyttää enimmäkseen siansaksaa, etsikää pieniä purkurutiineja, joihin viitataan kaikkialta; kyseessä on merkkijonojen purkaja.

Sen tunnistaminen avaa tien muun analyysin tekemiseen.

Liikkuminen xref-luetteloiden avulla

Disassemblerit mahdollistavat xref-ristiviittausten seuraamisen vuorovaikutteisesti. Kun painatte xref-pikanäppäintä funktion kohdalla, näette kaikki kutsujat ja voitte kulkea ketjua ylöspäin kohteeseen main.

Näin tasainen osoiteluettelo muuttuu ohjelmassa navigoitavaksi kartaksi.

; IDA: place cursor on function, press X
; Ghidra: right-click -> References -> Show References to

Pikakysymys

Löysitte merkkijonon 'Invalid license key'. Mikä on tehokkain seuraava vaihe lisenssin tarkistuslogiikkaan pääsemiseksi?

Kertaus

Merkkijonot ja xref-viittaukset ovat staattisen analyysin supervoima:

  • Poimi ASCII- ja UTF-16-merkkijonot saadaksesi kontekstia heti
  • Seuraa merkkijonoista lähteviä data-xref-viittauksia keskeiseen koodiin
  • Käytä import-xref-viittauksia ja kutsukaavioita rakenteen kartoittamiseen
  • Varo harhaanjohtavia syöttejä ja lennossa tehtävää merkkijonojen salauksen purkua
Aloita maksutta

Opi Assembly tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Merkkijono- ja ristiviiteanalyysi” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-oppimispolun 3 oppituntia, myös oppitunnin “Merkkijono- ja ristiviiteanalyysi”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Merkkijono- ja ristiviiteanalyysi”?

Käytä merkkijonoja ja ristiviitteitä (xrefs) nopeana väylänä binäärin tarkoituksen ymmärtämiseen sekä koodin ja datan välillä navigointiin. Harjoittelet Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Merkkijono- ja ristiviiteanalyysi”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-oppitunnilla?

Kyllä. Jokainen Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Johdatus disassembler-ohjelmiin
  2. Funktioiden ja datan tunnistaminen
  3. Ohjausvuokaavioiden analysointi
  4. Merkkijono- ja ristiviiteanalyysi
← Takaisin: Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet