首页
社区
课程
招聘
[原创]fuck trap0e trap03 trap01
发表于: 2017-1-10 15:23 7407

[原创]fuck trap0e trap03 trap01

2017-1-10 15:23
7407

0. 不要脸的标注一个原创
1. 抄袭V神的代码和思路 http://bbs.pediy.com/showthread.php?t=194942,改了3个重要的bug,让代码跑起来。
         1.1  解决PTE中不可执行标志位设置的bug,这个bug会导致cpu高
         1.2  解决单步逻辑bug,之前OD不能单步
         1.3  加一些和od通信的代码
2. 驱动功能:模拟int3异常。其实OD并没有真的往被调试进程里面写进0xcc,但是一切调试功能正常。
3. 使用
         3.1 xp + PAE
         3.2 加载驱动,打开od就可以用了。注意od的名字和驱动里面列出来的名字要相同。

4. 原理
         1. Int3Address = 要下断点的虚拟地址
         2. PhAddress = Int3Address所在2M页的物理地址
         3. PAE = PhAddress 的PAE表结构
         4. 设置PAT.xd位,见intel手册4.4.2  table 4-9 。这样以后这一页就不可执行了。称为pagehook
              63 (XD) If IA32_EFER.NXE = 1, execute-disable (if 1, instruction fetches are not allowed from the 2-MByte page controlled by this entry; see Section 4.6); therwise, reserved (must be 0)
         5. hook trap01 trap0e 得到mytrap01 mytrap0e
         6. 当代码读到PAE表示的虚拟内存页的时候不会触发任何异常。
         7. 当代码执行到PAE表示的虚拟内存页的时候,都会触发int0e,进入到我们的mytrap0e,具体处理分情况讨论,令ExecAddr = 代码执行的地址
               7.1 当ExeAddr 不等于Int3Address
                       7.1.1 做步骤4的反操作,取消pagehook。
                       7.1.2 转给int1处理,单步执行这条指令(通过设置eflags中单步位实现)
                       7.1.3 当执行到mytrap01的时候ExecAddr这条指令已经执行过了,
                                7.1.3.1. 取消eflags中单步位
                                7.1.3.2  执行4中的操作,pagehook
                                7.1.3.3  恢复到ExecAddr的下一条指令去执行。(这条指令的处理会重复7的处理方式)
               7.2 当ExeAddr 等于Int3Address
                       7.2.1 做步骤4的反操作,取消pagehook。
                       7.2.2 call mytrap03,模拟实现int 3中断,达到软件效果了。
         8. 其他的处理,比如区分OD设置的单步和7中使用的单步异常,具体看代码

致谢 V神~

联系我:646535763@qq.com
ph.rar


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 2
支持
分享
最新回复 (7)
雪    币: 3574
活跃值: (4719)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
收藏了 谢谢分享~
2017-1-10 18:32
0
雪    币: 223
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
卧槽,牛逼了我的大神,下来学习学习下
2017-1-11 00:09
0
雪    币: 112
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
正好看到v校的代码,有些地方不理解。感谢楼主。
2017-1-11 00:15
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
32位系统的吗?先留个mark
2017-1-11 02:26
0
雪    币: 324
活跃值: (60)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
精前留名
2017-1-11 08:45
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
7
pagehack现在应该是结束状态了
2017-1-12 23:40
0
雪    币: 1431
活跃值: (4423)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
8
学习了
2019-11-22 11:45
0
游客
登录 | 注册 方可回帖
返回
//