📄 sigprog.asm
字号:
; Signature Program v3.0 Key Generator.
; CrackZ (21/06/98).
;
; Use tasm /zi sigprog.asm and then tlink /v sigprog
; to generate sigprog.exe
.MODEL SMALL
.STACK 100h
.386
.DATA
input DB 22h,0
serial DB 50h dup ('$')
prompt DB 'Input your Registration Name: ','$'
done DB 'Your Registration Code is: ','$'
lf DB 0ah,0dh,'$'
logo DB 0ah,0dh, '--------------------------------------',0ah,0dh
DB ' Signature Program v3.0 Key Generator ',0ah,0dh
DB ' by CrackZ ',0ah,0dh
DB '--------------------------------------',0ah,0dh
DB 0ah,0dh,'$'
.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],00
JE noname ;Jump no name entered.
LEA EDI,input+2
XOR EAX,EAX
MOVZX EBX,BYTE PTR [EDI-01] ;Get length of name.
PUSH EBX
XOR ECX,ECX
loop1: MOV AL, BYTE PTR [EDI+ECX]
CMP AL,61h ;Check below 'a'.
JB below
CMP AL,7Ah ;Check above 'z'.
JA below
SUB AL,20h ;Uppercase char.
MOV BYTE PTR [EDI+ECX],AL
below: INC ECX
DEC EBX
TEST EBX,EBX
JNZ loop1
XOR EAX,EAX
XOR ECX,ECX
XOR ESI,ESI
POP EBX
loop2: MOV CL, BYTE PTR [EDI+EAX] ;Get character value.
CMP CL,20h ;Check if its a space.
JZ addin ;If it is, then jump.
IMUL ECX,ECX ;Multiply it.
ADD ESI,ECX ;Store result in ESI.
JMP addin ;Jump to addin.
addin: DEC EBX
INC EAX
XOR ECX,ECX ;Just make sure ECX is 0 for next character.
TEST EBX, EBX
JNZ loop2
MOV EAX,93h ;EAX = 93h (147dec).
IMUL EAX,ESI ;Multiply loop2 result with 93h.
XOR EBX,EBX
LEA EDI,[serial]
XOR ECX,ECX
MOV ECX,0Ah ;ECX moved to 10.
;Now to convert the result into an ASCII value for output.
loop3: XOR EDX,EDX
DIV ECX
ADD EDX,30h
PUSH EDX
INC EBX
TEST EAX,EAX
JNZ loop3
loop4: POP EDX ;Get character from the stack.
MOV BYTE PTR [EDI+EAX],DL
INC EAX
TEST EBX,EBX
DEC EBX ;Decrement counter.
JNZ loop4
MOV BYTE PTR [EDI+EAX],'$' ;Paste end character to the registration code.
;Now lets output the string.
LEA EDX,[done]
MOV AH,09h
INT 21h ;Output.
LEA EDX,[serial]
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 + -