- 论坛徽章:
- 8
|
回复 1# leishaoweiwu
首先这ubuntu, 没什么关系.
模块的通过__EXPORT_SYMBOL把符号导出到
__attribute__((section("__ksymtab_strings")
如果你只是想将模块文件中的导出函数"截获", 以auth_rpcgss为例
/lib/modules/3.19.5-200.fc21.x86_64/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko.xz- readelf -s auth_rpcgss.ko | grep __ksymtab_
- 220: 0000000000000020 16 OBJECT GLOBAL DEFAULT 10 __ksymtab_gss_pseudoflavo
- 238: 0000000000000020 16 OBJECT GLOBAL DEFAULT 12 __ksymtab_g_verify_token_
- 247: 0000000000000010 16 OBJECT GLOBAL DEFAULT 10 __ksymtab_gss_mech_put
- 288: 0000000000000030 16 OBJECT GLOBAL DEFAULT 12 __ksymtab_gss_mech_regist
- 303: 0000000000000000 16 OBJECT GLOBAL DEFAULT 10 __ksymtab_gss_mech_get
- 365: 0000000000000010 16 OBJECT GLOBAL DEFAULT 12 __ksymtab_g_token_size
- 366: 0000000000000000 16 OBJECT GLOBAL DEFAULT 12 __ksymtab_g_make_token_he
- 367: 0000000000000040 16 OBJECT GLOBAL DEFAULT 12 __ksymtab_gss_mech_unregi
- 379: 0000000000000050 16 OBJECT GLOBAL DEFAULT 12 __ksymtab_svcauth_gss_fla
- 383: 0000000000000060 16 OBJECT GLOBAL DEFAULT 12 __ksymtab_svcauth_gss_reg
复制代码 or 这么做- readelf -p __ksymtab_strings auth_rpcgss.ko
- String dump of section '__ksymtab_strings':
- [ 0] g_verify_token_header
- [ 16] g_make_token_header
- [ 2a] g_token_size
- [ 37] gss_mech_put
- [ 44] gss_pseudoflavor_to_service
- [ 60] gss_mech_get
- [ 6d] gss_mech_unregister
- [ 81] gss_mech_register
- [ 93] svcauth_gss_register_pseudoflavor
- [ b5] svcauth_gss_flavor
复制代码 我觉得这应该不是你的需求, 你或许是在运行的内核中动态的检测截获加载的内核的符号导出表.
简单看了下load module的代码
你可以注册一个module 通知链
register_module_notifier
这个notifier block会在do_init_module调用, 正好是模块加载最后一步执行.
struct module的成员
const struct kernel_symbol *syms;正好指向__ksymtab这个section
你试着看看应该能找到所有export的代码
个人见解.
|
|