文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发数据结构亲密接触恶意代码之文件感染和内存驻留
精品推荐
特别推荐
·网游外挂编写完全攻略
·开发WDM型的USB设备驱动程序
·数据库设计范式深入浅出
·理解软件保护技术之序列号方式
·大型网站必鉴:分销渠道的结构
·你的代码真的很健壮吗
·利用HOOK拦截封包原理
·四种网络游戏外挂的设计方法
·程序语言效率比较
·五子棋算法
·正则表达式从入门到精通
·SQL Server不能启动的常见故障
·Windows应用程序设计的基本术语
·软件本地化与汉化
·Windows中断编程
·windows nt 4.0中文版的开机过程
热点TOP10
·网游外挂编写完全攻略
·兵之利器 软件开发辅助工具纵览
·开发WDM型的USB设备驱动程序
·DCOM揭秘之六
·VS2008 第一次安装心得及使用
·游戏外挂设计技术探讨
·《数据结构》试题下载2004
·饺子馆的物流故事之二——供应链视角下的缺货及品类管理
·代码静态分析工具PC-LINT安装配置
·使用BHO定制你的IE浏览器
·原始套接字透析之Raw Socket基础
·基于CS模式的Winsock网络通讯程序
·程序语言效率比较
·《Windows程序设计》读书笔记之六
·四种网络游戏外挂的设计方法
·用CVSNT与WINCVS实现CVS的架设
·利用HOOK拦截封包原理
·简单对象访问协议(SOAP)初级指南
·带你全面了解数据库应用系统的开发步骤
·UML业务建模实例分析

亲密接触恶意代码之文件感染和内存驻留

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



  这次,作者将和大家一起讨论病毒的感染技术。另外,从本文开始,我们将陆续接触到一些病毒的高级编码技术。例如,内存驻留、EPO(入口点模糊)技术、加密技术、多态和变形等。通过这些高级技巧,你将进一步感受到病毒技术的精华,从而更好的享受其中精妙的思想与编程技艺。

  在解决了起始目录的问题之后,就可以从这些起始目录开始使用FindFirstFile和FindNextFile开始遍历其下以及其子目录下的所有文件和目录了,遍历方法可采用深度优先或广度优先搜索算法,较常用的还是深度优先算法。具体实现方式可采用递归搜索或非递归搜索两种实现方式。递归搜索需要占用栈空间,有可能造成栈空间耗竭而产生异常,不过在现实应用中这种情况很少出现,而非递归搜索则不存在此问题,但代码实现略复杂。在现实应用中,应用最多的还是递归遍历搜索。搜索时,可指定FindFirstFile的第一形参为*.*以搜索所有文件,根据搜索结果WIN32_FIND_DATA结构的dwFileAttributes成员判断是否为目录,若为目录则需要继续遍历该子目录,根据WIN32_FIND_DATA的cFileName中的文件名成员判断是否具有要感染的文件后缀以采取修改感染动作,以下代码实现了递归搜索某个目录及其下所有子目录的功能:

void enum_path(char *cpath){
 WIN32_FIND_DATA wfd;
 HANDLE hfd;
 char cdir[MAX_PATH];
 char subdir[MAX_PATH];
 int r;
 GetCurrentDirectory(MAX_PATH,cdir);
 SetCurrentDirectory(cpath);
 hfd = FindFirstFile("*.*",&wfd);
 if(hfd!=INVALID_HANDLE_VALUE) {
  do{
   if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
   {
    if(wfd.cFileName[0] != '.') {
     // 合成完整路径名
     sprintf(subdir,"%s\\%s",cpath,wfd.cFileName);
     // 递归枚举子目录
     enum_path(subdir);
    }
    }else{
     printf("%s\\%s\n",cpath,wfd.cFileName);
     // 病毒可根据后缀名判断是
     // 否要感染相应的文件
    }
   }while(r=FindNextFile(hfd,&wfd),r!=0);
  }
  SetCurrentDirectory(cdir);
 }
  短短20 多行C 代码就实现了文件遍历的功能,Win32 API的强大功能不仅为开发者提供了便利,同时也为病毒敞开了方便之门。用汇编实现则稍微复杂一些,感兴趣的读者可参阅Elkern 中的enum_path部分,原理是一样的,限于篇幅这里不再给出相应的汇编代码。

  非递归搜索不使用堆栈存储相关的信息,而使用显式分配的链表或栈等结构存储相关的信息,应用一个迭代循环完成递归遍历同样的功能,下面是使用链表以栈方式处理子目录列表的一个简单实现:

void nr_enum_path(char *cpath){
 list<string> dir_list;
 string cdir,subdir;
 WIN32_FIND_DATA wfd;
 HANDLE hfd;
 int r;
 dir_list.push_back(string(cpath));
 while(dir_list.size()) {
  cdir = dir_list.back();
  dir_list.pop_back();
  SetCurrentDirectory(cdir.c_str());
  hfd = FindFirstFile("*.*",&wfd);
  if(hfd!=INVALID_HANDLE_VALUE) {
   do{
    if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
     if(wfd.cFileName[0] != '.') {
      // 合成完整路径名
      subdir=cdir+"\\"+wfd.cFileName;
      cout<<"push subdir: "<<subdir<<endl;
      // 递归枚举子目录
      dir_list.push_back(string(subdir));
     }
     }else{
      printf("%s\\%s\n",cpath,wfd.cFileName);
      // 病毒可根据后缀名判断
      // 是否要感染相应的文件
     }
    }while(r=FindNextFile(hfd,&wfd),r!=0);
   }
  }//end while
}
  在以汇编语言实现时,需要自己管理链表以及分配和释放相应的结构,因此较为烦琐,代码量也稍大,因此病毒多采用递归的方式进行搜索。值得注意的是搜索深层次的目录是很费时的,因此大部分病毒为避免CPU占用率过高,搜索一定数量的文件之后,都会调用Sleep 休眠一会,以避免被敏感的用户发觉。文件搜索和感染模块通常是以单独的线程运行的,在病毒获得控制权后,创建相应的搜索和感染线程,而将主现成的控制权交给原程序。
[1] [2] [3] [4] 下一页 




上一篇:在内存中修改数据的网游外挂

下一篇:恶意代码的亲密接触之文件搜索和API导址

亲密接触恶意代码之文件感染和内存驻留 相关文章:
·QQ空间免费换皮肤代码
·qq空间皮肤背景代码:QQ空间不用Q币更换主页皮肤方法
·QQ空间透明flash代码
·[最新QQ空间代码]QQ空间花,漂浮物、开场动画代码
·MPEG、RM、WMV电影文件格式转换指南
·免费领养QQ空间五级花最新技巧及代码放送
·如何在QQ空间加入播放器代码
·QQ空间流星雨效果代码
·C#编写的windows计算器-源代码
·QQ空间植物代码
亲密接触恶意代码之文件感染和内存驻留 相关软件:
·死亡之屋3 内存修改器
·三国志10威力加强PK版中文版 内存+存档+剧本修改器v1.10
·最强文件加密锁2007
·巨城文件保险柜 v2.3
·Ultra RM Converter(Real文件转换分割,合并)V3.3.0916 汉化版
·Allok Video Splitter(视频文件分割)V2.2 0726 修正II版
·联想OEM Winxp的5个文件
·剑侠情缘外传月影传说中文版 完美内存修改器v2.0A版
·文件夹加密器V9.6
·西门子plc软件及教程 文件类型 其它介绍

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