home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / SOURCE.ZIP / DSME10.ZIP / DSME-GEN.ASM < prev    next >
Assembly Source File  |  1993-10-05  |  4KB  |  119 lines

  1.  
  2. ; Dark Slayer Mutation Engine v1.0
  3. ;     Written by Dark Slayer in Taiwan
  4.  
  5. DSME_GEN SEGMENT
  6.          ASSUME  CS:DSME_GEN,DS:DSME_GEN
  7.          ORG     0100h
  8.  
  9. MSG_ADDR EQU     OFFSET MSG-OFFSET PROC_START-0005h
  10.  
  11.          EXTRN   DSME:NEAR,DSME_END:NEAR
  12.  
  13.                       ; ÑHñU╡{ªííA░úñF¡n¬`╖N¬║ªañΦª│¬`╕╤íA¿ΣѪ│íÑ≈ª█ñv¼π¿s
  14.                       ; you may get some information as following remarks
  15.                       ;
  16.  
  17. START:
  18.          MOV     AH,09h
  19.          MOV     DX,OFFSET DG_MSG
  20.          INT     21h
  21.  
  22.          MOV     AX,OFFSET DSME_END+000Fh ; Ñ╗╡{ªí + DSME+000Fh ñº½ß¬║ª∞º}
  23.                                    ; ¡Y┤ε 0100h ½hª¿¼░Ñ╗╡{ªí + DSME ¬║¬°½╫
  24.                                    ; This program + DSME+000Fh address
  25.                                    ; Minus 0100h = this program + DSME
  26.                                    ; lengh
  27.          MOV     CL,04h
  28.          SHR     AX,CL
  29.          MOV     BX,CS
  30.          ADD     BX,AX
  31.  
  32.          MOV     ES,BX                   ; │] ES Ñ╬¿╙⌐±╕╤╜X╡{ªí⌐M│Q╜s╜X╕Ω«╞
  33.                                                 ; ╕╤╜X╡{ªí│╠ñj¼░ 1024 Bytes
  34.                                 ; ¡YÑ╬ªb▒`╛n╡{ªí«╔íA½h╢╖¬`╖Nñ└░t¬║░O╛╨┼Θñjñp
  35.                                 ; Setting ES to put decryptor and encrypted
  36.                                 ; code.
  37.                                 ; Decryptor maxium is 1024 bytes
  38.                                 ; You should notice the allocation of memory
  39.                                 ; size when you use DSME in resident mode.
  40.  
  41.  
  42.          MOV     CX,50
  43. DG_L0:
  44.          PUSH    CX
  45.          MOV     AH,3Ch
  46.          XOR     CX,CX
  47.          MOV     DX,OFFSET FILE_NAME
  48.          INT     21h
  49.          XCHG    BX,AX
  50.  
  51.          MOV     BP,0100h                                ; ╕╤╜X╡{ªí░╛▓╛ª∞º}
  52.                                        ; Ñ╬¿╙╝g¼r«╔½h¿╠▒²╖P¼V└╔«╫ñºñjñpª╙│]
  53.                                        ; Offset where the decryption routine
  54.                                        ; will be executed
  55.                                        ; It depends on which kinds of files
  56.                                        ; COM or EXE?
  57.  
  58.          MOV     CX,OFFSET PROC_END-OFFSET PROC_START    ; │Q╜s╜X╡{ªí¬║¬°½╫
  59.                                                          ; encrypted code
  60.                                                          ; lengh
  61.  
  62.          MOV     DX,OFFSET PROC_START         ; DS:DX -> ¡n│Q╜s╜X¬║╡{ªíª∞º}
  63.                                               ; DS:DX -> Encrypted code's
  64.                                               ;          address
  65.  
  66.          PUSH    BX                                      ; ½Oªs File handle
  67.                                                          ; keep File handle
  68.  
  69.          MOV     BL,00h                                          ; COM ╝╥ªí
  70.                                                                  ; COM mode
  71.  
  72.          CALL    DSME
  73.  
  74.          POP     BX
  75.  
  76.          MOV     AH,40h        ; ¬≡ª^«╔ DS:DX = ╕╤╜X╡{ªí + │Q╜s╜X╡{ªí¬║ª∞º}
  77.          INT     21h     ; CX = ╕╤╜X╡{ªí + │Q╜s╜X╡{ªí¬║¬°½╫íA¿ΣѪ╝╚ªs╛╣ñú┼▄
  78.                          ;  When returning from DSME,
  79.                          ;  DS:DX = decryptor + encrypted code's address
  80.                          ;  CX = lengh of decryptor + encrypted code
  81.                          ; Other registers won't be changed.
  82.  
  83.          MOV     AH,3Eh
  84.          INT     21h
  85.  
  86.          PUSH    CS
  87.          POP     DS                                          ; ▒N DS │]ª^¿╙
  88.                                                              ; restore DS
  89.  
  90.          MOV     BX,OFFSET FILE_NUM
  91.          INC     BYTE PTR DS:[BX+0001h]
  92.          CMP     BYTE PTR DS:[BX+0001h],'9'
  93.          JBE     DG_L1
  94.          INC     BYTE PTR DS:[BX]
  95.          MOV     BYTE PTR DS:[BX+0001h],'0'
  96. DG_L1:
  97.          POP     CX
  98.          LOOP    DG_L0
  99.          MOV     AH,4Ch
  100.          INT     21h
  101.  
  102. FILE_NAME DB     '000000'
  103. FILE_NUM DB      '00.COM',00h
  104.  
  105. DG_MSG   DB      'Generates 50 DSME encrypted test files.',0Dh,0Ah,'$'
  106.  
  107. PROC_START:
  108.          MOV     AH,09h
  109.          CALL    $+0003h
  110.          POP     DX
  111.          ADD     DX,MSG_ADDR
  112.          INT     21h
  113.          INT     20h
  114. MSG      DB      'this is <DSME> test file.$'
  115. PROC_END:
  116.  
  117. DSME_GEN ENDS
  118.          END     START
  119.