文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络操作系统 木马病毒带着疑问学习 “DLL技术”木马进程内幕大揭密
精品推荐
特别推荐
·趋势:新反病毒技术亟待成熟
·病毒反抗杀毒软件主要手段
·文件关联型木马的特殊化查杀
·杀毒技巧系列:杀毒、防恶意代码、脚本病毒的不完全合集
·识别非法进程及手工杀毒技巧
·清除系统隐藏病毒文件全攻略
·轻松找到恶意网站中藏的病毒
·一个防止U盘病毒的小技巧
·AUTO病毒致杀软失效并下载病毒
·禁止让瑞星2008随机启动的绝招
热点TOP10
·QQ聊天记录偷窥和QQ视频欺骗
·卡巴斯基2009 Beta版 初步试用感受
·卡巴斯基6.0下载卡巴斯基6.0key激活码
·常见病毒的症状、专杀工具
·卡巴斯基Kaspersky 6.0半年免费激活码
·卡巴斯基杀毒软件优化设置指南
·俄罗斯杀毒软件大蜘蛛登陆中国
·维护网络安全 用金山清理专家清除木马
·一个防止U盘病毒的小技巧
·轻松找到恶意网站中藏的病毒

带着疑问学习 “DLL技术”木马进程内幕大揭密

日期:2007年7月24日 作者: 查看:[大字体 中字体 小字体]


很多朋友还是不知道“DLL木马”是什么东东。那到底什么是“DLL木马”呢?它与一般的木马又有什么不同?带着这些疑问,一起开始这次揭密之旅吧!

一、追根溯源从DLL说起

要了解什么是“DLL木马”,就必须知道“DLL”是什么意思!说起DLL,就不能不涉及到久远的DOS时代。在DOS大行其道的时代,写程序是一件繁琐的事情,因为每个程序的代码都是需要独立的,这时为了实现一个普通的功能,甚至都要为此编写很多代码。后来随着编程技术发展与进步,程序员们开始把很多常用的代码集合(也就是通用代码)放进一个独立的文件里,并把这个文件称为“库”(Library)。在写程序的时候,把这个库文件加入编译器,就能使用这个库包含的所有功能而不必自己再去写一大堆代码,这个技术被称为“静态链接”(Static Link)。静态链接技术让劳累的程序员松了口气,一切似乎都很美好。然而静态链接技术的最大缺陷就是极度消耗和浪费资源,当一个程序只想用到一个库文件包含的某个图形效果时,系统将把这个库文件携带的所有的图形效果都加入程序,这样就使得程序非常臃肿。虽然这并不重要,可是这些臃肿的程序却把道路都阻塞了——静态链接技术让最终的程序成了大块头,因为编译器把整个库文件都加载进去了。

技术永远是在发展的,静态链接技术由于无法避免的弊端,不能满足程序员和编程的需要,人们开始寻找一种更好的方法来解决代码重复的难题。随着Windows系统的出现, Windows系统使用一种被称为“动态链接库”(Dynamic Link Library)的新技术,它同样也是使用库文件,DLL的名字就是这样来的。动态链接本身和静态链接没什么区别,也是把通用代码写进一些独立文件里,但是在编译方面,微软把库文件做成已经编译好的程序文件,给它们开发一个交换数据的接口。程序员编写程序的时候,一旦要使用某个库文件的一个功能函数,系统就把这个库文件调入内存,连接上这个程序占有的任务进程,然后执行程序要用的功能函数,并把结果返回给程序显示出来。完成需要的功能后,这个DLL停止运行,整个调用过程结束。微软让这些库文件能被多个程序调用,实现了比较完美的共享,程序员无论要写什么程序,只要在代码里加入对相关DLL的调用声明就能使用它的全部功能。这样,写出来的程序就不能再携带一大堆无用的垃圾了。

DLL技术的诞生,使编写程序变成一件简单的事情,Windows为我们提供了几千个函数接口,足以满足大多数程序员的需要。而且,Windows系统自身就是由几千个DLL文件组成,这些DLL相互扶持,组成了庞大的Windows系统。如果Windows依然使用静态链接技术,那将是不可想象的。

二、什么是API

在前面提到的“接口”又是什么呢?因为DLL不能像静态库文件那样塞进程序里,如何让程序知道实现功能的代码和文件成了问题,微软就为DLL技术做了标准规范,为每个DLL文件都明确地标注好它的功能名称,程序只要根据标准规范找到相关的名称进行调用就行了,这就是API(Application Programming Interface)应用程序接口,每个DLL带的接口都不尽相同,最大限度地减少了程序代码的重复。在Windows里,最基本的3个DLL文件是kernel32.dll、user32.dll、gdi32.dll。它们共同构成了基本的系统框架。

三、DLL与木马

DLL是编译好的代码,与一般程序没什么大差别,只是它不能独立运行,需要程序调用。那么,DLL与木马能扯上什么关系呢?如果你学过编程并且写过DLL,就会发现,其实DLL的代码和其他程序几乎没什么两样,仅仅是接口和启动模式不同,只要改动一下代码入口,DLL就变成一个独立的程序了。

当然,DLL文件是没有程序逻辑的,其实DLL并不等于EXE。不过,依然可以把DLL看做缺少了main入口的程序,DLL带的各个功能函数可以看作一个程序的几个函数模块。DLL木马就是把一个实现了木马功能的代码,加上一些特殊代码写成DLL文件,导出相关的API,在别人看来,这只是一个普通的DLL,但是这个DLL却携带了完整的木马功能,这就是DLL木马的概念。也许有人会问,既然同样的代码就可以实现木马功能,那么直接做程序就可以,为什么还要多此一举写成DLL呢?这是为了隐藏,因为DLL运行时是直接挂在调用它的程序的进程里的,并不会另外产生进程,所以相对于传统EXE木马来说,它很难被查到。

四、DLL的运行

虽然DLL不能自己运行,可是Windows在加载DLL的时候,需要一个入口函数,就如同EXE的main一样,否则系统无法引用DLL。所以根据编写规范,Windows必须查找并执行DLL里的一个函数DllMain作为加载DLL的依据,这个函数不作为API导出,而是内部函数。DllMain函数使DLL得以保留在内存里,有的DLL里面没有DllMain函数,可是依然能使用,这是因为Windows在找不到DllMain的时候,会从其它运行库中找一个不做任何操作的缺省DllMain函数启动这个DLL使它能被载入,并不是说DLL可以放弃DllMain函数。

五、DLL木马

技术分析

编写DLL木马并不是一些人想象的那么容易写的。要写一个能用的DLL木马,需要了解更多关于操作系统底层的知识。

1.木马的主体

千万别把木马模块写得真的像个API库一样,这不是开发WINAPI。DLL木马可以导出几个辅助函数,但是必须有一个过程负责主要执行代码,否则这个DLL只能是一堆零碎API函数,别提工作了。如果涉及一些通用代码,可以在DLL里写一些内部函数,供自己的代码使用,而不是把所有代码都开放成接口,这样它自己本身都难调用了,更不可能发挥作用。


[1] [2] 下一页 




上一篇:最能提升工作效率的200个热键

下一篇:关于TOMCAT主目录与虚拟目录的配置介绍

相关文章:
·教你学习如何破解XP登陆密码
·基础知识 初级黑客安全技术命令详解
·黑客技术之知道对方IP入侵别人的电脑
·木马是如何盗取QQ密码的?
·做QQ高手,你应该了解的17种QQ技术
·软件狗[Dongles]的加密与解密技术
·“木马”查杀法和清除法
·揭秘木马是如何盗取QQ密码的
·网上英语学习资源大整理
·BT种子轻松获,比特精灵3新技术详解
相关软件:

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot