庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>安全技术>黑客攻防>安全初步>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

恢复被CIH破坏的硬盘数据

 作者:本站收集   日期:2005-4-29
字号选择〖 〗/ 双击滚屏 单击停止   
恢复被CIH破坏的硬盘数据

没多长时间就又到4.26了,趁这日子俺也谈谈CIH发作后的数据恢复原理及方法:

  CIH发作时先破坏Flash Memory,再写硬盘数据,直到写完整个硬盘为止,一般情况下,用户再病毒发作后数分钟内就已关机此时写盘代码还来不几写完整个硬盘,这也就是世面上哪些公司所讲的能恢复数据的原因。你可以试一下发作时几小时不关机,再拿去让他恢复,看看他能给你找会啥来。
  
   能恢复数据原应已讲的很清楚。先假设用户在CIH发作后几分钟内关机。此时用俺写的《硬盘数据挽救者》只要填写原分区容量就可分分钟找回扩展分区数据,再加上点手工操作便可找回大部分C盘数据。因整个程序源代码太长,不便阅读,下面就以部分核心程序提取出来单写的一个汇编程序为列说一下恢复原理。
  
ode segment para public 'code'
org 100h
assume cs:code,ds:code,ss:code
start:
jmp init
tsr_start:
cmp dl,80h ;比较是否是C盘。
jnz go_oldint13
cmp ah,3 ;比较是否进行写操作。
jnz go_oldint13
cmp cx,1 ;比较是否写C盘的第一扇区。
jnz disable_write
cmp dh,0 ;比较是否写C盘的0面0道。(此处DH,1时禁止对WINDOWS引导扇区进行写操作)
jnz disable_write
go_oldint13:
jmp cs:dword ptr old_int13_off ;跳转到原始中断13H处继续执行其他操作 disable_write:
xor ah,ah ;AH=0设置正确操作AH的返回值,保证以下操作可继续执行。
push bp
mov bp,sp

mov bp,[bp+6] ;将堆栈基地址加6(也就是将堆栈指针加6)因执行INT13H时
; 将标志寄存器,IP指针,代码段CS,保存入栈每个寄存器在
; 堆栈中站2所以+6将3个寄存弹栈赋给BP,
push bp
popf ;将原始标志寄存器的值
pop bp
clc ;CF=0赋给现标志寄存器
retf 2
;以上操作是强行将CF=0以告诉计算机所执行的是正确的,如果CF=1有进位则为
; 错误,用FDISK时可能中途退出,

old_int13_off dw ? ;定义原INT13H偏移量
old_int13_seg dw ? ;定义原INT13H段地址
tsr_End: ;
tsr_length equ $-tsr_start

init:
xor ax,ax
mov es,ax
mov si,es:[13h*4] ;取INT 13在中断向量表中偏移量地址
cmp si,offset tsr_start ;比较程序是否已经运行
jnz not_stay
ret
not_stay:
mov old_int13_off,si
mov di,es:[13h*4+2]
mov old_int13_seg,di ;将中断向量表中INT 13替换为自己的INT 13处理程序
lea ax,tsr_start
mov es:[13h*4],ax
mov ax,cs
mov es:[13h*4+2],ax

mov ah,9
mov dx,offset message
int 21h
mov dx,offset tsr_end+1

int 27h ;执行程序并驻留。
code ends
end start

  恢复方法首先运行此程序,再用FDISK进行分区后你会发现扩展分区数据已全部找回。

  另:外行看热闹,内行看门道,之所以说CIH是种非常厉害病毒并不是因为他能破坏Flash Memory,而是他的编程手法非常高超且独特。在WIN下一般应用程序执行都是在Ring 3上,象对硬盘读写等低级操作须单独写一个VxD切换到Ring 0上运行。但如果这样做的话又失去了病毒意义。CIH使用了一种技术,采用Intel处理器 的中断从Ring 3转到Ring 0从而实现了VMM功能调用。俺没有很详细的读完全部CIH代码.说没有时间是给自己找借口,根本原因是俺现有水平有限,达不到能轻松理解的境界。

上一篇:互联网安全标准    下一篇:基于NT(2000)建立安全WEB站点的解决方案(3)  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-4-29
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿