CIH文件型病毒检测消除程序
日期:2007年6月10日 作者: 查看:[大字体 中字体 小字体]-
;本程序在Tasm下编译通过
;CIH文件型病毒检测消除程序
GOFIRST MACRO
XOR CX,CX
XOR DX,DX
MOV AX,4200H
INT 21H ;文件指针指到文件首
ENDM
ALTERLINE MACRO
MOV DL,0DH
MOV AH,02H
INT 21H ;回车
MOV DL,0AH
MOV AH,02H
INT 21H ;换行
ENDM
COPYHANDLE MACRO
PUSH BX
MOV AH,45H
INT 21H ;复制文件把柄
MOV BX,AX
MOV AH,3EH
INT 21H ;关闭复制文件
POP BX
ENDM
DATA SEGMENT PARA PUBLIC 'DATA'
EXEFILE DB '*.EXE',00
DIRFILE DB '*.*',00
FILEBZ DB 00 ;文件标志(COM:00;EXE:FF)
DISKSGN DB 00 ;检测盘号
CURRDISK DB 00 ;当前盘号
DISKCHA DB 00,3AH,24H
DAT DB 256 DUP(24H) ;磁盘传送地址DISK TRANSPORT AREA
OVERMSG DB '所有CIH病毒已被清除!!!',0DH,0AH,24HFILESUF DB 2000 DUP(0) ;存放被检测文件部份内容
PE_HEAD DB 4 DUP(0) ;存放PE HEAD指针
VIRSUF DB 1024 DUP(0) ;存放CIH病毒头块程序
VIRPOINT DB 4 DUP(0) ;存放CIH 首块及链表区首指针
SECNUM DB 00,00 ;Number of FILE SECTIONS
T_ENTRY DB 4 DUP(0) ; true Entry RVA
FILEMSG DB ' ( CIH virus) ',24H
CLEAMSG DB ' killed !!',0DH,0AH,24H
CL_ZERO DB 1024 DUP(0) ;清零数据HZSM DB '正在扫描: ',24H
BLANK DB 60 DUP(20H),24H ;送空格
INITDIR DB "\",64 DUP(0) ;初始目录
CURRDIR DB "\ PE",00,63 DUP(24H) ;当前目录
UPDIR DB "..",00 ;上一级目录
DIRSUFF DB 4096 DUP(0) ;目录参数保留区
DIRSUFP DB 00,00 ;目录参数保留区指针
DIRNUM DB 01,00 ;盘中目录文件个数
EXENUM DB 00,00 ;盘中EXE文件个数
VIREXE DB 00,00 ;感染病毒EXE文件个数
DIRMSG DB "subDirectory number:",24H
EXEMSG DB "*.EXE numbers:",24H
ERRMSG DB "; which affected:",24H
DECSUF DB 11 DUP(0) ;二进制->十进制数存放区
TITL DB "CIH CLEAN ASM SOURCECODE TESTING",0dh,0ah
DB "kuibing kuibing@163.com",0DH,0AH,0dh,0ah
DB "The virus is a Parastic Virus which infects Windows 95/98 .EXE files",0DH,
0AH
DB 0DH,0AH,0dh,0ah,24H
BEGIN DB 07H,07H,"按任意键开始检测/清除病毒!!",0dh,0ah,24h
DATA ENDS
CODE SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
KILLCIH PROC FAR
MOV DI,0082H
MOV DL,[DI]
dec di
mov bl,[di]
PUSH DS
XOR AX,AX
PUSH AX
PUSH DS
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,STACK
MOV SS,AX
;确定检测盘号
cmp bl,0dh
jz disk2
AND DL,05FH
CMP DL,41H
JNZ DISK1
MOV BYTE PTR[DISKSGN],01H
MOV BYTE PTR[DISKCHA],41H
JMP DISK2
DISK1: CMP DL,42H
JNZ DISK3
MOV BYTE PTR[DISKSGN],02H
MOV BYTE PTR[DISKCHA],42H
JMP DISK2
DISK3: CMP DL,43H
JNZ DISK2
MOV BYTE PTR[DISKSGN],03H
MOV BYTE PTR[DISKCHA],43H
DISK2: MOV AH,19H
INT 21H ;取当前盘号
MOV BYTE PTR[CURRDISK],AL ;保存当前盘号
;
CMP BYTE PTR[DISKSGN],00H
JNZ DISK4
ADD AL,41H
MOV BYTE PTR[DISKCHA],AL
JMP DISK5
;
DISK4: MOV DL,BYTE PTR[DISKSGN]
DEC DL
MOV AH,0EH
INT 21H ;选择磁盘驱动器
;
DISK5: PUSH ES
MOV AX,0040H
MOV ES,AX
MOV DI,0087H
MOV AL,ES:[DI]
POP ES
CMP AL,00H
JZ CGA
MOV AX,0003H
JMP CLS
CGA: MOV AX,0006H
CLS: INT 10H ;清屏
MOV AH,09H
MOV DX,OFFSET TITL
INT 21H - [1] [2] [3] [4] [5] 下一页
-
- CIH文件型病毒检测消除程序 相关文章:
- ·CIH文件型病毒检测消除程序
- CIH文件型病毒检测消除程序 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:redhat 6.2下 Oracle8.1.6I+ APACHE1.3.14+PHP4.0.3完全安装
下一篇:在Solaris 10 X86上安装Oracle 10g RAC详解 (1)
精品推荐
热点TOP10
- ·DENX U-Boot及Linux使用手册
- ·图象处理中的边缘检测------canny算子
- ·UDT协议-基于UDP的可靠数据传输协议
- ·EZ-USB 68013A开发指南
- ·DDK 学习经验
- ·利用 wordXP 实现自动排班
- ·实模式与保护模式切换实例
- ·在Solaris 10 X86上安装Oracle 10g RAC详解 (1)
- ·利用Haffman 算法实现对ascii字符文件的压缩
- ·[仿真实验]操作系统的内存管理
- ·扩展Int 13H调用规范
- ·飞机躲避小游戏---是男人就撑100秒的制作
- ·小议char *和C语言的字符串
- ·跟我一起写 Makefile
- ·交换机MAC地址表的形成过程动态演示
- ·三维粒子系统在AS2中的实现
- ·Visual C++ ADO数据库编程入门
- ·[收藏]Web2.01,a rich internet application example
- ·视频与图像RGB/YUV格式详解
- ·消息报文处理组件(C/C++版)
特别推荐
- ·Symbian系统入门
- ·基于VC的WinSock网络编程实用宝典
- ·扩展Int 13H调用规范
- ·列出System.getProperty的所有返回值
- ·Linux2.4.18内核下基于LKM的系统调用劫持
- ·控件“树”中多选拖放功能的实现
- ·[分形]DLA团簇模型的摸拟
- ·samba和openldap结合实战
- ·教程:XSLT Designer快速入门指南
- ·设计面向Pocket PC浏览器的Web站点
- ·利用Haffman 算法实现对ascii字符文件的压缩
- ·跟我一起写 Makefile
- ·三维粒子系统在AS2中的实现
- ·汇编源码--DOSSYM
- ·消息报文处理组件(C/C++版)
- ·UDT协议-基于UDP的可靠数据传输协议
- ·利用 wordXP 实现自动排班
