Spørsmål:
Kernenivå Dynamisk binær instrumentering
joxeankoret
2013-04-16 03:27:57 UTC
view on stackexchange narkive permalink

Er det noe i likhet med PIN eller DynamoRIO til instrument på kjernenivå? Plattformene jeg er mer interessert i er Windows og OSX.

Linux dekket [her] (http://reverseengineering.stackexchange.com/questions/1724/how-can-i-use-dynamorio-or-something-similar-in-linux-kernel-space).
Relatert: http://stackoverflow.com/questions/8058005/mac-os-x-equivalent-of-virtualquery-or-proc-pid-maps og DanamoRio-utviklerne er aktivt interessert i Mac OS X (oppdatert i går) : http://code.google.com/p/dynamorio/issues/detail?id=58
@joxeankoret: Jeg vil foreslå å dele spørsmålet i to, en for Windows en for MacOSX. vTune gjør tydeligvis det du spør, så jeg regner med at det * er * mulig.
@0xC0000022L Jeg tror ikke vi trenger å dele den. Et svar på bare en plattform er mer enn hva jeg ærlig talt forventer. BTW, så vidt jeg ser, støtter ikke vTune instrumentering på kjernenivå i Windows, ikke sant?
Et ekstra interessepunkt for bare omvei i stedet for et dbi-rammeverk er noe som NCodeHook. Det trenger litt arbeid for å komme til kjerneplass, men ikke mye.
En svar:
Andrew
2013-04-20 12:03:32 UTC
view on stackexchange narkive permalink

Verktøy som Qemu eller Bochs er IMO ganske lik DBI-rammer konseptuelt og de fungerer på hele systemet, inkludert kjernen. Forskningsinnsats som BitBlaze og S2E har brukt modifiserte versjoner av Qemu for å spore kjernemoduskomponenter for å finne feil.

Hovedforskjellen, tror jeg, er at Qemu / Bochs som hele systememulatorer ikke viser en standardvisning av programmet under inspeksjon slik en DBI gjør. En DBI tillater dynamisk redigering av programmet som standard. Emulatorer har primitivene som kreves for å påvirke DBI, de kan lese og skrive minne og ved utvidelsesprogramkode, men de gir ikke API-en som PIN gjør for programendring.

Så det beste jeg kan gjøre er, du kan bruke Qemu til å lage en kjernemodus DBI og andre har gjort dette, men jeg vet ikke om noe mer brukbart ut av boksen.

Dette stemmer, men som nevnt i introduksjonen til DynamoRIO-kjernepapiret, er en stor grunn til å gjøre DBI i kjernen fordi du vil analysere enhetsdrivere. Og QEMU etc. emulerer et ganske begrenset utvalg av maskinvare. S2E-prosjektet har gjort litt arbeid i dette området ved å [bruke symbolsk utførelse for å forfalske de manglende enhetsinngangene] (http://dslab.epfl.ch/pubs/ddt), men det er ikke et universalmiddel. En ekte kjerne-DBI-løsning som kan kjøres på ekte maskinvare, ville vært bedre.
Å det var et system som gjorde dette som heter Simics, du kan programmere enhetsdrivere i Python eller C. Jeg lurer på om det fortsatt er til salgs.


Denne spørsmålet ble automatisk oversatt fra engelsk.Det opprinnelige innholdet er tilgjengelig på stackexchange, som vi takker for cc by-sa 3.0-lisensen den distribueres under.
Loading...