汇编注册机,写个玩玩, (3千字)
编译后3K,哪位懒得编译QQ发给你;*********************************MASM 6.0 Compile
cls
c:\masm32\bin\ml /c /coff /Cp cr_wm.asm
rc /v cr_wm.rc
c:\masm32\bin\link /SUBSYSTEM:WINDOWS /LIBPATH:c:\masm32\lib cr_wm.obj cr_wm.res
;***********************************
.386
.model flat,stdcall
option casemap:none
include c:\masm32\include\windows.inc
include c:\masm32\include\user32.inc
include c:\masm32\include\kernel32.inc
includelib c:\masm32\lib\user32.lib
includelib c:\masm32\lib\kernel32.lib
_ProcDlg proto :DWORD,:DWORD,:DWORD,:DWORD
;->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>data seg
.data
Serial db 4 dup(0)
Username db 36 dup(0)
Currentpos dd 0
szBuf1 db 100 dup(0)
szBuf2 db "%u",0
MsgMesaage1 db "Must input Username in order to generate Reg Code! ",0
MsgCap db "By (C)hume,2001",0
MsgMesaage2 db "The Username can't exceed 32 byetes! ",0
.data?
hInstance HANDLE ?
.const
DLG_MAIN equ 1000
IDC_UN equ 1001
IDC_REG equ 1002
ID_GEN equ 1003
ID_EXIT equ 1004
;-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>code seg
.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
mov eax,wMsg
.if eax == WM_CLOSE
invoke EndDialog,hWnd,NULL
.elseif eax == WM_INITDIALOG
invoke SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,\
SWP_NOMOVE or SWP_NOSIZE or SWP_DRAWFRAME
.elseif eax == WM_COMMAND
mov eax,wParam
.IF lParam!=0
.if ax==ID_GEN
invoke GetDlgItem,hWnd,IDC_UN
invoke SetFocus,eax
invoke RtlZeroMemory,addr Username,33
invoke RtlZeroMemory,addr szBuf1,100
invoke GetDlgItemText,hWnd,IDC_UN,addr Username,32
.if eax>32
invoke MessageBox,NULL,addr MsgMesaage1,addr MsgCap,MB_OK or MB_ICONEXCLAMATION
.elseif eax!=0
call Cal
mov eax,dword ptr Serial
invoke wsprintf,addr szBuf1,addr szBuf2,eax
invoke SetDlgItemText,hWnd,IDC_REG,addr szBuf1
invoke GetDlgItem,hWnd,IDC_REG
invoke SetFocus,eax
.else
invoke MessageBox,NULL,addr MsgMesaage1,addr MsgCap,MB_OK or MB_ICONEXCLAMATION
.endif
.elseif ax==ID_EXIT
invoke SendMessage,hWnd,WM_CLOSE,NULL,NULL
.endif
.ENDIF
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
_ProcDlg ENDP
Cal proc
pusha
mov al,0
mov ecx,-1
LEA EDI,Username
repnz scasb
NOT ecx
dec ecx
LEA EDI,Username
dec edi
Fill_Rest:
mov bl, byte ptr [edi+ecx]
lea esi,[edi+ecx]
mov eax, ebx
and eax, 0FFh
cdq
idiv ecx
mov edx, eax
mov al, bl
imul cl
add dl, al
inc ecx
cmp ecx, 20h
mov byte ptr [esi+1], dl
jl Fill_Rest
lea ebp,Serial
xor esi, esi
xor edi,edi
mov eax, esi
Calsn: mov eax,esi
xor ecx, ecx
cdq
mov byte ptr [ebp+edi], 0
sar eax, 2
Xor_Every_8bit:
add ecx,eax
mov dl, byte ptr [ebp+ecx+4] ;取每8位第一个字节
and ecx,7
mov bl, byte ptr [ebp+edi]
xor bl, dl
inc ecx
cmp ecx, 8
mov byte ptr [ebp+edi], bl
jl Xor_Every_8bit
add esi, 20h
inc edi
cmp esi, 80h
jl Calsn
popa
ret
Cal endp
;-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>end all
end start
;**********************************
#include <c:\masm32\include\resource.h>
#define DLG_MAIN 1000
#define IDC_UN 1001
#define IDC_REG 1002
#define ID_GEN 1003
#define ID_EXIT 1004
DLG_MAIN DIALOG 31, 56, 262, 52
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "文件密使.V2.1 Keygen by Hume.E-mail:humewen@263.net"
FONT 8, "MS Sans Serif"
{
DEFPUSHBUTTON "GENERATE", ID_GEN, 191, 6, 50, 14
PUSHBUTTON "EXIT", ID_EXIT, 191, 26, 50, 14
EDITTEXT IDC_UN, 43, 10, 128, 12, WS_BORDER | WS_TABSTOP
EDITTEXT IDC_REG, 43, 29, 128, 13, ES_READONLY | WS_BORDER | WS_TABSTOP
LTEXT "注册名:", -1, 8, 12, 26, 10
LTEXT "注册码:", -1, 8, 30, 25, 9
}
