欢迎来到 嗅灵易学

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

靠,MASM32注册机!!!! (5千字)

靠,MASM32注册机!!!! (5千字)

;=====dwakg.asm=====
;去掉了.data段的6个定义,加上了自动生成注册码功能,去除了错误提示。其余两个文件照旧。
.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 "Dance Revlution for winamp 注册机      by WenXinJY",0
hInstance    dd 0
UserLen      dd 0
szFormat      db "%i",0
UserID        db 80 dup (0)
SN            db 80 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
                      AND EAX,0FFFFH
                      CMP EAX,IDC_UN
                      JZ gENkEY
                  .IF lParam!=0
                      .if eax==ID_GEN
gENkEY:
                          invoke RtlZeroMemory,addr UserID,80
                          invoke RtlZeroMemory,addr SN,80
                          invoke GetDlgItemText, hWnd, IDC_UN, addr UserID, 80
                          .if  eax!=NULL
                              mov UserLen,eax
                              invoke Calculation
                              invoke SetDlgItemText, hWnd, IDC_SN, addr SN
                          .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
            lea esi,UserID
            xor ebx,ebx
            mov ecx,UserLen
            mov ebp,ecx
            shl ebp,1
Cal_Lop_1:
            lodsb
            xor bl,al      ;don't change bl
            loop Cal_Lop_1
            xor esi,esi
Cal_Next:
            cmp esi,8
            jl Cal_Lab_0
            cmp esi,ebp
            jge Cal_Exit
Cal_Lab_0:
            mov eax,esi
            test eax,eax
            jz Cal_Lab_1
            dec eax
Cal_Lab_1:
            mov edi,esi
            shr edi,1    ;save
            mov cl,SN[eax]
            xor cl,bl
            xor cl,8dh
            mov bl,cl      ;save
            movzx eax,cl
            mov ecx,3eh
            cdq
            idiv ecx
            mov al,3Dh
            sub al,dl
            cmp al,9
            jbe Cal_OK_11
            cmp al,0ah+1ah  ;10个数字+26个大写字母
            jb Cal_OK_12
            add al,'a'-(0a+1ah)      ;转化为小写字母
            jmp Cal_Lab_3
Cal_OK_11:           
            add al,'0'                ;转化为数字
            jmp Cal_Lab_3
Cal_OK_12:
            add al,'A'-0ah            ;转化为大写字母
Cal_Lab_3:
            mov SN[esi],al
           
            mov ecx,UserLen
            sub ecx,edi
            mov dl,UserID[ecx-1]
            xor dl,al
            xor dl,0d8h
            movzx eax,dl
            mov ecx,3eh
            cdq
            idiv ecx
            mov al,3dh
            sub al,dl
            cmp al,9
            jbe Cal_OK_21
            cmp al,0ah+1ah  ;10个数字+26个大写字母
            jb Cal_OK_22
            add al,'a'-(0a+1ah)      ;转化为小写字母
            jmp Cal_Lab_4
Cal_OK_21:           
            add al,'0'                ;转化为数字
            jmp Cal_Lab_4
Cal_OK_22:
            add al,'A'-0ah            ;转化为大写字母
Cal_Lab_4:
            inc esi
            mov SN[esi],al
            inc esi
            jmp Cal_Next
Cal_Exit:           
            popad
            ret
Calculation Endp
            End start
;======dfwakg.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 "Dance Revlution for winamp 注册机      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

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

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

0 0 0 举报
复制成功