📄 parker1.asm
字号:
; PaRKeR's CrackMe v1.0 Key Generator.
; CrackZ (29/11/98).
; Use tasm /zi parker1.asm and then tlink /v parker1
; to generate parker1.exe
.MODEL SMALL
.STACK 100h
.386
.DATA
done DB 'Your Registration Code is: ','$'
fill DB 8h dup ('$')
input DB 1Fh dup ('$')
lf DB 0ah,0dh,'$'
logo DB 0ah,0dh, '--------------------------------------',0ah,0dh
DB ' PaRKeR''s CrackMe v1.0 Key Generator ',0ah,0dh
DB ' by CrackZ ',0ah,0dh
DB '--------------------------------------',0ah,0dh
DB 0ah,0dh,'$'
prompt DB 'Input your desired Registration Name (min 6 chars): ','$'
.CODE
START: MOV AX,@DATA
MOV DS,AX
MOV ES,AX
LEA EDX,[logo]
MOV AH,09h
INT 21h ;Display Logo.
LEA EDX,[prompt]
MOV AH,09h
INT 21h ;Prompt.
LEA EDX,[input]
MOV AH,0Ah
INT 21h ;Get registration name.
LEA EDX,[lf]
MOV AH,09h
INT 21h
CMP BYTE PTR [input+1],06
JL noname ;Jump name too short.
LEA ESI,input+2 ;Name.
MOVZX EBX,BYTE PTR [ESI-01] ;Get length.
PUSH EBX
XOR EAX,EAX
XOR ECX,ECX
XOR EDX,EDX ;Clear registers.
MOVSX ECX,BYTE PTR [ESI]
MOV EAX,0CACA00h
CDQ
IDIV ECX
MOV EDI,EAX ;Use EDI as the store.
INC ESI
XOR ECX,ECX ;Clear ECX.
DEC EBX ;Now to loop the name.
@loop: MOVSX EDX,BYTE PTR [ESI]
INC CL
SHL EDX,CL
ADD EDI,EDX
INC ESI
DEC EBX
TEST EBX,EBX
JZ @prep
CMP CL,3h
JNZ @loop
XOR ECX,ECX
SUB CL,1h
JMP @loop
@prep: POP EBX
SUB ESI,EBX
MOV EAX,EDI
XOR EBX,EBX
MOV ECX,0Ah
@out1: XOR EDX,EDX
DIV ECX
ADD EDX,30h ;Add 30h.
PUSH EDX ;Stack it.
INC EBX ;Increment counter.
TEST EAX,EAX
JNZ @out1
LEA EDI, [fill]
@out2: POP EDX
MOV BYTE PTR [EDI+EAX],DL
INC EAX
DEC EBX ;Decrement counter.
JNZ @out2
LEA EDX,[done]
MOV AH,09h
INT 21h ;Output.
LEA EDX,[fill]
MOV AH,09h
INT 21h ;Print registration code.
noname: LEA EDX,[lf]
MOV AH,09h
INT 21h
MOV AX,4C00h
INT 21h
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -