LinuxDev 板


LINE

之前發的文 好像被砍掉了...現在來自回 因為學習Kernel路上有遇到些問題, 目前想個法子解決了@@ 想做的是 memory某段address中 要偵測這address是否被修改 感謝有大大提供各種不同的方法。 這邊來說我想的方法是比較被動的方式。 想法: 把某段memory位置 設定成Read Only 讓他進Page fault handler 然後再到Page fault handler 看看memory的值被改成多少? 譬如原本是 a = 5; 設定 &a是Read Only 當modify 的時候會進Page fault handler 但我希望 1 < a < 10 Page fault handler 會檢查 a被改成甚麼值 若是 a = 6; 那ok,return回去;若a = 11; 則Page fault。 感謝各位大大賜教~ --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.224.96.66
1F:→ mayasky:你有看過那篇被刪除的訊息嗎?我沒刪,詢問另位版主中 01/08 01:52
2F:推 yvb:page fault時, a應該尚未被修改,也尚無法被修改,所以如何檢查? 01/08 02:10
3F:→ yvb:如果就這麼return回去,仍會執行同指令,結果再度page fault吧. 01/08 02:13
回Y大的話,a 的確尚未修改。但是進page fault時候會傳入error code跟pt_regs 我可以根據error code判定是屬於哪一種情況。若a = 6 則 page fault 幫忙 把 a = 5 改成 a=6; 然後修改regs->ip(跳到a=5;這指令後面) 和 return. ※ 編輯: BitTorrent 來自: 36.224.96.66 (01/08 11:28)
4F:推 sivle:我也沒刪。。。大家分享心得的 我不會刪掉才是 01/08 11:38
5F:推 yvb:真奇怪, 有文章被系統暗黑掉了... @.@ 01/08 12:34
6F:→ yvb:判斷page fault後續狀況的問題, 我以為會相當複雜, 而且會是 01/08 12:36
7F:→ yvb: machine dependant; 最主要是要分析 ip 指向的指令做什麼... 01/08 12:37
8F:→ yvb:比方 x86 的 mov 指令, 多種定址法的指令長度都不盡相同... 01/08 12:42
9F:→ yvb:不知原PO是實作在什麼平台上, 有什麼kernel函式協助分析指令, 01/08 12:49
10F:→ yvb:或是我想太多, 其實光就 pt_regs 就足以判斷? 01/08 12:51
我作在x86, 有mov有分 movl , movw 等等 我舉個例子 idt_table2[i].offset_low = 0xbeef; 77: 44 89 e6 mov %r12d,%esi 7a: 66 c7 03 ef be movw $0xbeef,(%rbx) 7f: 41 b8 ef be 00 00 mov $0xbeef,%r8d 85: 48 c7 c7 00 00 00 00 mov $0x0,%rdi (unsigned long )((char *)(regs->ip+=5)); *(unsigned long *)address = value; //modified value 或者 idt_table2[i].offset_high = 0x12345678 7b: c7 43 08 78 56 34 12 movl $0x12345678,0x8(%rbx) 82: ba 78 56 34 12 mov $0x12345678,%edx 87: 48 c7 c7 00 00 00 00 mov $0x0,%rdi 8e: 31 c0 xor %eax,%eax (unsigned long )((char *)(regs->ip+=7)); //由c7 43 數到ba共7個 *(unsigned long *)address = *(ggyy+1); //modified value ※ 編輯: BitTorrent 來自: 36.224.96.66 (01/08 16:03)
11F:推 yvb:還有一些問題: (1) 造成 page fault 的是 userspace process 01/09 02:08
12F:→ yvb: 還是 kernel thread? (2) handler改值前後, 需要切換 RO 嗎? 01/09 02:09
13F:→ yvb: (3) 除了 mov, 其它如 add, xchg 等又是如何? 01/09 02:15
14F:→ yvb:關於 x86 指令集分析的處理, 不知原PO是自行包辦, 01/09 02:19
15F:→ yvb: 或是如何叫用 kernel 哪些函式來協助完成? 01/09 02:20
16F:推 yvb:問題 (1) 應改為 造成 page fault 的是 kernel thread, 01/09 12:49
17F:→ yvb: process 的 user space 或 kernel space ? 01/09 12:49
18F:推 yvb:此外還有更複雜的情況, 比方 a 為 int, 那麼 01/09 12:56
19F:→ yvb:*(((char *)&a)+2)=1 或是 *(int *)(((char *)&a)-2)=-1 之類. 01/09 12:58
20F:→ yvb:當然, 如果一堆變數 b, c, ... 都和 a 同 page 時, 那效能... 01/09 13:02
(1) 一個system call by user mode (2) 需要切換 RO (3) 我都是objdump去看他,所以再複雜的情況,應該都可找出關鍵的assembly code same page 我到沒有想過~~ ※ 編輯: BitTorrent 來自: 114.25.193.147 (03/17 11:01)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP