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.
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 -> HelloMikä 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 0x00401a55Kutsukaaviot 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 recvUudelleennimeä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 toPikakysymys
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
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
- Johdatus disassembler-ohjelmiin
- Funktioiden ja datan tunnistaminen
- Ohjausvuokaavioiden analysointi
- Merkkijono- ja ristiviiteanalyysi