3

たとえば、sys_* (sys_open など) ハンドラをフックします。ユーザー空間から渡された引数に悪意があることがわかった場合は、ユーザー空間のスタック トレースを出力します。どうすればいいですか?

(dump_stack() はカーネルスタックのみを出力します)

4

2 に答える 2

4

カーネル内のターゲットプロセスに、コアダンプファイルを生成できるシグナル (SIGBUS、SIGKABRT など) を送信できます。

例えば:

 do_send_sig_info(SIGABRT, SEND_SIG_FORCED, current, true);

次に、gdb を使用して、生成されたコア ファイルのバックトレースを表示できます。

適用範囲が限られているため、非常に注意が必要です。

于 2016-07-18T07:55:55.607 に答える
0

oprofileはユーザー空間スタック トレースをサポートしており、これらはユーザー空間スタックをウォークすることによってカーネルで計算されます。(ただし、シンボルは解決されないことに注意してください。これは、ユーザー空間のレポート ツールによって行われます。)

この問題を解決しなければならない場合は、oprofile コードを (再び) 調べて、そこにあるものを使用/適応させるだけです。

おそらく、この種の「悪意のある」発生は、記録される一種の oprofile イベントとして単純にモデル化される可能性があります。

于 2012-04-18T01:39:31.913 に答える