说明。由于很多网友没学过Delph,说熊猫原代码看不懂。因此本人简要的讲解一下关于Delphi在这个熊猫病毒中的语法,并作了少量的比较。由于该病毒的函数大部分是API函数。因此没有详细讲解函数,有兴趣的朋友可自行查阅。
为保留原码风格。我未改动。而我后写入的注解用红色来标识。如果哪们还有疑问,请跟贴提问。
本人能力有限,如有说的不正确的地方,还请见谅。
//在Delphi中program是工程中的第一条语句。标识了工程的名字。也是开始。
uses
Windows, SysUtils, Classes, Graphics, ShellAPI{, Registry};
//uses语句类似于C语言中的#include,是包含了哪些单元文件,C语言称为头文件。
//但{, Registry}并未包含进去。因为在Delphi中{}是注释。
//Delphi中的单行注释是//与C相同,在VB中是'。多行注释是{}。C中是/* */,
const
HeaderSize = 82432; //病毒体的大小
IconOffset = $12EB8; //PE文件主图标的偏移量
//在我的Delphi5 SP1上面编译得到的大小,其它版本的Delphi可能不同
//查找2800000020的十六进制字符串可以找到主图标的偏移量
{
HeaderSize = 38912; //Upx压缩过病毒体的大小
IconOffset = $92BC; //Upx压缩过PE文件主图标的偏移量
//Upx 1.24W 用法: upx -9 --8086 Japussy.exe
}
IconSize = $2E8; //PE文件主图标的大小--744字节
IconTail = IconOffset + IconSize; //PE文件主图标的尾部
ID = $44444444; //感染标记
//垃圾码,以备写入
Catchword = 'If a race need to be killed out, it must be Yamato. ' +
'If a country need to be destroyed, it must be Japan! ' +
'*** W32.Japussy.Worm.A ***';
//上述代码中主要是定义了一些常量同VB和C的定义方法一样.
//$表示是16进制。注意delphi中没有宏。
{$R *.RES}
//此代码并非注释,而是编译方式,这种编译方式是默认的大家不必过多研究。
//这种功能我只在Delphi中见到,在C\C++和VB中好样是没有的。如果哪位朋友想
//翻译成其它代码的话,大可忽略。
[此贴子已经被作者于2007-2-17 10:04:34编辑过]