SoftWare:豪杰超级解霸3000英雄版注册机(MASM32)
Cracker:lq7972[bruceyu13@sina.com]
Notes:没什么东西拿出手,就把以前做的贴贴吧
(这个注册机只是演示了注册算法)
;KeyGen.asm
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; The KeyGen by lq7972,with MASM32 V8
; E-mail:bruceyu13@sina.com
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386
.model flat,stdcall
option casemap:none
;Include文件定义
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include gdi32.inc
includelib gdi32.lib
include comdlg32.inc
includelib comdlg32.lib
include masm32.inc
includelib masm32.lib
;Equ等值定义
ICO_MAIN equ 1000H
DLG_MAIN equ 1
EditName equ 10
EditSN equ 11
;*************************************************************************************
.data?
szName db 512 dup (?)
szSN db 20 dup (?)
Reg1 dd 4 dup (?)
Reg2 dd 4 dup (?)
Reg3 dd 4 dup (?)
Reg4 dd 4 dup (?)
Temp dd 512 dup (?)
Temp1 db 512 dup (?)
Temp2 db 512 dup (?)
.data
hInstance dd 0
szErr db '请输入用户名!',0
szErr1 db '对不起,用户名长了',0dh,0ah,\
'请更换用户名!',0
szCaption db '错误!',0
RegFmt db '%4s-%4s-%4s-%4s',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
;***************************************************************************************
_Calc proc
push ebx
mov al,byte ptr [Temp1]
mov bl,byte ptr [Temp2]
d10:
test bl,0C3H
jpe @F
stc
@@:
rcr bl,01
dec al
jnz d10
mov byte ptr [Temp2],bl
mov al,byte ptr [Temp2]
pop ebx
ret
_Calc endp
;***************************************************************************************
_NameRor proc
mov eax,DWORD ptr [Temp1]
mov ecx,DWORD ptr [Temp2]
ror eax,cl
mov DWORD ptr Temp,eax
mov eax,DWORD ptr Temp
ret
_NameRor endp
;***************************************************************************************
_NameCalc proc uses ebp edi esi ebx
xor ebx,ebx
invoke lstrlen,offset szName
.if eax > 200H
invoke MessageBox,NULL,offset szErr1,offset szCaption,MB_OK
mov eax,FALSE
ret
.endif
mov ebp,eax
cdq
and edx,3
add eax,edx
sar eax,2
test ebp,3
mov esi,eax
jz @F
inc esi
@@:
xor edi,edi
test ebp,ebp
jle c10
invoke lstrcpy,addr Temp,addr szName
@@:
mov eax,dword ptr [Temp+edi]
mov dword ptr [Temp2],eax
invoke _Calc
mov byte ptr [Temp+edi],al
inc edi
mov dword ptr [Temp1],edi
cmp edi,ebp
jl @B
c10:
xor edi,edi
test esi,esi
jle c20
@@:
mov dword ptr [Temp2],edi
add ebx,DWORD ptr [Temp+edi*4]
mov dword ptr [Temp1],ebx
mov eax,edi
and eax,01FH
inc edi
invoke _NameRor
mov ebx,eax
cmp edi,esi
jl @B
c20:
mov eax,ebx
ret
_NameCalc endp
;***************************************************************************************
_RgeCodCalc_1 proc
b10:
and eax,07FH
cmp al,041H
jb @F
cmp eax,05AH
jg @F
or eax,020H
@@:
cmp eax,06FH
jnz @F
xor eax,0FFH
@@:
cmp eax,030H
jnz @F
xor eax,0FFH
@@:
cmp eax,061H
jl @F
cmp eax,07AH
jle b20
@@:
cmp eax,031H
jl @F
cmp eax,039H
jle b20
@@:
xor eax,03FH
or eax,031H
jmp b10
b20:
ret
_RgeCodCalc_1 endp
;***************************************************************************************
_RegCodCalc proc
pushad
xor edi,edi
invoke _NameCalc
mov dword ptr Temp,eax
a10:
lea esi,[Temp+edi]
movsx eax,byte ptr [esi]
cmp eax,041H
jl @F
cmp eax,020H
jg @F
add eax,020H
@@:
inc edi
invoke _RgeCodCalc_1
mov byte ptr [Reg1+edi-1],al
cmp edi,04H
jl a10
mov eax,Reg1
xor edi,edi
lea edx,dword ptr [eax+eax*4]
lea eax,dword ptr [eax+edx*2]
add eax,eax
mov Temp,eax
a20:
lea ebx,dword ptr [Temp+edi]
mov al,byte ptr [ebx]
mov dword ptr Temp1,edi
mov Temp2,al
inc edi
invoke _Calc
xor ecx,ecx
mov cl,al
movsx eax,al
invoke _RgeCodCalc_1
mov byte ptr [Reg2+edi-1],al
cmp edi,04H
jl a20
mov eax,Reg2
mov ecx,Reg2
xor eax,Reg1
xor edi,edi
add eax,08H
lea edx,[ecx+ecx*2]
imul eax,Reg1
add eax,edx
mov Temp,eax
a30:
lea ebx,[Temp+edi]
inc edi
movsx eax,byte ptr [ebx]
invoke _RgeCodCalc_1
mov byte ptr [Reg3+edi-1],al
cmp edi,4
jl a30
mov eax,Reg2
mov ecx,Reg3
imul eax,Reg3
add eax,05H
lea edx,[ecx+ecx*2]
imul eax,Reg1
xor edi,edi
lea eax,[eax+edx*2]
mov Temp,eax
a40:
lea ebx,[Temp+edi]
inc edi
movsx eax,byte ptr [ebx]
invoke _RgeCodCalc_1
mov byte ptr [Reg4+edi-1],al
cmp edi,04H
jl a40
invoke wsprintf,addr szSN,addr RegFmt,addr Reg1,addr Reg2,addr Reg3,addr Reg4
popad
ret
_RegCodCalc endp
;**************************************************************************************
_ProcDlgMain proc uses ebx edi esi ebp hWnd,wMsg,wParam,lParam
mov eax,wMsg
.if eax == WM_CLOSE
invoke EndDialog,hWnd,NULL
.elseif eax == WM_COMMAND
mov eax,wParam
.if eax == IDOK
invoke RtlZeroMemory,offset szName,512
invoke GetDlgItemText,hWnd,EditName,offset szName,512
.if eax != NULL
invoke _RegCodCalc
invoke SetDlgItemText,hWnd,EditSN,offset szSN
mov eax,FALSE
ret
.else
invoke MessageBox,NULL,offset szErr,offset szCaption,MB_OK
mov eax,FALSE
ret
.endif
.elseif eax == IDCANCEL
invoke EndDialog,hWnd,NULL
.endif
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
_ProcDlgMain endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL
invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start
//KeyGen.rc
#include
#define ICO_MAIN 0x1000
#define DLG_MAIN 1
#define EDITName 10
#define EDITSN 11
//ICO_MAIN ICON "01.ico"
DLG_MAIN DIALOG 100,150,250,60
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
CAPTION "豪杰超级解霸3K~英雄版 注册机 by lq7972"
FONT 9,"宋体"
{
CONTROL "Name:" ,-1,"Static",SS_LEFT,10,13,40,17
CONTROL "SN:" ,-2,"Static",SS_CENTER,10,40,20,17
CONTROL "" ,10,"Edit",ES_LEFT,30,13,150,10
CONTROL "" ,11,"Edit",ES_LEFT,30,40,150,10
DEFPUSHBUTTON "GENERATE",IDOK,200,11,40,15
PUSHBUTTON "EXIT",IDCANCEL,200,36,41,14
}
#makefile
NAME = KeyGen
OBJS = $(NAME).obj
RES = $(NAME).res
LINK_FLAG = /subsystem:windows
ML_FLAG = /c /coff
$(NAME).exe: $(OBJS) $(RES)
Link $(LINK_FLAG) $(OBJS) $(RES)
.asm.obj:
ml $(ML_FLAG) $<
.rc.res:
rc $<
clean:
del *.obj
del *.res