什么是uu ksymtab?在linux内核中
当我们输入'proc/kallsyms'或'system.map'时,我们会得到如下符号什么是uu ksymtab?在linux内核中,linux,kernel,symbols,Linux,Kernel,Symbols,当我们输入'proc/kallsyms'或'system.map'时,我们会得到如下符号 .... c033718c T nf_hook_slow c04ca284 r __ksymtab_nf_hook_slow c04ca28c r __ksymtab_nf_hooks c04d24a0 r __kcrctab_nf_hook_slow c04d24a4 r __kcrctab_nf_hooks c04e9122 r __kstrtab_nf_hook_slow c04e9179 r __k
....
c033718c T nf_hook_slow
c04ca284 r __ksymtab_nf_hook_slow
c04ca28c r __ksymtab_nf_hooks
c04d24a0 r __kcrctab_nf_hook_slow
c04d24a4 r __kcrctab_nf_hooks
c04e9122 r __kstrtab_nf_hook_slow
c04e9179 r __kstrtab_nf_hooks
c054d854 D nf_hooks
c0571ca0 d nf_hook_mutex
....
EXPORT\u symbol()
定义:
-符号的字符串名称\uuuu kstrtab\uuu
-一种包含符号信息的结构:其地址、\uuuu ksymtab\uu
的地址等\uuu kstrtab\uu
-符号控制和(CRC)的地址-例如,它用于检查内核或模块是否提供与给定内核模块所需完全相同的符号。如果模块需要具有给定名称和CRC的符号,并且内核提供具有该名称但具有不同CRC的符号(例如,如果模块是为不同内核版本编译的),则模块加载程序将拒绝加载该内核模块(除非禁用此检查)\uuuuukcrctab\uuu
EXPORT\u SYMBOL()
宏的实现
EXPORT\u SYMBOL()
定义,并找到变量的类型。在内核3.11中,它是中定义的struct kernel\u symbol
。有了这个结构的定义和地址,我想,您可以得到符号的地址:struct kernel\u symbol::value
。我自己也没试过
但是请注意,\uksymtab\unf\uhook
用于nf\uhook
,而不是nf\uhook
。名称必须匹配<代码>nf_钩子和nf_钩子
是不同的实体
nf\u hooks
是一个数据项,因此如果CONFIG\u kallsyms\u ALL为“n”,它可能不会显示在/proc/kallsyms中