### CIH病毒源码分析
#### 一、概述
CIH病毒是一种早期具有破坏性的计算机病毒,首次出现于1998年。该病毒主要针对运行Microsoft Windows操作系统的计算机,并在特定日期(如每月26日)触发破坏行为,包括删除硬盘数据与BIOS信息,对用户的计算机系统造成严重损害。本文将对CIH病毒的部分源码进行分析,旨在理解其工作原理及发展历史。
#### 二、CIH病毒基本信息
- **设计者**:CIH Source,来自台湾大同工学院。
- **创建日期**:1998年4月26日,当前版本为1.4。
- **修改时间**:1998年5月31日。
- **编译环境**:
- Turbo Assembler Version 4.0:tasm/mcih
- Turbo Link Version 3.01:tlink/3/tcih, cih.exe
#### 三、CIH病毒功能特性
1. **获取Ring0权限**:CIH病毒通过修改中断描述符表(IDT)来获得Ring0级别的权限,这是为了实现更深层次的操作系统控制。
2. **感染文件而不改变大小**:CIH病毒通过特殊的算法确保感染文件后文件大小不发生变化,从而使得病毒活动更加隐蔽不易被发现。
3. **文件系统API钩子**:CIH病毒通过调用`IFSMgr_InstallFileSystemApiHook`函数安装一个文件系统API钩子,当系统尝试打开现有的PE文件时,病毒会在文件未被重新感染的情况下完成感染过程。
4. **处理只读文件**:即使文件设置为只读属性,CIH病毒也能成功感染这些文件。
5. **维持文件时间戳不变**:为了进一步隐藏其活动,CIH病毒不会更改被感染文件的时间戳,这意味着用户通常无法通过查看文件修改时间来检测文件是否已被感染。
6. **优化病毒感染代码**:CIH病毒通过不断改进其算法,减少了病毒主体的大小,这有助于提高病毒的传播效率和隐蔽性。
7. **直接执行IFS Manager调用**:当CIH病毒使用`IFSMgr_Ring0_FileIO`函数时,它会直接调用IFS Manager本应调用的函数来处理I/O请求,而不是通过原有的文件系统API钩子。
8. **BIOS杀手**:CIH病毒的一些版本还具有破坏BIOS的功能,能够导致系统完全崩溃且难以恢复。
#### 四、CIH病毒的演变历程
- **v1.0**:最初版本,实现了基本的病毒功能。
- **v1.1**:增加了文件系统API钩子和异常处理钩子的改进,同时减小了病毒代码的大小。
- **v1.2**:增加了硬盘和BIOS杀手功能,修复了上一版本的bug。
- **v1.3**:修复了WinZip自解压文件的问题。
#### 五、总结
通过对CIH病毒部分源码的分析,我们可以看到该病毒的设计思路和技术手段都相当先进。尽管CIH病毒在现代计算机防护技术面前已不再构成严重威胁,但它仍然为我们提供了宝贵的教训,提醒我们在设计软件时需要充分考虑安全性问题。对于安全研究人员来说,研究这类早期病毒有助于了解计算机病毒的发展历程以及防护技术的进步。