电脑系统36871,电脑系统升级怎么升级win10

个人怀疑中标了,最近出现一个时间病毒

我从天下网吧上看到的帖子

TPVO/3783 病毒是一种传染性、隐蔽性都很强的病毒,它的独到之处是可以传染 WINDOWS 文件,使病毒可以在 WINDOWS 执行时驻留内存。

该病毒传染硬盘、软盘引导区及 WINDOWS、DOS 可执行程序,包括.EXE.COM.OVL.386 等等文件,不传染带覆盖的文件,程序被传染后长度增加 3783 字节, 文件日期被 加上 100 年作为传染标记。

该病毒驻留内存后,用 DIR 命令看不出文件长度的变化,用 INT 13H 读出的磁盘引导记录是正常的,而不是带毒的引导记录,用应用程序读出的带毒文件也都是正常的, 但是由 ARJ、PKZIP、RAR、LHA、BACKUP、MSBACKUP、TELIX 七个程序读出的文件却是带毒的,所以被这些压缩程序压进文件包或用 TELIX 通过调制解调器传到其他地方的文件 是带毒的,由此可见该病毒在隐藏和传播上的用心良苦。

该病毒在传染硬盘主引导区时隐藏于 0 柱面 0 头 5 扇区,传染软盘引导区时隐藏于新格式化的第 81 个磁道,传染文件时附在文件尾部,病毒本身不加密。 当带毒的 WINDOWS 系统运行时,根目录中的虚拟内存文件 386SPART.PAR 属性会变成普通属性,用 DIR 命令可以列出。

病毒分析:

1. 驻留内存及截取中断 该病毒采用修改内存控制块的方法来驻留内存,如果 UMB 存在,病毒会驻留在 UMB中,该病毒驻留内存后截取 INT 21H 和 INT 13H 中断,来完成对文件和引导区的传染, 在截取 INT 21H 时,该病毒采取了与众不同的方法。下面是 INT 21H 内部片断,在中断程序完成了初始化后,将 AH 中的功能号放在 BX 中再乘 2,再用查表的办法得到相应子 程序的地址,然后用近调用来执行相应子程序,具体见下:

... FDC8:4198 8ADC MOV BL,AH ;AH 为子功能号 FDC8:419A D1E3 SHL BX,1 ;放于 BX 中再乘 2 ... FDC8:41EA 2E8B9F9E3E MOV BX,CS:[BX+3E9E] ;3E9E 为各功能地址表的基地址 FDC8:41EF 36871EEA05 XCHG BX,SS:[05EA] ;调用地址在 05EA 中 FDC8:41F4 368E1EEC05 MOV DS,SS:[05EC] FDC8:41F9 36FF16EA05 CALL SS:[05EA] ;调用相应功能的子程序

...

病毒在驻留时先截取 INT 2AH,在 INT 2AH 中检测到使用的堆栈为 MSDOS.SYS 堆栈段时,表示中断由 INT 21H 发出,这时由中断返回地址得到 MSDOS.SYS 程序段的段地址, 再查找以上几句指令并将 CALL SS:[05EA] 改为 CALL XXXX:053D 指向病毒代码,在完成修改、传染等功能后再转向原来的 INT 21H 执行。由于这一段代码在 INT 21H 的第一百 多句以后,当使用 DOS=HIGH 参数启动时这一段代码被移到 HMA 中, 所以该病毒的截取手段有很大的欺骗性,不但能骗过几乎所有内存监视程序,而且即使用手工反汇编 INT 21H中断程序都不一定能觉察到异常之处。

在截取 INT 13H 时,病毒先使用未公开中断 INT 2FH 的 1300H 功能来得到 DOS 内部设备驱动程序使用的原始 INT 13H 地址,然后在 BIOS 中随机寻找一个中断号大于 E0H 号的INT XX代码,将这个中断向量指向病毒的 INT 13H服务程序,然后将 DOS 保存的原始INT 13H 地址改成指向 BIOS 中的 INT XX 指令,使得在不同的计算机中指向病毒 程序的中断向量号都不相同。

2. 传染及其他部分

病毒截取 INT 13H 来传染磁盘的引导区,在进行普通的读写功能时,病毒并不传染,所以磁盘读写速度并不明显减慢,只有在对磁盘的引导区进行读写时,病毒才进行传染。 传染硬盘主引导区时,病毒隐藏在保留磁道 0 柱面 0 头第 5 扇区开始的 8 个扇区中,原引导记录被保存在 0 柱面 0 头第 13 扇区。一般软盘只有 80 个磁道,病毒在传染软 盘引导记录时,先格式化出一个第 81 磁道,再将自身隐藏于第 81 磁道 1 扇区开始的 8个扇区中,原引导记录被保存在第 81 磁道第 9 扇区。当有程序读取引导记录时, 病 毒将原引导记录读出送回。

病毒截取 INT 21H 来完成可执行文件的传染和一些欺骗功能,在 INT 21H 的 11H、12H、4EH、4FH 匹配文件寻找功能中,病毒返回正确的文件长度和时间,在 57H 读写文 件时间功能中,病毒返回正确的文件时间,在 3FH 读文件功能中, 如果读到文件被修改的部分,病毒将返回正确的内容,在 40H 写文件功能中,如果写已被传染的文件, 病毒 将文件复原,到以后关闭文件时重新传染。结果在应用软件看来,带毒文件没有任何异常之处。</p>

当执行 INT 21H 的 3DH 打开文件、3EH 关闭文件、43H 文件属性功能、56H 文件改名、4BH 执行文件时,病毒对文件进行传染,传染后病毒附于文件尾部,文件开始指针被 指向病毒入口处。对于.COM 文件,病毒将文件第一句指令改为 JMP XXXX 跳转到病毒入口处,对于普通.EXE 文件,病毒将文件入口指针指向病毒入口处, 将堆栈指向病毒尾部 200H处。

下面详细分析病毒对 WINDOWS 可执行文件的修改,由于 WINDOWS 可执行文件的资料很少见,这里先简单介绍一下 WINDOWS 文件的结构:WINDOWS 文件由 DOS 执行部分和 WINDOWS 执行部分组成,DOS 部分只是简单的打印一句提示信息即退出,WINDOWS 部分以覆盖的方式位于文件后部。文件报头分两部分,第一部分为普通的.EXE 文件报头, 第 二部分为 "NE" 新格式可执行报头,有关部分说明如下:

普通 .EXE 文件报头 18H 字重分配表偏移( WINDOWS 文件必须大于 0040H) 3CH 双字 "NE" 可执行报头在程序中的偏移 "NE" 可执行报头 00H 2 字节 "NE" 符号 (长 40H 字节) 14H 字 程序入口 IP 16H 字 程序入口段的段地址记录号 18H 双字 程序初始 SS:SP 1CH 字 段地址表中的记录数 22H 字 段地址表在程序中的偏移 32H 字节 段大小的计数单位 (移位值)

程序中所有的段都由段地址表中的一个记录来描述,包括段在程序中的偏移、段的大小、段的属性、段装入时要分配内存的大小,执行程序时,系统由入口段的记录号查段地 址表得出这个段在程序中的位置和大小,将代码装入内存,再由入口 IP开始执行。 段地址表中每个记录占用 8 个字节,格式如下:

00H 字 本段在程序中的偏移 (乘以计数单位) 02H 字 本段的长度 (单位:字节) 04H 字 本段的属性 06H 字 要分配的容量 (单位:字节)

病毒增加了一个段地址表记录来描述病毒代码段属性,在 WINDOWS 文件中, 段地址表一般紧接着 "NE" 报头存放,段地址表后面也紧接着其他数据,中间没有多余字节,所 以病毒将整个 "NE" 报头和段地址表前移了 8 字节,然后在空出的 8 字节中写下一个新的段地址表记录, 再将程序入口段记录号改到指向这个新的记录, 具体改动的数据有: 003CH处的 "NE" 报头偏移减 8,"NE" 报头中 16H 的入口段记录号改为病毒段,1CH 的段地址表记录数加 1,另外将 04H、24H、26H、28H、2AH 中其他相关表的偏移加 8。

2. 病毒源码:

点此下载

杀毒要点:

1.内存中病毒的检测

检测内存中的病毒可以用病毒自己的检测方法,设置 AX=187FH,BX=4453H 调用INT 21H,如果返回 BX=87A1H 表示内存中已有 3783 病毒,由于该病毒有很多欺骗手段,要检测引导区或文件上的病毒必须先用干净系统盘重新启动。

2.引导区中病毒的检测和清除

用磁盘编辑工具观察引导区,如果发现偏移 003EH 的内容为 FA 33 DB 8E D3 BC 00 7C 8E C4 表示引导区中已有病毒,对于硬盘,可用 CX=000DH,DX=0080H,INT 13H 读出原引导记录,对于软盘,可用 CX=5009H,DX=0000H,INT 13H 读出原引导记录, 再写入引导区就可以清除病毒,清除硬盘引导区的 3783 病毒也可以简单地用 FDISK /MBR 来完成。

3.可执行文件中病毒的检测和清除

3783 病毒在文件中保存了原文件的文件头,位置是病毒开始后偏移第 0E87H 处算起的 40H 字节,由于 3783 病毒代码不加密,所以检测和清除相对比较简单,对于 DOS 文件,可以用PCTOOLS 等软件查找字符串

0E 1F E8 00 00 5E 83 EE 05 56 06 B8 7F 18,

或用DEBUG 反汇编文件的前几句,如果发现字符串或发现以下指令:

XXXX:0100 E9YYYY JMP YYYY ;.COM 文件的第一句

...

XXXX:YYYY 0E PUSH CS ;.EXE 文件的第一句

1F POP DS

E80000 CALL ZZZZ

XXXX:ZZZZ 5E POP SI

83EE05 SUB SI,+05

56 PUSH SI

06 PUSH ES

B87F18 MOV AX,187F

BB5344 MOV BX,4453

CD21 INT 21 (DOS)

81FBA187 CMP BX,87A1

就可以确认文件已被 3783 病毒传染,手工消毒可以用以下办法:先记下找到字符串的位置,再将这个位置加上 0E87H,( DEBUG 中将地址 YYYY 加上 0E87H) 就是原文件头 40H 字节保存的地方,将这 40H字节写回文件头,再从找到字符串的地方将文件截断即完成消毒。

对于WINDOWS文件,由于病毒对文件修改较多,且数据结构复杂,一般不用手工消毒,在没有消毒程序的情况下,建议用以下办法:找一个压缩软件如 ARJ、LHA、RAR 等, 将文件改名为其他文件名如 A.EXE,再运行一个带毒文件使内存中驻留病毒,再将要消毒的文件打包,由于病毒执行了欺骗功能,所以由压缩软件读出并压进文件包的文件都是无毒的,用干净系统盘启动后,解压缩出来的文件就是无毒的了。在磁盘空间足够的情况下,也可以用这种方法全盘压缩,再全盘解压缩来消除全部病毒。编程自动消毒的步骤和算法如下:

⑴ 判断文件头 0018H 大于等于 40H 则继续 (表示有 "NE" 文件头)

⑵ 从文件头 003CH 取得偏移量读出 40H 字节,判断前 2 字节为 "NE" 则继续

⑶ 从 "NE" 报头中取相关数据计算入口段地址表记录偏移量,算法为:

偏移量="NE"报头偏移量+["NE"报头22H]+(["NE"报头16H]-1)*8

⑷ 读出 8 字节入口段的段地址表记录

⑸ 如果本记录后 6 字节为 7D 0E 80 01 7D 0E 表示有 3783 病毒

⑹ 病毒起始位置(即原文件长)=[段地址表记录00H]*( 1 SHL ["NE"报头32H] )

⑺ 恢复原入口段地址表记录号:病毒中第 0E83H => "NE"报头16H

恢复原入口 IP:病毒中第 0E85H => "NE"报头14H

恢复原段地址表记录数:"NE"报头 1CH 减 1

⑻ 将恢复的 "NE" 报头写回,将文件从病毒开始处截断

到此消毒已经完成。在消毒中省略了将 "NE"可执行报头及段地址表后移 8 字节的步骤,这并不影响文件的执行,如果一定要将文件完全复原,还要加上以下部分:

⑼ 将 "NE"报头 04H、24H、26H、28H、2AH 处的字及文件头 3CH 处的双字减 8

⑽ 将 "NE"报头开始到段地址表结束为止的数据后移 8 字节

将文件头 3CH 处的新数据写回

4.可执行文件的免疫

病毒的传染标记为文件时间加上 100 年,如果病毒检测到文件时间大于 2080 年就认为文件已经感染,所以可以用工具软件修改文件时间,将文件时间加上 100年就可完成免疫。