カーネル モジュールを作成していて、いくつかの sys 呼び出しをハイジャック/ラップする必要があります。私は sys_call_table アドレスを総当たり攻撃しており、cr0 を使用してページ保護を無効/有効にしています。これまでのところとても良いです(完了したらコード全体を公開するので、誰かが望むならこの質問を更新できます)。
とにかく、ハイジャック__NR_sys_read
すると、カーネル モジュールをアンロードするときにカーネル oops が発生し、すべてのコンソール (KDE) がクラッシュすることに気付きました。__NR_sys_open
これはorでは起こらないことに注意してください__NR_sys_write
。
なぜこれが起こっているのだろうと思います。何か案は?
PS: KProbes の方法を使用しないでください。私は既にそれについて知っており、カーネル全体を再コンパイルすることなく最終製品を使用できるようにする必要があるため、使用することはできません。
編集:(情報を追加)
荷降ろし前の本来の機能を復元します。また、2 つのテスト ケースを作成しました。1 つは_write
only で、もう 1 つは_read
です。アンロードのあるものは_write
問題ありませんが、_read
アンロードしたものはカーネルをクラッシュさせます)。
編集:(ソースコード)
現在家にいるので、ソースコードをすぐに投稿することはできませんが、誰かが望む場合は、仕事に着き次第、サンプルコードを投稿できます. (~5時間)