ロード可能なカーネルモジュールから明示的にエクスポートされないnet/ipv4/af_inet.cのカーネルグローバル変数にアクセスする必要があります。現在、2.6.18カーネルを使用しています。EXPORT_SYMBOLでエクスポートされないLinuxカーネルシンボルにアクセスする*
kallsyms_lookup_nameは(エクスポートされません)もう利用可能であるようには見えない
NULL(さらに読め、symbol_get/__ symbol_getのみエクスポートされたシンボルが含まれているカーネルと既存のモジュールのシンボルテーブルを通じて見て、それを返します__symbol_get
カーネルモジュールからエクスポートされていないシンボルにアクセスする方法はありますか?いいえ、実際には、シンボルがエクスポートされたモジュールがロードされていることを確認してください。
多くの人が読んで答えを見ると、kAPIが時間の経過とともに大きく変化するため、多くのカーネルバージョンで1つの方法を見つけるのは非常に難しいようです。
'objdump path/to/modulename.ko'は必要な作業を行いますか?出力をデコードして、モジュール内の対応するオフセットを決定し、それを適用する必要があります。輸出されていないシンボルを取得する目的は何ですか? – wallyk
はい、ユーザー空間の/ proc/kallsyms経由でアドレスを取得して、モジュールに渡すこともできますが、これはちょっとハッキリしているようですので、何か良いかどうか疑問に思っていました。ネットワーキングコードの一部を取り出してモジュールにするため、カーネルを再起動することなくバグ修正を行うことができます。 –