BadCopy99V2.0序號產生器(MASM版) --by fpx (4千字)

看雪資料發表於2002-07-22

BadCopy99V2.0序號產生器(MASM版) 下載:華軍
序號產生器下載fpxxp.com/bc2-key.exe
作者:風飄雪 http://fpx.yeah.net
; #########################################################################
; KeyGenerator for xxx, coded by fpx 2002(序號產生器模板)
; #########################################################################

      .386
      .model flat, stdcall
      option casemap :none  ; case sensitive 區分大小寫

; #########################################################################

      include c:\masm32\include\windows.inc
      include c:\masm32\include\user32.inc
      include c:\masm32\include\kernel32.inc
      include c:\masm32\include\gdi32.inc
      include c:\masm32\include\masm32.inc

      includelib c:\masm32\lib\user32.lib
      includelib c:\masm32\lib\kernel32.lib
      includelib c:\masm32\lib\gdi32.lib
      includelib c:\masm32\lib\masm32.lib

; #########################################################################

        szText MACRO Name, Text:VARARG
          LOCAL lbl
            jmp lbl
              Name db Text,0
            lbl:
          ENDM
         
        WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
       
    .data
        TheName    dd 0
        Button      dd 0
        hInstance  dd 0
        hIconImage  dd 0
        hIcon      dd 0
        dlgname    db "KEYGEN",0
        errorLabel  db "Error"
        szName      db 30 dup(?)
        szKey      db 10 dup(?)
        szWS        db '%d',0

; #########################################################################

    .code

start:
      invoke GetModuleHandle, NULL
      mov hInstance, eax

      ; call dialog box stored in resource file
      invoke DialogBoxParam,hInstance,ADDR dlgname,0,ADDR WndProc,0

      invoke ExitProcess,eax

; #########################################################################

WndProc proc hWin:DWORD, uMsg:DWORD, wParam:DWORD, lParam :DWORD
    LOCAL Ps:PAINTSTRUCT

      ; initialization
      .if uMsg == WM_INITDIALOG
        szText dlgTitle,"fpx's KeyGenerator for BadCopy99V2.0"
        invoke SendMessage,hWin,WM_SETTEXT,0,ADDR dlgTitle
        invoke LoadIcon,hInstance,200
        mov hIcon, eax
        invoke SendMessage,hWin,WM_SETICON,1,hIcon
        invoke GetDlgItem,hWin,100
        mov TheName, eax
        invoke GetDlgItem,hWin,1000
        mov Button, eax
        xor eax, eax
        ret

      .elseif uMsg == WM_COMMAND
        .if wParam == 1000
            invoke GetDlgItemText,hWin,100,offset szName,30    ; 獲得姓名
            cmp eax,1
            jl NoName  ; 檢查姓名輸入情況
            push eax    ; 姓名長度
            push offset szName  ; 姓名=dlgitemtext入棧
            call generateKey    ; 呼叫算碼程式
            invoke wsprintf,offset szKey,offset szWS,eax ; 寫序列號
            invoke SetDlgItemText,hWin,22,offset szKey ; 將序列號顯示出來
            jmp NoError
          NoName:  ; 如果沒輸姓名
            szText errorMsg,"I Need Characters  :)"
            invoke MessageBox,hWin,ADDR errorMsg,ADDR errorLabel,MB_OK
          NoError: 
        .endif
       
      .elseif uMsg == WM_CLOSE
        invoke EndDialog,hWin,0
       
      .elseif uMsg == WM_PAINT
        invoke BeginPaint,hWin,ADDR Ps
        invoke FrameWindow,hWin,0,1,1
        invoke FrameWindow,hWin,1,1,0
        invoke EndPaint,hWin,ADDR Ps
        xor eax, eax
        ret
      .endif

    ret

WndProc endp

; ########################################################################
; 算碼過程,基本上參考反彙編程式碼,可見學好32位彙編真的很重要  :)
; ########################################################################

generateKey:
    push ebp
    mov ebp,esp
    push ebx
    push ecx
    push edx
    push edi
    push esi
    push ebp
    xor esi,esi ; esi清零
    mov ecx,eax ; 姓名長度傳入ecx
    mov eax,1
  addr_1:
    mov edx,[offset szName]
    mov dl,[eax+szNamQ-1] ; 依次取姓名
    and edx,255    ; FF即255
    mov ebx,edx    ; 註冊碼最後儲存在esi
    imul ebx,eax
    add esi,ebx
    mov ebx,edx
    inc eax
    dec ecx
    jnz addr_1
    mov eax, 6695bh   
    sub eax,esi ; 結果存入eax
    pop ebp
    pop esi
    pop edi
    pop edx
    pop ecx
    pop ebx
    leave             
    retn 00008h
   
; ########################################################################

end start

相關文章