补上一脚:MASM32注册机! (4千字)
;jjkg.asm.386
.model flat,stdcall
option casemap:none
include hd.h
_WinMain Proto :DWORD,:DWORD,:DWORD,:DWORD
Calculation Proto
.const
DLG_MAIN equ 1000
IDC_UN equ 1001
IDC_SN equ 1002
ID_GEN equ 1003
ID_EXIT equ 1004
.data
MsgCap db "捷径点点通 2. 5 注册机 by WenXinJY",0
MsgName db "请输入您的用户名!",0
hInstance dd 0
UserLen dd 0
szFormat db "%i",0
UserID db 80 dup (0)
SNtmp db 10 dup (0)
SN db 200 dup (0)
.radix 16
.code
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _WinMain,NULL
invoke ExitProcess,NULL
_WinMain proc uses ebx edi esi, \
hWnd:DWORD,wMsg:DWORD,wParam:DWORD,lParam:DWORD
mov eax,wMsg
.if eax == WM_CLOSE
invoke EndDialog,hWnd,NULL
.elseif eax == WM_INITDIALOG
invoke SetWindowText,hWnd,ADDR MsgCap
invoke SendDlgItemMessage,hWnd,IDC_SN,EM_SETREADONLY,TRUE,NULL
.elseif eax == WM_COMMAND
mov eax,wParam
.IF lParam!=0
.if eax==ID_GEN
invoke RtlZeroMemory,addr SN,200 ;注意这里,否则第二次生成的注册码会串在第一次的后面,呵呵
invoke GetDlgItemText, hWnd, IDC_UN, addr UserID, 80
.if eax!=NULL
mov UserLen,eax
invoke Calculation
invoke SetDlgItemText, hWnd, IDC_SN, addr SN
.else
invoke MessageBox,NULL,addr MsgName,addr MsgCap,MB_OK or MB_ICONEXCLAMATION
.endif
.elseif eax==ID_EXIT
invoke SendMessage,hWnd,WM_CLOSE,NULL,NULL
.endif
.ENDIF
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
_WinMain ENDP
Calculation Proc
pushad
mov ebx,UserLen
mov eax,6bh
mul ebx
mov ebx,eax
xor ebp,ebp
Next:
mov eax,ebx
add al, UserID[ebp]
adc eax,0 ;加上,取进位
cdq ;加上,否则非法操作时别找我
inc ebp
div ebp
push eax
push offset szFormat
push offset SNtmp
call wsprintf
add esp,4*3
invoke lstrcat,addr SN,addr SNtmp
Dec UserLen
jnz Next
popad
ret
Calculation Endp
End start
;=========================================jjkg.rc
#include <\masm32\include\resource.h>
#define DLG_MAIN 1000
#define IDC_UN 1001
#define IDC_SN 1002
#define ID_GEN 1003
#define ID_EXIT 1004
2 icon key.ico
DLG_MAIN DIALOG 64,53,240,52
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "捷径点点通 2. 5 注册机 by WenXinJY"
FONT 9, "宋体"
{
DEFPUSHBUTTON "注册", ID_GEN, 200, 8, 30, 14
PUSHBUTTON "退出", ID_EXIT, 200, 26, 30, 14
EDITTEXT IDC_UN, 40, 10, 150, 12, WS_BORDER | WS_TABSTOP
EDITTEXT IDC_SN, 40, 29, 150, 13, WS_BORDER | WS_TABSTOP
LTEXT "用户名:", -1, 8, 12, 30, 10
LTEXT "注册码:", -1, 8, 30, 30, 9
}
;===============================hd.h
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\gdi32.inc
include \masm32\include\comctl32.inc
include \masm32\include\comdlg32.inc
include \masm32\include\shell32.inc
include \masm32\include\advapi32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\comctl32.lib
includelib \masm32\lib\comdlg32.lib
includelib \masm32\lib\shell32.lib
includelib \masm32\lib\advapi32.lib
