Ubuntu 20.10(Groovy Gorilla)の出力を検討してください/boot/System.map-5.8.0-50-generic
。/proc/kallsyms
$ sudo cat /boot/System.map-5.8.0-50-generic | grep sys_call_table
ffffffff820002e0 D sys_call_table
ffffffff82001360 D ia32_sys_call_table
ffffffff82002120 D x32_sys_call_table
$ sudo cat /proc/kallsyms | grep sys_call_table
ffffffff978002e0 D sys_call_table
ffffffff97801360 D ia32_sys_call_table
ffffffff97802120 D x32_sys_call_table
AFAIK、このファイルにはカーネルシンボルの現在のロードアドレスを含める必要がありますが、なぜ一致しないのですか?
/proc/kallsyms
KASLRだけに影響を受けるからですか?それでは、KASLRが有効になっていることをどのように確認できますか?
答え1
うん、そうです。KASLRによる。すべてのアドレスのオフセットは同じです。カーネルはこれを知らないのでSystem.map
更新しません。
/proc/kallsyms
KASLRが実行時にユーザー空間で有効になっているか、比較合計が欠落してSystem.map
いるか、x86でパニックを引き起こす可能性があるか(パニックが発生した場合にカーネルがオフセットをダンプする)ことを検出する方法はありません。