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 >
Wrap
Assembly Source File
|
1993-10-05
|
4KB
|
119 lines
; Dark Slayer Mutation Engine v1.0
; Written by Dark Slayer in Taiwan
DSME_GEN SEGMENT
ASSUME CS:DSME_GEN,DS:DSME_GEN
ORG 0100h
MSG_ADDR EQU OFFSET MSG-OFFSET PROC_START-0005h
EXTRN DSME:NEAR,DSME_END:NEAR
; ÑHñU╡{ªííA░úñF¡n¬`╖N¬║ªañΦª│¬`╕╤íA¿ΣѪ│íÑ≈ª█ñv¼π¿s
; you may get some information as following remarks
;
START:
MOV AH,09h
MOV DX,OFFSET DG_MSG
INT 21h
MOV AX,OFFSET DSME_END+000Fh ; Ñ╗╡{ªí + DSME+000Fh ñº½ß¬║ª∞º}
; ¡Y┤ε 0100h ½hª¿¼░Ñ╗╡{ªí + DSME ¬║¬°½╫
; This program + DSME+000Fh address
; Minus 0100h = this program + DSME
; lengh
MOV CL,04h
SHR AX,CL
MOV BX,CS
ADD BX,AX
MOV ES,BX ; │] ES Ñ╬¿╙⌐±╕╤╜X╡{ªí⌐M│Q╜s╜X╕Ω«╞
; ╕╤╜X╡{ªí│╠ñj¼░ 1024 Bytes
; ¡YÑ╬ªb▒`╛n╡{ªí«╔íA½h╢╖¬`╖Nñ└░t¬║░O╛╨┼Θñjñp
; Setting ES to put decryptor and encrypted
; code.
; Decryptor maxium is 1024 bytes
; You should notice the allocation of memory
; size when you use DSME in resident mode.
MOV CX,50
DG_L0:
PUSH CX
MOV AH,3Ch
XOR CX,CX
MOV DX,OFFSET FILE_NAME
INT 21h
XCHG BX,AX
MOV BP,0100h ; ╕╤╜X╡{ªí░╛▓╛ª∞º}
; Ñ╬¿╙╝g¼r«╔½h¿╠▒²╖P¼V└╔«╫ñºñjñpª╙│]
; Offset where the decryption routine
; will be executed
; It depends on which kinds of files
; COM or EXE?
MOV CX,OFFSET PROC_END-OFFSET PROC_START ; │Q╜s╜X╡{ªí¬║¬°½╫
; encrypted code
; lengh
MOV DX,OFFSET PROC_START ; DS:DX -> ¡n│Q╜s╜X¬║╡{ªíª∞º}
; DS:DX -> Encrypted code's
; address
PUSH BX ; ½Oªs File handle
; keep File handle
MOV BL,00h ; COM ╝╥ªí
; COM mode
CALL DSME
POP BX
MOV AH,40h ; ¬≡ª^«╔ DS:DX = ╕╤╜X╡{ªí + │Q╜s╜X╡{ªí¬║ª∞º}
INT 21h ; CX = ╕╤╜X╡{ªí + │Q╜s╜X╡{ªí¬║¬°½╫íA¿ΣѪ╝╚ªs╛╣ñú┼▄
; When returning from DSME,
; DS:DX = decryptor + encrypted code's address
; CX = lengh of decryptor + encrypted code
; Other registers won't be changed.
MOV AH,3Eh
INT 21h
PUSH CS
POP DS ; ▒N DS │]ª^¿╙
; restore DS
MOV BX,OFFSET FILE_NUM
INC BYTE PTR DS:[BX+0001h]
CMP BYTE PTR DS:[BX+0001h],'9'
JBE DG_L1
INC BYTE PTR DS:[BX]
MOV BYTE PTR DS:[BX+0001h],'0'
DG_L1:
POP CX
LOOP DG_L0
MOV AH,4Ch
INT 21h
FILE_NAME DB '000000'
FILE_NUM DB '00.COM',00h
DG_MSG DB 'Generates 50 DSME encrypted test files.',0Dh,0Ah,'$'
PROC_START:
MOV AH,09h
CALL $+0003h
POP DX
ADD DX,MSG_ADDR
INT 21h
INT 20h
MSG DB 'this is <DSME> test file.$'
PROC_END:
DSME_GEN ENDS
END START