CPU 上でどの命令が実行されているかを検出するにはどうすればよいでしょうか?

CPU 上でどの命令が実行されているかを検出するにはどうすればよいでしょうか?

どの CPU 命令が実行されているかを検出できることを知っている人はいますか?

私は特に検出に興味がありますAES 命令最近の Intel および AMD CPU で実装されています。これらの命令を検出するカーネル モジュールを作成することは可能でしょうか? または、CPU に送信される特定の CPU 命令はカーネルによって認識されないのでしょうか?

答え1

ほとんどの場合、CPU はカーネルを介さずにプロセスの命令を実行します。カーネルが介入する必要があるのは、ユーザー レベルのプロセスが無効な命令 (ここでの無効にはさまざまな理由があります) を実行しようとしたり、ソフトウェア割り込みを呼び出したりしてトラップを引き起こした場合のみです。AES 命令は直接実行され、カーネルはそれが実行されていることを認識しません。

関連するパフォーマンスカウンタも使用できないと思います。AES命令には、通常とは異なる実行パターンがあり、5月統計的に識別できるはずですが、私はそれを試したことはありません...そしてそれはいずれにせよ一般的には適用できません。

適切に装備されたエミュレーターを使用してみることもできます。ボクス、またはバイナリを分析して、使用されている命令を特定します。Debian: x86-64 バイナリはどのような命令を使用しますか?後者についてはさらに詳しい情報があります。

関連情報