0

私はルートキットについて調査していますが、`のような警告をたくさん受け取りました。

"BUG: unable to handle kernel paging request at [addr]"

たとえば、自分の関数を にアタッチしようとしたときsys_call_table[__NR_read]

カーネル <=2.6.25 では、関数change_page_attr()は特定のアドレスのページ属性を変更するのに役立ちました。ただし、2.6.28 以上の新しいカーネルでは、この関数は廃止され、set_memory_*PAT に関連する関数に置き換えられています。

Linux カーネルのドキュメントでは、PAT 関数の使用法が明確ではありません。set_memory_wc()&を使用set_memory_uc()してパーミッションを変更しましsys_call_tableたが、同じバグが引き続き発生します。私が推測するその機能は、古いchange_page_attr().

i915 モジュールで 1 つの例を見て、同じように関数を使用しましたが、バグは続きます。

それについて何か助けはありますか?カーネルアドレスを間違った方法で処理していますか?

4

1 に答える 1

2

2.6.26 および 2.6.30 の debian カーネル固有でテストしました。

2.6.26の場合set_memory_wc、および復元でset_memory_wb機能します。

2.6.30 は Kernel Hacking にあると動きませんCONFIG_DEBUG_RODATA(と思います)。実際に再コンパイルする時間はありませんでしたが、それを持たないカスタム カーネルでテストしました。

2.6.30set_memory_rwset_memory_ro、同様にエクスポートされます。

お役に立てれば。

于 2009-12-01T17:41:07.100 に答える