Frage:
Dynamische binäre Instrumentierung auf Kernebene
joxeankoret
2013-04-16 03:27:57 UTC
view on stackexchange narkive permalink

Gibt es etwas wie PIN oder DynamoRIO, das auf Kernel-Ebene instrumentiert werden kann? Die Plattformen, an denen ich mehr interessiert bin, sind Windows und OSX.

Linux behandelt [hier] (http://reverseengineering.stackexchange.com/questions/1724/how-can-i-use-dynamorio-or-something-similar-in-linux-kernel-space).
Siehe auch: http://stackoverflow.com/questions/8058005/mac-os-x-equivalent-of-virtualquery-or-proc-pid-maps und die DanamoRio-Entwickler sind aktiv an Mac OS X interessiert (Stand gestern) : http://code.google.com/p/dynamorio/issues/detail?id=58
@joxeankoret: Ich würde vorschlagen, die Frage in zwei Teile zu teilen, einen für Windows und einen für MacOSX. vTune macht klar, was Sie verlangen, also halte ich es für * möglich *.
@0xC0000022L Ich glaube nicht, dass wir es teilen müssen. Eine Antwort für nur eine Plattform ist mehr als ich ehrlich erwarte. Übrigens unterstützt vTune meines Erachtens keine Instrumentierung auf Kernel-Ebene unter Windows, oder?
Ein zusätzlicher interessanter Punkt für einen Umweg anstelle eines dbi-Frameworks ist so etwas wie NCodeHook. Es braucht ein wenig Arbeit, um in den Kernelraum zu gelangen, aber nicht viel.
Einer antworten:
Andrew
2013-04-20 12:03:32 UTC
view on stackexchange narkive permalink

Tools wie Qemu oder Bochs sind IMO konzeptionell DBI-Frameworks ziemlich ähnlich und funktionieren auf dem gesamten System, einschließlich des Kernels. Forschungsanstrengungen wie BitBlaze und S2E haben modifizierte Versionen von Qemu verwendet, um Kernelmodus-Komponenten für die Fehlersuche zu verfolgen.

Der Hauptunterschied besteht meiner Meinung nach darin, dass Qemu / Bochs als Ganzesystememulatoren keine Standardansicht des zu prüfenden Programms wie ein DBI darstellen. Ein DBI ermöglicht standardmäßig die dynamische Bearbeitung des Programms. Emulatoren verfügen über die Grundelemente, die für die Ausführung von DBI erforderlich sind. Sie können Speicher und Erweiterungsprogrammcode lesen und schreiben, bieten jedoch nicht die API, die die PIN für Programmänderungen verwendet.

Das Beste, was ich tun kann, ist: Sie können Qemu verwenden, um ein Kernel-Modus-DBI zu erstellen, und andere haben dies getan, aber ich weiß nicht, dass etwas sofort einsatzbereiter ist.

Dies ist richtig, aber wie im Intro des DynamoRIO-Kernelpapiers erwähnt, besteht ein wichtiger Grund für die Durchführung von DBI im Kernel darin, dass Sie Gerätetreiber analysieren möchten. Und QEMU usw. emulieren eine ziemlich begrenzte Auswahl an Hardware. Das S2E-Projekt hat in diesem Bereich ein wenig Arbeit geleistet, indem es [die symbolische Ausführung verwendet hat, um die fehlenden Geräteeingaben auszutricksen] (http://dslab.epfl.ch/pubs/ddt), aber es ist kein Allheilmittel. Eine echte Kernel-DBI-Lösung, die auf echter Hardware ausgeführt werden kann, wäre besser.
Oh, es gab ein System namens Simics, Sie konnten Gerätetreiber in Python oder C programmieren. Ich frage mich, ob es noch zum Verkauf steht.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...