欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

汇编注册机,写个玩玩, (3千字)

汇编注册机,写个玩玩, (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
}

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功