- 論壇徽章:
- 8
|
回復(fù) 1# leishaoweiwu
首先這ubuntu, 沒什么關(guān)系.
模塊的通過__EXPORT_SYMBOL把符號(hào)導(dǎo)出到
__attribute__((section("__ksymtab_strings")
如果你只是想將模塊文件中的導(dǎo)出函數(shù)"截獲", 以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
復(fù)制代碼 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
復(fù)制代碼 我覺得這應(yīng)該不是你的需求, 你或許是在運(yùn)行的內(nèi)核中動(dòng)態(tài)的檢測(cè)截獲加載的內(nèi)核的符號(hào)導(dǎo)出表.
簡(jiǎn)單看了下load module的代碼
你可以注冊(cè)一個(gè)module 通知鏈
register_module_notifier
這個(gè)notifier block會(huì)在do_init_module調(diào)用, 正好是模塊加載最后一步執(zhí)行.
struct module的成員
const struct kernel_symbol *syms;正好指向__ksymtab這個(gè)section
你試著看看應(yīng)該能找到所有export的代碼
個(gè)人見解.
|
|