欢迎来到 嗅灵易学

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

今天补上,小球兄满意否,给点鼓励,我可是菜鸟,不要让菜鸟哭泣。。。 (6千字)

今天补上,小球兄满意否,给点鼓励,我可是菜鸟,不要让菜鸟哭泣。。。 (6千字)

昨天晚上没有详细写出,今天补上,希望对初学者有所帮助
第一步:注册算法分析,关键部分如下:
0167:01301313  JNL      01301360    ****->      开始注意了,以下为注册码计算部分
0167:01301315  MOV      EAX,[EBP-10]****->顺序取取注册名每个字母
0167:01301318  LEA      EDI,[ECX+01]****->初始化EDI,1,以后顺序加1,设为n(n=1,2...)
0167:0130131B  MOV      BL,[EAX]
0167:0130131D  MOVSX    ESI,BL
0167:01301320  MOV      EAX,ESI    ****->ESI=EDI=取出注册名 设为X
0167:01301322  MOV      EBX,4B
0167:01301327  IMUL    ESI
0167:01301329  IMUL    ESI        ****->X三次方
0167:0130132B  LEA      EDX,[ECX+01]
0167:0130132E  IMUL    EDX,EDI   
0167:01301331  SUB      EAX,EDX   
0167:01301333  LEA      EDX,[ECX+01] ****->减n平方
0167:01301336  IMUL    EDX,ESI
0167:01301339  SUB      EAX,EDX      ****->减n*X
0167:0130133B  INC      ECX
0167:0130133C  MOV      [EBP-0C],EAX
0167:0130133F  MOV      EAX,[EBP-0C]
0167:01301342  CDQ   
0167:01301343  XOR      EAX,EDX  ****-> 与0 XOR     
0167:01301345  SUB      EAX,EDX
0167:01301347  CDQ   
0167:01301348  IDIV    EBX
0167:0130134A  MOV      EAX,EDX    ****->除0x4b,取余送eax
0167:0130134C  MOV      EDX,[EBP-14]
0167:0130134F  ADD      AL,30      ****->加0x30
0167:01301351  MOV      [EDX],AL  ****->保存
0167:01301353  INC      DWORD [EBP-14]
0167:01301356  INC      DWORD [EBP-10]
0167:01301359  MOV      EAX,[EBP-08]
0167:0130135C  CMP      ECX,EAX     
0167:0130135E  JL      01301315    ****->循环处理每一个字母
第二步:构造GUI接口,以后写注册机可以用它作为模板
;cr_yj.rc******************************
#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 64, 53, 204, 52
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "易经八卦彩票占卜程序.V6.3 Asm Keygen by Hume"
FONT 8, "MS Sans Serif"
{
DEFPUSHBUTTON "GENERATE", ID_GEN, 148, 6, 50, 14
PUSHBUTTON "EXIT", ID_EXIT, 148, 24, 50, 14
EDITTEXT IDC_UN, 52, 10, 78, 12, WS_BORDER | WS_TABSTOP
EDITTEXT IDC_REG, 52, 29, 78, 13, WS_BORDER | WS_TABSTOP
LTEXT "USERNAME:", -1, 8, 12, 40, 10
LTEXT "REG  CODE:", -1, 8, 30, 41, 9
}
;hd.h****************************************head include files
    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\comctl32.inc
    include c:\masm32\include\comdlg32.inc
    include c:\masm32\include\shell32.inc
    includelib c:\masm32\lib\user32.lib
    includelib c:\masm32\lib\kernel32.lib
    includelib c:\masm32\lib\gdi32.lib
    includelib c:\masm32\lib\comctl32.lib
    includelib c:\masm32\lib\comdlg32.lib
    includelib c:\masm32\lib\shell32.lib
;cr_yj.asm******************************
.386
.model flat,stdcall
option casemap:none
include hd.h
_ProcDlg proto :DWORD,:DWORD,:DWORD,:DWORD 
;->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>data seg
        .data
User      db 80 dup(0)
Serial      db 80 dup(0)
Count      dd 0
adsn dd    0
MsgMesaage1 db "Must input Usernmae  in oder to generate Reg Code! ",0
MsgCap      db "By (C)hume,July,2001",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_COMMAND
          mov eax,wParam
          .IF lParam!=0 
            .if ax==ID_GEN                ;generate按钮按下时的处理
            invoke RtlZeroMemory,addr User,80
            invoke RtlZeroMemory,addr Serial,80
            invoke GetDlgItemText,hWnd,IDC_UN,addr User,80
                .if eax!=NULL
                mov Count,eax
                call Cal                  ;注册码生成子程序
                invoke SetDlgItemText,hWnd,IDC_REG,addr Serial
                .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子程序:
稍微修改一下这部分代码,使之能够从数据部分取数,计算注册码,小写代码为改动部分
Cal        PROC    uses eax ebx
      xor      edx,edx
      mov      ecx,0
      lea      ebx,Serial
      mov      adsn,ebx
 
lopcal:  LEA      EDI,[ECX+01]
      lea      eax,User
      add      eax,ecx
      MOV      BL,[EAX]
      MOVSX    ESI,BL
      MOV      EAX,ESI
      MOV      EBX,4Bh
      IMUL    ESI
      IMUL    ESI
      LEA      EDX,[ECX+01]
      IMUL    EDX,EDI
      SUB      EAX,EDX
      LEA      EDX,[ECX+01]
      IMUL    EDX,ESI
      SUB      EAX,EDX
      INC      ECX
      CDQ   
      XOR      EAX,EDX
      SUB      EAX,EDX
      CDQ   
      IDIV    EBX
      MOV      EAX,EDX
      ADD      AL,30h
      mov      ebx,adsn
      add      ebx,ecx
      dec      ebx
      MOV      [ebx],AL
      inc      ebx
      inc      eax
      CMP      ECX,Count 
      JL      lopcal    ;//比较循环是否结束循环,计算
ToEit:        ret
Cal        endp
;-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>end all       
    end start
第四步:编译,我用MASM32 V6编译,如果环境不同路径需要作部分修改
;mk.bat
cls
c:\masm32\bin\ml /c /coff /Cp  yj.asm
rc /v yj.rc
c:\masm32\bin\link /SUBSYSTEM:WINDOWS /LIBPATH:c:\masm32\lib yj.obj yj.res
第五步:享受成果,编译文件只有3k,没有进行压缩处理,执行速速飞快,win界面,dos界面总使人感觉与时代脱节,注册机在本人机器上运行正常,不知程序是否有BUG?调试真是比破解还累啊
第六步:总结
本人实在菜鸟一个,告诉菜鸟们一个秘诀,拿简单的开刀,使自己也变成老鸟!
付诗几句:
人生得意须尽欢,莫使金樽空对月!
仰天大笑出门去,我辈岂是蓬蒿人!
                    Hume,10/7,2001

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

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

0 0 0 举报
复制成功