Binäärien paikkaustekniikat
Ymmärrä, miten binäärejä muokataan ja paikataan staattisesti ohjelman toiminnan muuttamiseksi tai tarkistusten ohittamiseksi.
Binäärien paikkaustekniikat on ilmainen Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-oppitunti CoddyKitissä. Tämä on oppitunti 3/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ä on binäärin paikkaus?
Binäärin paikkaus tarkoittaa käännetyn ohjelman konekoodin suoraa muokkaamista ilman alkuperäistä lähdekoodia. Voitte ajatella sitä suoritettavan tiedoston kirurgisina muutoksina.
Tämä tekniikka on tärkeä käänteisessä suunnittelussa, sillä sen avulla voidaan muuttaa ohjelman toimintaa, korjata virheitä tai jopa ohittaa suojaustarkistuksia.
Paikkauksen yleisiä käyttötarkoituksia
Miksi binääriä paikataan?
- Virheenkorjaukset: Kiireellisten korjausten tekeminen ilman uudelleenkäännöstä.
- Ominaisuuksien muokkaaminen: Ohjelman toiminnan muuttaminen tai piilotettujen ominaisuuksien avaaminen.
- Tarkistusten ohittaminen: Lisenssin tarkistusten tai kokeilujakson rajoitusten poistaminen käytöstä.
- Lokalisointi: Tekstimerkkijonojen muuttaminen eri kielille.
Paikkauksen keskeiset työkalut
Binäärien paikkaamiseen käytätte pääasiassa kahdenlaisia työkaluja:
- Heksadesimaalieditorit: Tavujen suoraan muokkaamiseen. Ne näyttävät heksadesimaali- ja ASCII-muotoisen raakadat an.
- Purkuohjelmat: Esimerkiksi Ghidra tai IDA Pro, joiden avulla voitte ymmärtää assembly-koodia ja tunnistaa, mihin paikkaus tehdään.
Keskitymme ensin heksadesimaalimuokkauksen taustalla oleviin käsitteisiin.
Heksadesimaalieditorin käyttäminen
Heksadesimaalieditori näyttää tiedoston sisällön heksadesimaalilukuina (16-kantaisina lukuina). Jokainen heksadesimaalinumeropari vastaa yhtä datatavua. Usein editori näyttää myös ASCII-esityksen.
Voitte siirtyä osoitteen perusteella, etsiä tiettyjä tavusarjoja tai tekstiä ja muokata tavuja suoraan. Muutokset tallennetaan takaisin tiedostoon.
Merkkijonon muuttaminen (periaate)
Ohjelmat tallentavat viestejä tai tunnisteita usein yksinkertaisina merkkijonoina. Nämä merkkijonot esitetään binääritiedostossa tavusarjana.
Etsimällä merkkijonoa vastaavan tavusarjan heksadesimaalieditorilla voitte muuttaa sitä niin, että ohjelma näyttää käynnistyessään toisen viestin.
Yksinkertainen merkkijono-ohjelma
Tarkastellaan tätä yksinkertaista C-ohjelmaa. Kääntämisen jälkeen teksti "Hello CoddyKit!" tallennetaan suoritettavaan tiedostoon ASCII-tavusarjana.
Voisitte avata käännetyn binäärin heksadesimaalieditorissa, etsiä nämä tavut ja muuttaa ne esimerkiksi muotoon "Hello Patcher!".
#include <stdio.h>
int main() {
char message[] = "Hello CoddyKit!";
printf("%s\n", message);
return 0;
}Koodin poistaminen käytöstä NOP-käskyillä
NOP-käsky (No Operation) toimii paikan täytteenä. Se käskee suoritinta olemaan tekemättä mitään ja siirtymään seuraavaan käskyyn.
Jos haluatte poistaa yksittäisen käskyn tai pienen koodilohkon käytöstä aiheuttamatta virheitä, voitte korvata sen tavut NOP-käskyn opkoodilla, joka on x86/x64-arkkitehtuureissa usein 0x90.
Ohjausvirran muuttaminen
Ohjelmat tekevät päätöksiä ehdollisilla hyppykäskyillä, kuten "hyppää, jos yhtä suuri" tai "hyppää, jos ei nolla". Nämä määrittävät ohjelman suorituspolun.
Muuttamalla ehdollisen hypyn ehdottomaksi hypyksi, esimerkiksi JMP-käskyksi, tai päinvastoin voitte pakottaa ohjelman kulkemaan aina tiettyä polkua. Näin voitte käytännössä ohittaa tarkistuksia tai muuttaa logiikkaa.
Tarkistuksen ohittaminen
Kuvitelkaa ohjelma, joka tarkistaa, onko muuttuja nolla, ja lopettaa suorituksen, jos se on. Assembly-koodi voisi näyttää tältä:
TEST EAX, EAXJE Exit_Func
Jos haluamme estää lopettamisen, voisimme muuttaa JE-käskyn (Jump if Equal) käskyksi JNE (Jump if Not Equal) tai jopa korvata käskyn JE Exit_Func NOP-käskyillä, jos Exit_Func on lyhyt.
Paikkaustekniikan tarkistus
Kun binäärissä halutaan poistaa käytöstä tietty käsky tai erittäin pieni koodilohko muuttamatta ohjelman yleistä rakennetta tai aiheuttamatta kaatumisia, mitä assembly-käskyä tähän tarkoitukseen käytetään yleisimmin?
Binäärin paikkauksen kertaus
Tässä oppitunnissa tutustuimme binäärin paikkauksen tekniikoihin. Opitte seuraavat asiat:
- mitä binäärin paikkaus on ja mihin sitä käytetään
- mikä on heksadesimaalieditorien ja purkuohjelmien rooli
- miten dataa, kuten merkkijonoja, ja ohjelmalogiikkaa voidaan muuttaa NOP-käskyillä ja hypyillä
Paikkaus vaatii huolellista analyysiä, mutta se tarjoaa tehokkaita tapoja käsitellä käännettyä ohjelmistoa!
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 ”Binäärien paikkaustekniikat” 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 “Binäärien paikkaustekniikat”. 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 ”Binäärien paikkaustekniikat”?
Ymmärrä, miten binäärejä muokataan ja paikataan staattisesti ohjelman toiminnan muuttamiseksi tai tarkistusten ohittamiseksi. 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 3/4.
Kuinka kauan ”Binäärien paikkaustekniikat”-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
- IDAPython- ja Ghidra-komentojonot
- Tietorakenteiden palauttamisen automatisointi
- Binäärien paikkaustekniikat
- FLIRT-tunnisteet ja kirjastofunktioiden tunnistaminen