我們需要訪問net/ipv4/af_inet.c中的內核全局變量,這些變量不會從可加載內核模塊顯式導出。我們目前使用2.6.18內核。訪問未通過EXPORT_SYMBOL導出的Linux內核符號*
kallsyms_lookup_name不會出現可用了(不出口)
__symbol_get返回NULL(在進一步閱讀,symbol_get/__ symbol_get看起來通過只包含出口標誌的內核和現有模塊的符號表,它是否有確保從中導出符號的模塊實際上已加載)
有無論如何訪問不從內核模塊導出的符號嗎?
經過大量閱讀並查看人們提供的答案後,似乎很難在許多內核版本中找到一種方法,因爲kAPI會隨着時間的推移發生顯着變化。
'objdump path/to/modulename.ko'會做你需要的嗎?您將不得不解碼輸出以確定模塊中的相應偏移量,然後應用該偏移量。獲取未導出符號的目的是什麼? – wallyk 2012-03-30 23:35:13
是的,我們可以通過用戶空間中的/ proc/kallsyms來獲取地址,並且可能傳遞給模塊,但是這看起來有點詭異,所以我想知道是否有更好的東西。我們試圖將部分網絡代碼拉出來,並將其作爲一個模塊,以便我們可以在不必重新啓動內核的情況下修復錯誤。 – 2012-03-30 23:42:16