首页
社区
课程
招聘
winXPSP3进ring0方法
发表于: 2010-4-8 12:24 4708

winXPSP3进ring0方法

2010-4-8 12:24
4708
现在还是菜鸟,希望能进一步学习。这个问题便出来了,无驱的进入ring0的方法还有吗?
如果在驱动里如何进入ring0?希望能给个完整的解答!

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 143
活跃值: (57)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
无驱进r0?有这种办法?不可能吧
2010-4-8 13:09
0
雪    币: 264
活跃值: (67)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
要是有那就太刺激了  等高手来解答吧
2010-4-8 14:37
0
雪    币: 934
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
R0是内核态,不用驱动怎么可能进入内核,不可能吧
2010-4-8 14:50
0
雪    币: 236
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
利用漏洞,论坛里有人发了,不知道现在漏洞堵上了没有。利用VDM系统。
2010-4-8 14:54
0
雪    币: 145
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
__asm{//去掉内存保护
                        cli
                        mov  eax,cr0
                        and  eax,not 10000h
                        mov  cr0,eax
                  }
这代码什么意思
2010-4-8 16:16
0
雪    币: 145
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
看了许多例子都有这两个代码
                  __asm{//去掉内存保护
                        cli
                        mov  eax,cr0
                        and  eax,not 10000h
                        mov  cr0,eax
                  }

                  *((ULONG*)Address) = (ULONG)MyNtOpenProcess;//HOOK SSDT

                  __asm{//恢复内存保护  
                        mov  eax,cr0
                        or   eax,10000h
                        mov  cr0,eax
                        sti
                  }
什么意思,恢复和写保护是什么意思
2010-4-8 16:17
0
雪    币: 143
活跃值: (57)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
利用漏洞....那也太不靠谱了,说不准明天就被MS给XX了,谁敢用来做商用的东西
2010-4-8 18:18
0
雪    币: 145
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
我去
连人都没了啊
编译如下蓝屏啊!
此hook openprocess出现的,在sp2还没出现过。。。。sp3出现的症状是驱动运行后,在运行exe文件就提示内存分配不足!~
2010-4-9 10:11
0
雪    币: 145
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
代码依然是堕落天才的那个。
上传的附件:
2010-4-9 10:13
0
雪    币: 64
活跃值: (138)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
mov  eax,cr0 进入ring0 masm指令。需要用到mmx指令集
2010-4-9 16:43
0
雪    币: 145
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
并不是不给楼上的钱,你们的回答一点水平都没有,连一个知识点都没有!
2010-4-13 22:08
0
雪    币: 64
活跃值: (138)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
__asm{//去掉内存保护
      cli
      mov  eax,cr0
      and  eax,not 10000h
      mov  cr0,eax
      }

      *((ULONG*)Address) = (ULONG)MyNtOpenProcess;//HOOK SSDT

      __asm{//恢复内存保护  
      mov  eax,cr0
      or   eax,10000h
      mov  cr0,eax
      sti
      }

最近比较忙,没上,来点小知识点,共同学习。
先解释一下cli,sti这两个指令,cli:禁止中断发生,sti:允许中断发生。
为什么在进入r0之前要禁止中断呢,因为在内核模式下,一旦发生中断,就是蓝屏。
再说说这个cr0寄存器,顾名思义control register,控制寄存器。这个寄存器具体的详细作用我就不在这赘述了,可以参看intel手册,其实啊,就是修改了cr0的值。cr0是一个32位的寄存器,其内容应该是这样PG 0000(中间都是0) ET TS EM MP PE 。
and  eax,not 10000h,前面保存了cr0的值,由于cr0不能直接参与运算,所以在eax其算好再给赋值回去。10000h,其实这个值应该为,10000000h,16进制,为了更直观一点我们写成32位的二进制
1000 0000 0000 0000 0000 0000 0000 0000
not 操作以后 0111 1111 1111 1111 1111 1111 1111 1111
第31位{PG} 0000(中间都是0)      {ET TS EM MP PE}共5位
然后再与操作
之前是开启的分页的,所以PG位是1,其他几个标志位暂时不管它,因为我们主要目的就是去掉分页。与后PG位置0,其他不变。再把eax传给er0。
恢复同理,只不过是反向,这里的去掉保护实际上就是在保护模式下让内存不分页,直接就可以找到线性地址。OK,不知道这样说,满意不?
2010-4-25 11:48
0
游客
登录 | 注册 方可回帖
返回