用Delphi来编写蠕虫病毒浅析
前言:
你可能会想到病毒,你的第一反应可能是用asm或者VBsript写的,而Delphi等高级语言好像写不出来。事实上,并非如此。只要花点时间,还是能写出短小高效的病毒程序,一点也不输那些用汇编写的。
一个病毒程序一开始要短,我们的目标是压缩后控制在30k以下。用过delphi的朋友都知道,如果窗体,类等。被添加到uses中,目标文件将会非常大。所以在我们的程序中,尽量不要使用这些库。我们只用Windows,Winsock,ShellAPI,SysUtils(这个包含了一些常用的函数,比如对文件和字符串的操作。如果您使用自己的程序,目标文件会更小)
首先,我们知道一个病毒程序一般分为以下三个模块:
①保护模块;
②感染模块;
③癫痫模块。
先从这三个模块入手,分别实现它们的代码。
1)保护模块。
通常,我们将自己复制到系统中的一些目录,比如%systemroot%。因此,首先,我们需要获得这些特定目录的路径。sdk为我们提供了类似GetSystemDirectory的功能:
UINT get system directory(
lptstr LP buffer,//返回字符串的缓冲区
UINT uSize //以上缓冲长度
);
相关函数也有GetWindowsDirectory来获取%windows%的路径。
得到系统的目录后,第二步是复制文件。Sdk为我们提供了一个函数副本文件:
BooCopyfile(
LPCTSTR lpexistingfilename,//源文件路径
LPCTSTR lpNewFileName,//目标文件路径
boolbfalifeexists//这是一个标志,如果目标文件已经存在,是否强制覆盖
);
复制完文件后,我们把文件设置为系统和隐藏,这样文件一般是看不到的,除非你选择查看所有文件,显示受保护的文件。类似地,引入一个函数SetFileAttributes:
l setfile attributes(
lpctstr lpfilename,//要设置的文件的文件名
DWORD dwFileAttributes //设置的值。
);
如果我们想在这里将其设置为hidden和system,我们将为第二个参数传递file _ attribute _ hidden+file _ attribute _ system。
以下是最重要的。让文件自动启动并运行。一般来说,我们写注册表。首先,我们使用RegOpenKey函数打开一个密钥。
long regopen key(
HKEY HKEY,//主键,比如HKEY _ local _ machine
lpctstr LP子键,//下面的子键
PHKEY phkResult // deposit函数返回这个打开的键的句柄
)
0条评论