Ytimen debuggeri
Ytimen debuggeri on ohjelmisto, joka toimii käyttöjärjestelmän ydintasolla ja jonka avulla voit korjata ytimen ja sen komponenttien vian.
Sovellus
Ytimen debuggereilla on monia käyttötarkoituksia. Tässä on joitain niistä:
- Ajurien virheenkorjaus. Tämä pätee erityisesti ydintilan ohjaimiin.
- Käyttöjärjestelmän ytimen virheenkorjaus . Tämä prosessi ymmärretään ytimen toiminnassa olevien virheiden etsimiseksi, ytimen koodin muokkaamiseksi. Suljettujen järjestelmien, kuten Windowsin, tapauksessa syntyy uusi haaste: tietorakenteiden ja ytimen toimintojen dokumentointi.
- BSOD:n eliminointi ja ehkäisy . Debuggerin avulla voit nähdä ongelmallisen ohjelman, kuten ohjaimen , kokoonpanokoodin ja, jos sinulla on tarvittavat tiedot, tehdä siihen muutoksia virheiden korjaamiseksi.
- Haitallisen koodin virheenkorjaus . Tällaiset ohjelmat vaikuttavat melko usein aktiivisesti käyttöjärjestelmän ytimeen ja muuttavat järjestelmän toimintojen käyttäytymistä. Tällaisten ohjelmien logiikan ymmärtämiseksi on tarpeen hallita muun muassa ytimen toimintaa. Tämä johtuu siitä, että käyttäjätilan debuggeri luottaa vain käyttöjärjestelmän itsensä tarjoamiin sovellusliittymiin. Nämä API:t ovat itsessään välittäjiä ytimeen nähden, ja jos haittaohjelma tai mikä tahansa muu ohjelma onnistuu hallitsemaan vastaavien ytimen toimintojen toimintaa, virheenkorjaaja on sellaisen ohjelman hallinnassa.
- Ohjelmiston haavoittuvuuksien ja kirjoittamisen hyväksikäyttöjen etsiminen . Hyödynnät perustuvat ohjelmavirheisiin syötetietojen käsittelyn aikana, mikä ilmenee vain sen toiminnan aikana. Näin ollen tutkijalla on kaksi ongelmaa:
- Etsi paikka, joka sisältää haavoittuvuuden
- Kirjoita koodi, joka voi hyödyntää löydettyä haavoittuvuutta.
Koska ohjelmiston mukana ei useinkaan tule lähdekoodia, vaan vain binäärimuodossa, ja itse haavoittuvuudet ovat konekohtaisia, nämä kaksi ongelmaa vaativat erikoistyökaluja. Kun ohjelmaa tarkastellaan staattisesti työkaluilla, kuten disassembler , monet ohjelman toiminnan yksityiskohdat jäävät tunnistamatta, esimerkiksi ne muistipaikat, joihin ohjelma pääsee käsiksi, on vaikeampi määrittää ohjelmakoodin suorituspolku. Debuggerin avulla voit hallita ohjelmaa suorituksen aikana ja tutkia siinä tapahtuvia muutoksia missä tahansa suoritusvaiheessa. Debuggerin kyky näyttää ohjelmapinon tila, prosessorirekisterit mahdollistaa erilaisten tietojen selvittämisen ohjelman reaktiosta tiettyihin tapahtumiin, koodin suorituslogiikasta. Näin voimme ratkaista sekä ensimmäisen että toisen edellä mainitun ongelman. Esimerkki siitä, kuinka tämä tehdään, löytyy kirjan Hacking: The Art of the Exploit [1] luvusta 3.
Toimintaperiaatteet
Ydintason debuggeri vaatii muutoksia käyttöjärjestelmän ytimeen toimiakseen oikein. Usein tämä ratkaistaan lisäämällä ytimeen lisämoduuleja. Itse asiassa ytimen tason debuggeri sieppaa globaaleja järjestelmätoimintoja, jotka vastaavat:
- Muistin käyttö
- Luo/lopeta prosesseja
Ytimen debuggeri hallitsee myös pääsyä erilaisiin ydintaulukoihin. Toinen tärkeä kohta on prosessorin tilan hallinta, koska prosessorit tukevat vaiheittaista jäljitystä ja keskeytyspisteitä laitteistotasolla.
Tämän ohjelmistoluokan tunnetuimmat edustajat
- softICE . Numegan kehittämä ja DriverStudion kanssa jaettu oma debuggeri . Eri hakkeriryhmät ovat tehneet epävirallisia softICE-versioita. softICE tarjosi koodin virheenkorjauksen eri Windows-versioissa ja oli laajojen ominaisuuksiensa vuoksi epävirallinen standardi ohjelmistojen käänteissuunnittelupiireissä . Siitä kuitenkin sittemmin luovuttiin. Nyt sitä käytetään yhä vähemmän, koska se ei ole yhteensopiva Windows Vistan ja 7 :n kanssa [2] Samaan aikaan softICE:stä on suurelta osin tullut tällaisten työkalujen käyttöideologian perusta. Toimii vain Windows-alustalla
- WinDbg, KD, LiveKD. WinDbg on virallinen ilmainen ja suljetun lähdekoodin debuggeri, joka sisältyy Microsoftin Windowsin virheenkorjaustyökaluihin. Se on GUI-suuntautunut. Sen merkistöjen avulla voit tutkia Windowsin ydintä. KD on toinen Microsoftin virheenkorjausohjelma, joka on suunniteltu tutkimaan Windowsin ydintä. LiveKD on Sysinternalsin ilmainen ytimen virheenkorjausohjelma, jonka avulla voit suorittaa järjestelmän virheenkorjauksen ilman toista tietokonetta, mitä kaksi edellistä debuggeria vaativat. Tämä on kuvattu yksityiskohtaisemmin Mark Russinovichin ja David Solomonin kirjassa The Internals of Windows. [3]
- Syser. Kiinalaisten ohjelmoijien kehittämä SoftICE-seuraaja. Tukee SoftICE-tyylistä käyttöliittymää. Yhteensopiva uusien Windows-käyttöjärjestelmien kanssa, tukee moniprosessorijärjestelmiä. Maksullinen suljetun lähdekoodin tuote.
- KDB. Ydintason virheenkorjaus SGI:n * nixille . Aktivoidaan kiinnittämällä laastari ytimeen [4] . avoimen lähdekoodin projekti.
- lineice. Toinen OpenSource-ytimen vianetsintäohjelma *nixille. Uusien Linux-ytimien kanssa on joitain yhteensopivuusongelmia
Sovellusongelmat
On erittäin tärkeää, että debuggeri on yhteensopiva sen käyttöjärjestelmän ytimen kanssa, jossa sitä käytetään, koska debuggeri muuttaa ytimen perusrakenteita, jotka vaihtelevat versiosta toiseen. Virheenkorjausohjelman väärän version käyttäminen voi johtaa arvaamattomaan järjestelmän toimintaan.
Toinen melko vakava ongelma on ristiriita muiden sovellusten ydintason ajurien ja debuggerin välillä. Esimerkkinä on se, että Daemon Tools -ohjelma ei voi toimia, kun ytimen virheenkorjaus on aktiivinen. Jotkut ohjelmat kieltäytyvät toimimasta, jos ne havaitsevat debuggerin järjestelmässä tai yrittävät korjata niitä
Katso myös
Muistiinpanot
- ↑ "Hakkerointi: The Art of the Exploit", s. 135-155 - Tämä käyttää GDB -käyttäjätilan debuggeria , mutta tämä ei muuta menetelmien olemusta.
- ↑
Chris Kaspersky, Eva Rocco "The Art of Disassembly" s.9
- ↑ M. Russinovich, D. Solomon Microsoft Windows Internals: Windows Server 2003, Windows XP, Windows 2000. s. 29-31 (virheenkorjaussymbolit, debuggerien kuvaus, tutkimusesimerkki), s. 82-83 toinen esimerkki
- ↑ SGI - Kehittäjäkeskuksen avoin lähdekoodi | KDB (downlink) . Haettu 15. elokuuta 2010. Arkistoitu alkuperäisestä 26. marraskuuta 2010. (määrätön)
Kirjallisuus
Linkit