;
;keymake of LongWen WuBi 2.0
;by: Fpc/CCG
;@ : 2002-11-13
;
.386
.model flat,stdcall
option casemap:none
include hd.h
_ProcDlg proto :DWORD,:DWORD,:DWORD,:DWORD
GetOurCode proto :DWORD,
:DWORD
;->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>data seg
.const
BUFF_SIZE equ 36
ID_MAKE equ 1002
ID_ABOUT
equ 1003
ID_CLOSE
equ 1004
IDC_MECHINE equ 1010
IDC_CODE equ 1011
IDC_STATUS
equ 1015
DLG_MAIN
equ 1000
.data
szMechine
db BUFF_SIZE dup (0)
;mechine code
szCode db
BUFF_SIZE dup (0) ;legal code
for input :)
MsgTitle db "+CCG+",
0
MsgContend db "XXXXX2.0注册机", 0dh,
0ah, 0dh, 0ah
db
"Cracker: Fpc", 0dh, 0ah
db "Team : China Cracking Group",
0dh, 0ah
db
"Release: 2002-11-13", 0dh, 0ah
db "Website: www.ccg.com", 0dh,
0ah, 0dh, 0ah
db
" 本软件受版权法保护,请合法使用。", 0
szSucceed db
"完毕:)", 0
szNoInput db
"请输入机器码", 0
szSizeError db "机器码位数不对",
0
szIllegalMC db "机器码含非法字符", 0
LibName db "msvcrt.dll",0
DllNotFound db "无法加载msvcrt.dll",0
AppName
db "CCG",0
F_ltoa
db "_ltoa", 0
.data?
hInstance HANDLE ?
hLib dd ?
hMake
HANDLE ?
A_ltoa dd ?
.code
start:
invoke GetModuleHandle,NULL
mov
hInstance,eax
invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset
_ProcDlg,0
invoke ExitProcess,NULL
_ProcDlg
proc uses ebx edi esi, \
hWnd:DWORD,wMsg:DWORD,wParam:DWORD,lParam:DWORD
LOCAL Ps :PAINTSTRUCT
mov eax,wMsg
.if eax == WM_CLOSE
invoke FreeLibrary,hLib
invoke
EndDialog,hWnd,NULL
.elseif eax==WM_INITDIALOG
invoke LoadLibrary,addr LibName
.if eax==NULL
invoke MessageBox,NULL,addr
DllNotFound,addr AppName,MB_OK
.else
mov hLib,eax
invoke GetProcAddress,hLib,addr F_ltoa
mov A_ltoa, eax
.endif
.elseif eax == WM_PAINT
invoke BeginPaint,hWnd,ADDR Ps
; ----------------------------------------
; The following function are
in MASM32.LIB
; ----------------------------------------
invoke FrameWindow,hWnd,0,1,1
invoke FrameWindow,hWnd,1,1,0
invoke EndPaint,hWnd,ADDR
Ps
xor eax, eax
.elseif eax == WM_COMMAND
mov eax,wParam
.IF lParam!=0
.if
ax==ID_MAKE
invoke
RtlZeroMemory, addr szMechine, BUFF_SIZE
invoke RtlZeroMemory, addr szCode, BUFF_SIZE
invoke GetDlgItemText,hWnd,IDC_MECHINE,addr
szMechine, BUFF_SIZE
.if eax == 0
invoke SetDlgItemText,hWnd,IDC_STATUS,addr szNoInput
ret
.elseif eax==29
;delete '-'
lea esi, szMechine
mov
edi, esi
mov
ecx, eax
xor
eax, eax
@movch:
lodsb
cmp
al, '-'
jnz
@nextch
lodsb
@nextch:
stosb
test
al, al
jz
@end1
jmp
@movch
.elseif eax == 24
@end1:
lea
esi, szMechine
lea edi, szCode
invoke GetOurCode, edi, esi
.if eax==0
invoke
SetDlgItemText,hWnd,IDC_STATUS,addr szSucceed
.elseif eax==1
invoke
SetDlgItemText,hWnd,IDC_STATUS,addr szSizeError
.elseif eax==2
invoke
SetDlgItemText,hWnd,IDC_STATUS,addr szIllegalMC
.endif
invoke SetDlgItemText,hWnd,IDC_CODE,addr
szCode
.else
invoke
SetDlgItemText,hWnd,IDC_STATUS,addr szSizeError
.endif
.elseif ax==ID_CLOSE
invoke
EndDialog,hWnd,NULL
.elseif
ax==ID_ABOUT
invoke
MessageBox, hWnd, Addr MsgContend, Addr MsgTitle, MB_OK
.endif
.ENDIF
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
_ProcDlg ENDP
GetOurCode proc pCode:DWORD, pMechine:DWORD
invoke lstrlen, pMechine
cmp
eax, 24
jz @next1
push 1
pop eax
ret
@charerror:
push 2
pop eax
ret
nop
@next1:
invoke CharUpperA, pMechine
;
;main math
;
push 6
pop ecx
mov esi, pMechine
mov edi, esi
;
@next4ch:
push 4
pop edx
xor ebx,
ebx
xor eax, eax
@this4ch:
lodsb
cmp al, 'F'
jg
@charerror
cmp al, 'A'
jl @next2
sub al, 'A'
add al, 0ah
jmp @next3
@next2:
cmp al, '9'
jg
@charerror
cmp al, '0'
jl @charerror
sub al, '0'
@next3:
shl ebx,
4
or bl, al
dec edx
jnz
@this4ch
mov ax, bx
stosw
dec ecx
jnz @next4ch
xor eax, eax
stosb
;
mov esi, pMechine
push ebp
mov ebp, esi
mov ax, word ptr [ebp+00]
shl eax, 05
mov word ptr [ebp+00], ax
xor eax, eax
mov
ax, word ptr [ebp+02]
lea eax, dword ptr [eax+8*eax]
shl eax, 02
mov word ptr [ebp+02],
ax
xor eax, eax
mov ax, word
ptr [ebp+04]
lea ecx, dword ptr [8*eax+0]
sub ecx, eax
lea eax, dword ptr [ecx+4*ecx]
xor ecx, ecx
mov word ptr [ebp+04],
ax
mov cx, word ptr [ebp+06]
mov
eax, ecx
shl eax, 04
add eax,
ecx
shl eax, 1
mov word ptr [ebp+06],
ax
xor eax, eax
mov ax, word
ptr [ebp+08]
lea ecx, dword ptr [eax+4*eax]
shl ecx, 03
sub ecx, eax
mov
word ptr [ebp+08], cx
xor eax, eax
mov
ax, word ptr [ebp+0Ah]
lea ecx, dword ptr [eax+8*eax]
lea eax, dword ptr [eax+4*ecx]
mov
word ptr [ebp+0Ah], ax
xor eax, eax
mov
ax, word ptr [ebp+00]
mov ecx, eax
xor
eax, eax
mov ax, word ptr [ebp+0Ah]
mov
edx, eax
shl edx, 05
add edx,
eax
lea eax, dword ptr [edx+2*ecx]
mov
word ptr [ebp+0Ah], ax
xor eax, eax
xor
ecx, ecx
mov ax, word ptr [ebp+04]
mov
cx, word ptr [ebp+08]
lea eax, dword ptr [ecx+2*eax]
mov word ptr [ebp+08], ax
;don't need
to imul 0x39, damned
;mov esi, ebp
;add
esi, 4
;mov edi, esi
pop ebp
;push 4
;pop ecx
;xor eax, eax
;@@small:
;lodsw
;imul ax, 39h
;and
eax, 0FFFFh
;stosw
;loop @@small
nop
mov esi, pMechine
push 6
pop ebx
mov edi, pCode
@@small2:
xor eax, eax
lodsw
push 16
push edi
push eax
call [A_ltoa]
add esp, 0ch
add edi, 4
mov al, '-'
stosb
dec ebx
jnz @@small2
mov byte ptr [edi-1], 0
nop
mov ebx, pCode
mov al, byte ptr [ebx]
mov
cl, byte ptr [ebx+06]
mov byte ptr [ebx+06], al
mov byte ptr [ebx], cl
mov al, byte ptr [ebx+08]
mov dl, byte ptr [ebx+1Bh]
mov
byte ptr [ebx+08], dl
mov byte ptr [ebx+1Bh], al
mov al, byte ptr [ebx+0Dh]
mov dl,
byte ptr [ebx+17h]
mov byte ptr [esp+2Ch], al
mov byte ptr [ebx+17h], al
mov byte ptr [ebx+0Dh],
dl
invoke CharUpperA, pCode
xor eax, eax
ret
GetOurCode endp
end start
********rsrc.rc
;rsrc.rc
#include <d:\masm32\include\resource.h>
#define
ID_MAKE 1002
#define ID_ABOUT
1003
#define ID_CLOSE 1004
#define
IDC_MECHINE 1010
#define IDC_CODE 1011
#define IDC_STATUS 1015
#define MyIcon
1020
#define MyBmp
1025
#define DLG_MAIN 1000
MyIcon
ICON MOVEABLE PURE DISCARDABLE "CCG.ico"
BIT_CCG
BITMAP CCG.BMP
DLG_MAIN DIALOG 108, 90,
180, 110
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
| DS_CENTER | DS_3DLOOK
CAPTION "CCG KeyGen: XXXXX2.0"
FONT 8, "Fixedsys"
{
CONTROL "BIT_CCG",MyBmp,"Static",SS_BITMAP,4,3,0,0
DEFPUSHBUTTON "生成", ID_MAKE, 35, 81, 30, 14, BS_FLAT
PUSHBUTTON
"关于", ID_ABOUT, 85, 81, 30, 14, BS_FLAT
PUSHBUTTON "退出", ID_CLOSE, 135, 81,
30, 14, BS_FLAT
LTEXT "机器码:", -1, 14, 52, 30, 8
LTEXT "注册码:", -1,
14, 67, 30, 8
LTEXT "就绪", IDC_STATUS, 15, 98, 120, 10, WS_DISABLED
LTEXT "Fpc/CCG", -1, 145, 98, 30, 8, WS_DISABLED
EDITTEXT IDC_MECHINE,
46, 51, 120, 12, WS_BORDER | WS_TABSTOP,
EDITTEXT IDC_CODE, 46, 66,
120, 12, ES_READONLY | WS_BORDER | WS_TABSTOP,
}
- 标 题:龙文五笔(9千字)
- 作 者:Fpc
- 时 间:2002-11-13 11:26:40
- 链 接:http://bbs.pediy.com