Kernel debugger
En kerne-debugger er software, der kører på kerneniveauet af et operativsystem og giver dig mulighed for at debugge kernen og dens komponenter.
Ansøgning
Kernel debuggere har mange anvendelser. Her er nogle af dem:
- Fejlretning af drivere. Dette gælder især for kernetilstandsdrivere.
- Fejlretning af operativsystemets kerne . Denne proces forstås som søgningen efter fejl i kernens funktion, ændring af kernekoden. I tilfælde af lukkede systemer som Windows opstår en ny udfordring: at dokumentere datastrukturer og kernefunktioner.
- Elimination og forebyggelse af BSOD . Debuggeren giver dig mulighed for at se samlingskoden for et problematisk program, såsom en driver , og, hvis du har den nødvendige viden, foretage justeringer af den for at rette fejl.
- Fejlretning af skadelig kode . Sådanne programmer påvirker ganske ofte aktivt operativsystemets kerne og ændrer systemfunktionernes adfærd. For at forstå logikken i sådanne programmer er det nødvendigt at kontrollere blandt andet kernens adfærd. Dette skyldes, at brugertilstandsdebuggeren kun er afhængig af de API'er, der tilbydes af selve operativsystemet. Disse API'er er i sig selv mellemled i forhold til kernen, og hvis et ondsindet program eller et hvilket som helst andet program formår at tage kontrol over adfærden af de tilsvarende kernefunktioner, så vil debuggeren være under kontrol af et sådant program.
- Finde softwaresårbarheder og skriveudnyttelser . Udbytter er afhængige af programfejl under behandlingen af inputdata, som kun viser sig under driften. Forskeren står derfor over for to problemer:
- Find det sted, der indeholder sårbarheden
- Skriv kode, der kan udnytte den fundne sårbarhed.
Da softwaren meget ofte ikke kommer med kildekode, men kun i binær form, og selve sårbarhederne er maskinafhængige, kræver disse to problemer specielle værktøjer. Når et program er statisk undersøgt af værktøjer såsom en disassembler , forbliver mange detaljer om programmets opførsel uigenkendte, for eksempel de hukommelsesplaceringer, der tilgås af programmet, er det sværere at etablere stien til udførelse af programkoden. Debuggeren giver dig mulighed for at kontrollere programmet under udførelsen og undersøge de ændringer, der sker i det på et hvilket som helst tidspunkt af udførelsen. Debuggerens evne til at vise tilstanden af programstakken, processorregistre giver dig mulighed for at finde ud af forskellige oplysninger om programmets reaktion på visse hændelser, logikken i kodeudførelse. Dette giver os mulighed for at løse både det første og det andet problem nævnt ovenfor. Et eksempel på, hvordan dette gøres, kan findes i kapitel 3 i bogen Hacking: The Art of the Exploit [1]
Grundlæggende principper for drift
Debuggeren på kerneniveau kræver ændringer af operativsystemkernen for at fungere korrekt. Ganske ofte løses dette ved at introducere yderligere moduler i kernen. Faktisk opsnapper fejlfinderen på kerneniveau globale systemfunktioner, der er ansvarlige for:
- Hukommelsesadgang
- Opret/afslut processer
Kernel-debuggeren styrer også adgangen til forskellige kernetabeller. Et andet vigtigt punkt er processortilstandsstyring, da processorer understøtter trin-for-trin sporing og brudpunkter på hardwareniveau.
De mest berømte repræsentanter for denne softwareklasse
- softICE . En proprietær debugger udviklet af Numega og distribueret med DriverStudio. Uofficielle opbygninger af softICE er blevet lavet af forskellige hackergrupper. softICE leverede fejlfinding af kode på forskellige versioner af Windows og var på grund af dets brede muligheder en uofficiel standard i software reverse engineering kredse . Det blev dog efterfølgende opgivet. Nu bruges det mindre og mindre, da det ikke er kompatibelt med Windows Vista og 7 [2] Samtidig er softICE stort set blevet grundlaget for ideologien med at bruge sådanne værktøjer. Virker kun på Windows platform
- WinDbg, KD, LiveKD. WinDbg er den officielle gratis og lukkede kilde-debugger, der følger med Microsofts fejlfindingsværktøjer til Windows. Det er GUI orienteret. Tegnsættene til det giver dig mulighed for at udforske Windows-kernen. KD er en anden debugger fra Microsoft, der er designet til at udforske Windows-kernen. LiveKD er en gratis kerne-debugger fra Sysinternals , der giver dig mulighed for at debugge dit system uden at bruge en anden computer, hvilket er hvad de to foregående debuggere kræver. Dette er beskrevet mere detaljeret i Mark Russinovich og David Solomons bog The Internals of Windows. [3]
- Syser. SoftICE-efterfølger udviklet af kinesiske programmører. Understøtter SoftICE stil interface. Kompatibel med nye Windows-operativsystemer, understøtter multiprocessorsystemer. Betalt lukket kildeprodukt.
- KDB. Debugger på kerneniveau for *nix af SGI . Aktiveres ved at påføre et plaster på kernen [4] . opensource projekt.
- lineice. Endnu en OpenSource-kernefejlfinder for *nix. Der er nogle kompatibilitetsproblemer med nye Linux-kerner
Applikationsproblemer
Det er meget vigtigt, at debuggeren skal være kompatibel med kernen i det operativsystem, hvor den bruges, da debuggeren ændrer kernens grundlæggende strukturer, som har tendens til at ændre sig fra version til version. Brug af den forkerte version af debuggeren kan føre til uforudsigelig systemadfærd.
Et andet ret alvorligt problem er konflikten mellem drivere på kerneniveau i andre applikationer og debuggeren. Et eksempel er Daemon Tools-programmets manglende evne til at køre, mens kerne-debuggeren er aktiv. Nogle programmer nægter at fungere, hvis de registrerer tilstedeværelsen af en debugger på systemet eller forsøger at debugge dem
Se også
Noter
- ↑ "Hacking: The Art of the Exploit", s. 135-155 - Dette bruger GDB bruger-mode debugger , men dette ændrer ikke essensen af metoderne.
- ↑
Chris Kaspersky, Eva Rocco "Kunsten at skille ad" s.9
- ↑ M. Russinovich, D. Solomon Microsoft Windows Internals: Windows Server 2003, Windows XP, Windows 2000. s. 29-31 (debug-symboler, beskrivelse af debuggere, undersøgelseseksempel), s. 82-83 et andet eksempel
- ↑ SGI - Developer Central Open Source | KDB (downlink) . Hentet 15. august 2010. Arkiveret fra originalen 26. november 2010. (ubestemt)
Litteratur
Links