Spore API- og systemkall under kjøring
Observer hvordan et program samhandler med operativsystemet ved hjelp av API-hooks og syscall-sporere, som et supplement til bruddpunktbasert feilsøking med innsyn i programmets oppførsel.
Spore API- og systemkall under kjøring er en gratis leksjon i Grunnleggende om reverse engineering og binæranalyse på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Grunnleggende om reverse engineering og binæranalyse, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Grunnleggende om reverse engineering og binæranalyse inneholder totalt 4 leksjoner.
Følg grenseovergangen
Du kan sette bruddpunkter, gå trinnvis gjennom kode og undersøke minne og registre. Noen ganger får du raskest innsikt ved å følge med på hvor et program kommuniserer med operativsystemet.
Alle meningsfulle handlinger, som å åpne en fil eller sende en pakke, krysser bruker-/kjernekonteksten som et systemkall.
API-kall kontra systemkall
Et API-kall er en biblioteksfunksjon som fopen eller CreateFileW. Underliggende vil det til slutt utføre et systemkall inn i kjernen.
Ved å spore et av lagene kan du avdekke virkemåten uten å lese hver eneste instruksjon.
strace på Linux
strace registrerer hvert systemkall en prosess utfører, sammen med argumenter og returverdier.
strace -f -e trace=file ./target
# open('/etc/passwd', O_RDONLY) = 3ltrace for bibliotekkall
ltrace kobler seg til det høyere bibliotekslaget og viser kall som strcmp og malloc. Dette er nyttig for å oppdage sammenligninger av passord.
ltrace ./crackme
# strcmp('hunter2', 's3cr3t') = -1API Monitor på Windows
På Windows kobler verktøy som API Monitor og Frida seg til kall i kernel32, ws2_32 og lignende, og logger argumentene i sanntid.
Procmon utfyller dette ved å registrere hendelser for filer, registeret og prosesser.
Filtrer bort støyen
En sporing kan produsere tusenvis av kall. Filtrer til kategorien du er interessert i: fil, nettverk, prosess eller register.
Ved å konsentrere deg unngår du å drukne i informasjon, samtidig som du fortsatt fanger opp de viktigste hendelsene.
strace -e trace=network ./targetHooking med Frida
Frida injiserer en JavaScript-agent som avskjærer funksjoner under kjøring, slik at du kan logge eller endre argumenter. Det fungerer på tvers av plattformer.
Interceptor.attach(Module.getExportByName(null, 'open'), {
onEnter: function (args) {
console.log('open ' + args[0].readUtf8String());
}
});Korreler med bruddpunkter
Bruk sporing til å finne hvor noe interessant skjer, og bytt deretter til feilsøkingsverktøyet for å stoppe nøyaktig der.
Hvis strace viser et open-kall mot en skjult konfigurasjonsfil, setter du et bruddpunkt på open for å undersøke den omkringliggende logikken.
Fang opp nettverksatferd
Kombiner kallsporing med en pakkefangst. Kall til connect og send, sammen med en Wireshark-fangst, avdekker kommando- og kontrollservere og protokoller.
strace -e trace=connect,sendto,recvfrom ./targetVær oppmerksom på sporingsmottiltak
Noen programmer oppdager ptrace, som strace og feilsøkingsverktøy bruker, og endrer atferd. Hvis et program oppfører seg annerledes under strace, bør du mistenke anti-feilsøking.
Du skal studere unnvikelse grundig senere. Foreløpig er det nok å være klar over at sporing ikke er usynlig.
Les returverdier
Et kalls returverdi kan være like avslørende som argumentene. Et connect-kall som returnerer 0, lyktes; et open-kall som returnerer -1 med ENOENT, betyr at programmet forsøkte å åpne en fil som ikke finnes.
strace skriver ut dette direkte i sporingen, noe som gjør det lettere å forstå programmets valg.
open('/tmp/.lock', O_RDONLY) = -1 ENOENT
# program then creates the lock fileKort kontroll
Hvilket verktøy registrerer hvert systemkall en Linux-prosess utfører, sammen med argumenter og returverdier?
Oppsummering
Kallsporing gir verktøysettet ditt for dynamisk analyse innsyn i programatferd:
- strace for systemkall og ltrace for bibliotekkall
- API Monitor / Procmon / Frida på Windows og andre plattformer
- Filtrer bort støyen, og gå deretter over til bruddpunkter på det interessante stedet
- Vær oppmerksom på deteksjon av anti-ptrace
Lær deg Assembly med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Spore API- og systemkall under kjøring» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Grunnleggende om reverse engineering og binæranalyse, inkludert «Spore API- og systemkall under kjøring», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Grunnleggende om reverse engineering og binæranalyse inneholder totalt 4 leksjoner.
Hva lærer jeg i «Spore API- og systemkall under kjøring»?
Observer hvordan et program samhandler med operativsystemet ved hjelp av API-hooks og syscall-sporere, som et supplement til bruddpunktbasert feilsøking med innsyn i programmets oppførsel. Du øver på Grunnleggende om reverse engineering og binæranalyse med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Grunnleggende om reverse engineering og binæranalyse?
Ingen tidligere erfaring er nødvendig. Grunnleggende om reverse engineering og binæranalyse på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Spore API- og systemkall under kjøring»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Grunnleggende om reverse engineering og binæranalyse-leksjonen?
Ja. Alle Grunnleggende om reverse engineering og binæranalyse-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Det viktigste om debuggere (GDB, WinDbg)
- Sette bruddpunkter og stege gjennom kode
- Undersøke minne og registre
- Spore API- og systemkall under kjøring