龙文五笔(9千字) 算法分析
;
;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,
}
相关资讯:
·语音界面2.0算法分析及注册机源码!
·侠客系统修改器1.21破解手记--算法分析
·中文拨号上网计时计费器 V4.12注册算法分析
·ClockWise 3.22e注册码算法分析
·CoolClock V1.02注册算法分析
·Directory Scanner v1.5 注册算法分析
·Disk Chief 1.2 简单注册算法分析
·EffeTech HTTP Sniffer 3.2注册算法分析
·eLib2.01算法分析
·EZ MP3 Recorder 1.15 注册算法分析
相关软件:
→ 特别推荐
→ 热点TOP10
我为人人《《==》》人人为我
关于我们 |
帮助(?)|
广告服务 |
版权声明 |
商业合作 |
发展历程 |
加盟我们 |
联系我们
Copyright (C) 1998-2004 winzheng.com All Rights Reserved.
特别感谢 蓝芒科技 提供下载站及论坛服务器
当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。