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灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP