亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1982 | 回復(fù): 8
打印 上一主題 下一主題

[內(nèi)核模塊] 如何在64位ubuntu中截獲內(nèi)核模塊的導(dǎo)出函數(shù)? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-05-26 11:02 |只看該作者 |倒序?yàn)g覽
我想在64位ubuntu中截獲內(nèi)核模塊的導(dǎo)出函數(shù),求思路,最好是代碼

論壇徽章:
8
羊年新春福章
日期:2015-03-19 02:03:312015亞冠之北京國(guó)安
日期:2015-06-16 22:04:45程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-23 22:20:00每日論壇發(fā)貼之星
日期:2015-06-23 22:20:002015亞冠之首爾
日期:2015-06-24 19:18:072015亞冠之廣州恒大
日期:2015-08-06 10:29:442015亞冠之柏太陽神
日期:2015-11-02 11:21:0515-16賽季CBA聯(lián)賽之遼寧
日期:2015-12-09 15:05:02
2 [報(bào)告]
發(fā)表于 2015-05-26 13:02 |只看該作者
回復(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
  1. readelf  -s auth_rpcgss.ko | grep __ksymtab_
  2.    220: 0000000000000020    16 OBJECT  GLOBAL DEFAULT   10 __ksymtab_gss_pseudoflavo
  3.    238: 0000000000000020    16 OBJECT  GLOBAL DEFAULT   12 __ksymtab_g_verify_token_
  4.    247: 0000000000000010    16 OBJECT  GLOBAL DEFAULT   10 __ksymtab_gss_mech_put
  5.    288: 0000000000000030    16 OBJECT  GLOBAL DEFAULT   12 __ksymtab_gss_mech_regist
  6.    303: 0000000000000000    16 OBJECT  GLOBAL DEFAULT   10 __ksymtab_gss_mech_get
  7.    365: 0000000000000010    16 OBJECT  GLOBAL DEFAULT   12 __ksymtab_g_token_size
  8.    366: 0000000000000000    16 OBJECT  GLOBAL DEFAULT   12 __ksymtab_g_make_token_he
  9.    367: 0000000000000040    16 OBJECT  GLOBAL DEFAULT   12 __ksymtab_gss_mech_unregi
  10.    379: 0000000000000050    16 OBJECT  GLOBAL DEFAULT   12 __ksymtab_svcauth_gss_fla
  11.    383: 0000000000000060    16 OBJECT  GLOBAL DEFAULT   12 __ksymtab_svcauth_gss_reg
復(fù)制代碼
or 這么做
  1. readelf -p __ksymtab_strings auth_rpcgss.ko

  2. String dump of section '__ksymtab_strings':
  3.   [     0]  g_verify_token_header
  4.   [    16]  g_make_token_header
  5.   [    2a]  g_token_size
  6.   [    37]  gss_mech_put
  7.   [    44]  gss_pseudoflavor_to_service
  8.   [    60]  gss_mech_get
  9.   [    6d]  gss_mech_unregister
  10.   [    81]  gss_mech_register
  11.   [    93]  svcauth_gss_register_pseudoflavor
  12.   [    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è)人見解.

論壇徽章:
20
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-16 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-18 06:20:00每日論壇發(fā)貼之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16賽季CBA聯(lián)賽之江蘇
日期:2017-06-26 11:05:5615-16賽季CBA聯(lián)賽之上海
日期:2017-07-21 18:12:5015-16賽季CBA聯(lián)賽之青島
日期:2017-09-04 17:32:0515-16賽季CBA聯(lián)賽之吉林
日期:2018-03-26 10:02:16程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-15 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-07-07 18:37:512015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-08-17 12:21:08
3 [報(bào)告]
發(fā)表于 2015-05-26 13:57 |只看該作者
學(xué)習(xí)了,不過樓主這是要解決什么問題呢?安全問題?

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2015-05-26 15:05 |只看該作者
謝謝您,我是想在64位的ubuntu中hook某個(gè)函數(shù),比如說鉤住usb_submit_urb這個(gè)函數(shù),在執(zhí)行這個(gè)函數(shù)之前先截獲這個(gè)函數(shù)所提交的urb信息,再和我的白名單中的策略作對(duì)比,要是符合的話,就允許相應(yīng)的外設(shè)訪問,否則就禁止。32位ubuntu下的我已經(jīng)實(shí)現(xiàn)了,現(xiàn)在在64位下研究,想在64位下找到相應(yīng)的hook函數(shù),或者還有沒有其他的方法?回復(fù) 2# firocu


   

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2015-05-26 15:08 |只看該作者
在64位的ubuntu中hook某個(gè)函數(shù),比如說鉤住usb_submit_urb這個(gè)函數(shù),在執(zhí)行這個(gè)函數(shù)之前先截獲這個(gè)函數(shù)所提交的urb信息,再和我的白名單中的策略作對(duì)比,要是符合的話,就允許相應(yīng)的外設(shè)訪問,否則就禁止。回復(fù) 3# nswcfd


   

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2015-05-26 15:33 |只看該作者
請(qǐng)問有什么好的思路嗎?回復(fù) 5# leishaoweiwu


   

論壇徽章:
20
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-16 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-18 06:20:00每日論壇發(fā)貼之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16賽季CBA聯(lián)賽之江蘇
日期:2017-06-26 11:05:5615-16賽季CBA聯(lián)賽之上海
日期:2017-07-21 18:12:5015-16賽季CBA聯(lián)賽之青島
日期:2017-09-04 17:32:0515-16賽季CBA聯(lián)賽之吉林
日期:2018-03-26 10:02:16程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-15 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-07-07 18:37:512015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-08-17 12:21:08
7 [報(bào)告]
發(fā)表于 2015-05-26 15:52 |只看該作者
不好意思,不明白為什么32位跟64位有區(qū)別?跟hook機(jī)制有關(guān)系嗎?

如果性能不是特別concern的話,可以使用kprobe/jprobe/kretprobe之類的。
* jprobe可以查看入口的參數(shù)值,但是怎么影響原始的控制流還有待研究(比如修改urb的某個(gè)字段為非法值?)。
* kretprobe在函數(shù)返回的時(shí)候起作用,作為訪問控制的時(shí)機(jī)有些晚。
* 最強(qiáng)大的是kprobe,不過這就跟反匯編緊密的耦合起來,受版本變化影響。

還有一種方法,就是在你的訪問控制模塊里面,重新實(shí)現(xiàn)一遍usb_submit_urb函數(shù),在入口的時(shí)候加上訪問控制的代碼。此外,把原始的usb_submit_urb的入口替換為一個(gè)jmp命令。

PS,如果允許重新編譯vmlinx的話,就在usb_submit_urb的入口處插入一個(gè)callback(函數(shù)指針),導(dǎo)出這個(gè)符號(hào)。在訪問控制模塊中實(shí)現(xiàn)callback,注冊(cè)函數(shù)指針。

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2015-05-26 20:22 |只看該作者
恩,我在32位ubuntu中就是用第二種方法的,在原始的usb_submit_urb的入口替換為一個(gè)jmp命令,執(zhí)行usb_submit_urb之前跳轉(zhuǎn)到訪問控制函數(shù),然后再執(zhí)行執(zhí)行usb_submit_urb。已經(jīng)能夠成功實(shí)現(xiàn),我現(xiàn)在想在64位ubuntu中用類似的思路實(shí)現(xiàn),可是有問題,在32位ubuntu中要想hook函數(shù)必須將CPU寄存器CR0的寫保護(hù)位置為0,我現(xiàn)在的不知道是不是64位ubuntu下只有把CPU寄存器CR0的寫保護(hù)位置0才能hook函數(shù)?回復(fù) 7# nswcfd


   

論壇徽章:
20
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-16 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-18 06:20:00每日論壇發(fā)貼之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16賽季CBA聯(lián)賽之江蘇
日期:2017-06-26 11:05:5615-16賽季CBA聯(lián)賽之上海
日期:2017-07-21 18:12:5015-16賽季CBA聯(lián)賽之青島
日期:2017-09-04 17:32:0515-16賽季CBA聯(lián)賽之吉林
日期:2018-03-26 10:02:16程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-15 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-07-07 18:37:512015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-08-17 12:21:08
9 [報(bào)告]
發(fā)表于 2015-05-27 16:39 |只看該作者
不好意思,不太了解這個(gè)細(xì)節(jié)。最好參閱一下intel的cpu手冊(cè)。

不過跟蹤register_kprobe的反匯編,沒有發(fā)現(xiàn)mov %cr0……

不管需不需要,先嘗試一下唄,大不了crash一下,:p
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP