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 本新闻共 6页,当前在第 5页 1 2 3 4 5 6 上一篇:在汇编中使用浮点运算的 DEMO 下一篇:天龙还原精灵卸载器源代码 |