x86/x64-assemblyn perusteet
Tutustukaa x86- ja x64-assembly-kielten keskeisiin käskyihin ja syntaksiin.
x86/x64-assemblyn perusteet on ilmainen Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-oppitunti CoddyKitissä. Tämä on oppitunti 1/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.
Mitä konekieli on?
Tervetuloa konekielen maailmaan! Se on matalimman tason ohjelmointikieli, jota ihmiset yleensä lukevat ja kirjoittavat.
Se on konekoodin symbolinen esitysmuoto. Konekoodi koostuu raaoista binäärikäskyistä, joita tietokoneen suoritin (CPU) ymmärtää ja suorittaa suoraan. Voit ajatella sitä CPU:n äidinkielenä.
Takaisinmallinnuksen matalan tason näkymä
Takaisinmallintajille konekielen ymmärtäminen on olennaista. Kun analysoit käännettyä ohjelmaa, alkuperäistä lähdekoodia on harvoin saatavilla.
Sen sijaan tarkastelet ohjelman konekieliesitystä. Konekielen oppiminen auttaa sinua:
- ymmärtämään täsmälleen, miten ohjelma suoritetaan
- tunnistamaan funktioita, dataa ja ohjausvuota
- paljastamaan piilotettuja toimintoja tai haavoittuvuuksia
x86 vs x64: ero
Kun puhumme x86/x64-konekielestä, tarkoitamme Intelin ja AMD:n suorittimien käskykantoja. Tärkein ero on arkkitehtuurin "leveys":
- x86: Tarkoittaa 32-bittistä arkkitehtuuria.
- x64: Tarkoittaa 64-bittistä arkkitehtuuria, josta käytetään myös nimiä AMD64 ja Intel 64.
x64 tuo mukanaan enemmän rekistereitä ja leveämmät dataväylät, mutta monet peruskäskyt ovat edelleen samanlaisia, usein laajennettuina versioina.
Käskyn perusmuoto
Assembly-ohjeet noudattavat yleensä yksinkertaista muotoa: INSTRUCTION destination, source.
- INSTRUCTION: Suoritettava toiminto (esimerkiksi siirto, yhteenlasku tai vähennyslasku).
- destination: Sijainti, johon toiminnon tulos tallennetaan.
- source: Tiedot tai sijainti, johon toiminto kohdistuu.
Joillakin ohjeilla voi olla yksi operandi tai ei yhtään operandia. Järjestys (destination, source) on yleinen Intel-syntaksissa, jota käytämme tässä.
MOV-ohje
MOV-ohje on yksi perustavanlaatuisimmista ohjeista. Se on lyhenne sanasta ”move”, ja sitä käytetään tietojen kopioimiseen lähteestä kohteeseen.
On tärkeää huomata, että MOV ei ”leikkaa” eikä poista tietoja lähteestä, vaan ainoastaan kopioi ne, joten lähde säilyy ennallaan.
Sen yleinen muoto on: MOV destination, source
MOV-esimerkkejä (käsitteellisiä)
Tarkastellaan joitakin käsitteellisiä MOV-esimerkkejä. Käytämme yleisiä x86/x64-rekisterien nimiä, kuten EAX, EBX ja RCX. Rekisterit ovat suorittimen sisäisiä, pieniä tallennuspaikkoja. Niiden tarkasta toiminnasta ei tarvitse vielä huolehtia!
MOV EAX, EBX: Kopioi rekisterinEBXarvon rekisteriinEAX.MOV RCX, RDX: Kopioi arvon rekisteristäRDXrekisteriinRCX(64-bittinen versio).MOV EAX, 123: Kopioi vakioarvon123rekisteriinEAX.
Aritmetiikka: ADD ja SUB
Tietojen siirtämisen lisäksi assembly mahdollistaa yksinkertaiset aritmeettiset operaatiot. Kaksi yleistä operaatiota ovat ADD ja SUB.
ADD destination, source: Lisääsource-arvondestination-arvoon ja tallentaa tuloksen kohteeseendestination.SUB destination, source: Vähentääsource-arvondestination-arvosta ja tallentaa tuloksen kohteeseendestination.
Nämä operaatiot muuttavat kohdeoperandia suoraan.
ADD- ja SUB-esimerkkejä (käsitteellisiä)
Tässä on joitakin käsitteellisiä ADD- ja SUB-esimerkkejä:
ADD EAX, EBX:EAX = EAX + EBXSUB RCX, 10:RCX = RCX - 10ADD RDX, R8:RDX = RDX + R8(käytössä on 64-bittinen yleiskäyttöinen rekisteriR8)
Huomaa, kuinka kohdeoperandi päivitetään operaation tuloksella.
Välittömät arvot ja operandit
Assemblyssä termit ”operandi” ja ”välitön arvo” ovat tärkeitä:
- Operandi: Arvo tai sijainti, johon ohje kohdistuu. Se voi olla rekisteri, muistiosoite tai välitön arvo.
- Välitön arvo: Vakioarvo, joka on koodattu suoraan itse ohjeeseen. Esimerkiksi
MOV EAX, 123-ohjeessa123on välitön arvo.
Kun ymmärrät nämä termit, pystyt tulkitsemaan, millaista dataa ohje käsittelee.
Assemblyn perusteiden tarkistus
Mikä seuraavista kuvaa parhaiten MOV-ohjeen toimintaa x86/x64-assemblyssä?
Kertaus: assemblyn perusteet
Hienoa työtä! Olette juuri ottaneet ensimmäiset askeleenne x86/x64-suorittimien assembly-kielen parissa.
Käsittelimme seuraavat aiheet:
- Mitä assembly-kieli on ja miksi se on tärkeää reverse engineeringissä.
- Ohjeen perusmuoto:
INSTRUCTION destination, source. - Perustavanlaatuiset ohjeet, kuten
MOV(kopiointi),ADD(yhteenlasku) jaSUB(vähennyslasku). - Välittömien arvojen ja operandien käsitteet.
Seuraavaksi perehdymme tarkemmin rekistereihin ja siihen, miten ne toimivat vuorovaikutuksessa muistin kanssa!
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 ”x86/x64-assemblyn perusteet” 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 “x86/x64-assemblyn perusteet”. 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 ”x86/x64-assemblyn perusteet”?
Tutustukaa x86- ja x64-assembly-kielten keskeisiin käskyihin ja syntaksiin. 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 1/4.
Kuinka kauan ”x86/x64-assemblyn perusteet”-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
- x86/x64-assemblyn perusteet
- Rekisterit ja muistitoiminnot
- Ohjausvuot ja funktiokutsut
- Pino ja kutsukäytännöt