在来和大家讲一讲注册机的写作 刚才已经知道如何写了吧 以下是我写的程式码 共有两个档案,一个是巨集档 copy 回去後 请和 程式本身放在同一个目录 而且一定要令为 handle1.mac ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 不然就要去改程式本身,大家都知道如何改吧 放心,不是 word 的巨集 不用担心有巨集病毒 另一个当然就是程式的本身了 好了,大家有了 source code 了 不用担心有毒了 文字档不会有毒的 回去自己做一个执行档 除非自己的电脑有毒, 否则是不可能中毒的 ;;;;;;;;;;;; handle1.mac 开始 ;;;;;;;;;;;;;;;;; CREATE MACRO PATH,ATTR ; 建立档案代号 LEA DX,PATH MOV CL,ATTR MOV CH,0 MOV AH,3CH INT 21H ENDM ;;; OVER CREATE OPEN MACRO PATH,MODE ; 开启档案 LEA DX,PATH MOV AL,MODE MOV AH,3DH INT 21H ENDM ;;; OVER OPEN READ MACRO HANDLE,BUFF,BYTE ; 读取档案 LEA DX,BUFF MOV CX,BYTE MOV BX,HANDLE MOV AH,3FH INT 21H ENDM WRITE MACRO HANDLE,BUFF,BYTE ; 写入档案 LEA DX,BUFF MOV CX,BYTE MOV BX,HANDLE MOV AH,40H INT 21H ENDM ;;; OVER WRITE CLOSE MACRO HANDLE ; 关闭档岸 MOV BX,HANDLE MOV AH,3EH INT 21H ENDM ;;; OVER CLOSE MOVPTR MACRO HANDLE,HIGH,LOW,METHOD ; 移动档案读写指标 MOV BX,HANDLE MOV CX,HIGH MOV DX,LOW MOV AL,METHOD MOV AH,42H INT 21H ENDM ;;; OVER MOVPTR ASCIIZ MACRO BUF,NUM ; 字串末端加零 PUSH BX MOV BX,0 MOV BL,NUM ADD BX,OFFSET BUF MOV BYTE PTR [BX],0 POP BX ENDM ;;; OVER ASCIIZ ;;;;;;;;;;;; handle1.mac 结束 ;;;;;;;;;;;;;;;;; 再来就是程式本身了 ;;;;;;;;;;;; cftp2-k.asm 开始 ;;;;;;;;;;;;;;;;; .model small .stack .data NEWLINE DB 0DH,0AH,'$' CHANGE DB 0F6H,85H,97H,15H,0ADH,1DH,0D2H,94H,0DDH,0C4H MSG1 DB 'This is a registred mechanic about CUTEFTP V2.0 . ' ,0ah,0dh MSG2 DB 'Please enter your name .But do not over 10 character.',0ah,0dh,'$' MSG3 DB 'I have already created the file CUTEFTP.KEY .' MSG4 DB 'Please copy CUTEFTP.KEY to your cuteftp directory .',0AH,0DH MSG5 DB 'If you feel the program is good' MSG6 DB ',please copy to your friends in Taiwan .' ,0ah,0dh MSG7 DB 'If you know windows programming,please re-write the program to a ' MSG8 DB 'program which for win95 and support BIG-5,thank you.',0ah,0dh,'$' LEN DB ? NUM DW ? NAME1 DB '$$$$$$$$$$$$$$$' FILE1 DB 'cuteftp.key',0 FH1 DW ? BUFF DB 12 DUP (?),'$' ZERO DB 0,0 TEMP DB ? IF1 INCLUDE HANDLE1.MAC ENDIF .code main proc MOV AX ,@DATA MOV DS,AX MOV ES,AX ;;;;;;;;;;;;;; START ;;;;;;;;;;;;;;;;;; MOV AH,9 LEA DX,MSG1 INT 21H ; PRINT MSG ;LEA DX,MSG2 ;INT 21H ; PRINT MSG MOV AH,0AH LEA DX,NAME1 INT 21H ; INPUT NAME XOR BX,BX MOV BL,[NAME1+1] MOV LEN,BL ; LENGTH OF THE NAME STRING MOV BYTE PTR [NAME1+2+BX],0 MOV BX,1 MOV AH,9 LEA DX,NEWLINE INT 21H ADD BYTE PTR [NAME1+BX],30H INC BX MOV SI,0 CREATEFILE: MOV AL, [CHANGE+SI] MOV DL,[NAME1+BX] XOR AL,DL MOV [CHANGE+SI],AL INC SI INC BX CMP [NAME1+BX],0 JNZ CREATEFILE LEA DX,NEWLINE MOV AH,9 INT 21H LEA DX,BUFF MOV AH,9 INT 21H MOV AX,8FH MOV SI,2 MOV BX,0 COMPUTE: ; COMPUTE THE ASCII NUM MOV BL,[NAME1+SI] ADD AX,BX INC SI CMP [NAME1+SI],0 JNZ COMPUTE MOV NUM,AX XOR NUM,2627H ;MOV CL,8 ;ROL NUM,CL CREATE FILE1,0 ; CREATE cuteftp.key MOV FH1,AX ; MOVE THE FILE HANDLE OPEN FILE1,2 ; OPEN cuteftp.key ,while can read and write MOVPTR FH1,0,0,0 ; move the read/write point WRITE FH1,ZERO,2 ; write to the file WRITE FH1,NUM,2 WRITE FH1,CHANGE,10 WRITE FH1,ZERO,2 CLOSE FH1 lea dx,msg4 mov ah,9 int 21h ;;;;;;;;;;;;; OVER ;;;;;;;;;;;;;;;;;;;;;;;;; OVER: mov ah,4ch int 21h main endp end main ;;;;;;;;;;;; cftp2-k.asm 结束 ;;;;;;;;;;;;;;;;;