
Weiß jemand, wie ich erkennen kann, welche CPU-Befehle ausgeführt werden?
Besonders interessiert mich die EntdeckungAES-Anweisungenvon aktuellen Intel- und AMD-CPUs implementiert. Wäre es beispielsweise möglich, ein Kernelmodul zu schreiben, das diese Anweisungen erkennt? Oder sind die spezifischen CPU-Anweisungen, die an die CPU gesendet werden, dem Kernel nicht einmal bekannt?
Antwort1
Meistens führen CPUs die Anweisungen von Prozessen aus, ohne den Kernel einzubeziehen. Der Kernel muss nur eingreifen, wenn ein Prozess auf Benutzerebene eine Falle verursacht, entweder indem er versucht, eine ungültige Anweisung auszuführen (ungültig kann hier verschiedene Gründe haben) oder indem er einen Software-Interrupt auslöst. AES-Anweisungen werden direkt ausgeführt und der Kernel weiß nicht, dass sie ausgeführt werden.
Ich glaube auch nicht, dass es entsprechende Leistungsindikatoren gibt, die Sie verwenden könnten. Die AES-Anweisungen haben ein ungewöhnliches Ausführungsmuster, dasMaistatistisch identifizierbar sein, aber das habe ich nie versucht ... Und das ist sowieso nicht allgemein anwendbar.
Sie können versuchen, einen entsprechend ausgestatteten Emulator zu verwenden, wie zum BeispielBochsoder Binärdateien analysieren, um die verwendeten Anweisungen zu ermitteln —Debian: Welche Anweisungen verwenden x86-64-Binärdateien?hat weitere Informationen zu Letzterem.