BootStar v7.33 keygen in pure win32asm
很久没见到这么简单的玩意儿了,不容易。
使用,转载请保持完整性。
;======================================================================
;BootStar v7.33 keygen by arbiter. Feb.2002.
;Assemble:
;tasm32 /mx /m4 /z keygen.asm
;tlink32 -x -V4.0 -Tpe -aa -c keygen.obj,keygen,,,keygen.def,keygen.res
;======================================================================
.386
.MODEL FLAT, STDCALL
LOCALS
UNICODE = 0
include E:\TASM5Plus\TASM5Plus\INCLUDE\w32.inc
includelib E:\TASM5Plus\TASM5Plus\LIB\imp32i.lib
IDD_DIALOG equ 101
EDIT_NAME equ 1001
EDIT_CODE equ 1002
BT_ABOUT equ 1003
BT_EXIT equ 1004
extrn wsprintfA : PROC
extrn CharUpperA : PROC
extrn memset : PROC
minl = 10
maxl = 60
.DATA
defName db "arbiter[CCG]", 0
cap db "BootStar v7.33 KeyGen by arbiter[CCG]", 0
format db "BM1-%s-%s-%s", 0
abouttxt db "$^) ", 13, 10
db "Key Generator for BootStar v7.33 ", 13, 10
db "@@@ Made by arbiter[CCG] @@@ ", 13, 10, 13, 10
db "Hope you'll be satisfied! with ", 13, 10
db "this release from arbiter. ", 13, 10
db "to be continue... ", 0
aboutcap db "uh-huh!", 0
insuLen db "Name length must equal or greater 10!", 0
.DATA?
hdlg dd ?
_hInst dd ?
nlen dd ?
uName db 60 dup( ? )
uCode db 30 dup( ? )
temp db 30 dup( ? )
part1 db 10 dup( ? )
part2 db 10 dup( ? )
part3 db 10 dup( ? )
.CODE
Start: pushad
call GetModuleHandle, 0
test eax, eax
je @out
mov _hInst, eax
call DialogBoxParamA, _hInst, IDD_DIALOG, 0, offset DlgProc, 0
@out:
popad
call ExitProcess, 0
RET
;----------------------------------------------------------------------
DlgProc PROC __hWnd : DWORD, wmsg : UINT, _wParam : WPARAM, _lParam : LPARAM
uses ebx, esi, edi
mov eax, wmsg
cmp eax, WM_CLOSE
jz _wmDes
cmp eax, WM_COMMAND
jz _wmCmd
cmp eax, WM_INITDIALOG
jz _wmInit
xor eax, eax
RET
;----------------------------------------------------------------------
_wmDes:
call EndDialog, hdlg, 0
RET
;----------------------------------------------------------------------
_wmCmd:
mov eax, _wParam
cmp ax, EDIT_NAME
jnz nochange
shr eax, 16
cmp ax, EN_CHANGE
jnz nochange
call Generate
xor eax, eax
RET
nochange:
cmp ax, BT_ABOUT
jnz noAbout
call MessageBoxA, hdlg, offset abouttxt, offset aboutcap, \
MB_ICONINFORMATION OR MB_OK OR MB_APPLMODAL
jmp cout
noAbout:
cmp ax, BT_EXIT
jz _wmDes
cout:
xor eax, eax
RET
;-----------------------------------------------------------------------
_wmInit:
mov eax, __hWnd
mov hdlg, eax
call GetDlgItem, __hWnd, EDIT_NAME
call SendMessageA, eax, EM_SETLIMITTEXT, maxl, 0
call SetWindowTextA, __hWnd, offset cap
call SetDlgItemTextA, __hWnd, EDIT_NAME, offset defName
push 1
pop eax
RET
DlgProc ENDP
;-----------------------------------------------------------------------
Generate PROC
call GetDlgItemtextA, __hWnd, EDIT_NAME, offset uName, maxl + 1
cmp eax, minl
jl @CharsInsufficient
mov nlen, eax
push offset uName
call CharUpperA
mov ecx, nlen
xor eax, eax
xor edx, edx
lea esi, uName
@conti:
mov al, byte ptr[esi]
add edx, eax
inc esi
dec ecx
jnz @conti
xchg dh, dl
push dx
call memset, offset part1, 0, 10
add esp, 12
pop dx
lea edi, part1
mov byte ptr[edi], 2
mov word ptr[edi+1], dx
push edi
push offset temp
call Computel
mov eax, dword ptr[temp]
mov dword ptr[part2], eax
mov al, byte ptr[uName]
mov byte ptr[part2+4], al ;finish constructing the 2nd part.
mov dx, word ptr[uName]
push dx
call memset, offset part1, 0, 10
add esp, 12
pop dx
lea edi, part1
mov byte ptr[edi], 2
mov word ptr[edi+1], dx
push edi
push offset temp
call Computel
mov eax, dword ptr[temp]
mov dword ptr[part3], eax ;finish constructing the 3rd part.
call memset, offset part1, 0, 10
add esp, 12
lea edi, part1
mov byte ptr[edi], 1
mov eax, nlen
mov byte ptr[edi+1], al
push edi
push offset temp
call Computel
mov ax, word ptr[temp]
push ax
push ax
call memset, offset part1, 0, 10
add esp, 12
pop ax
lea edi, part1
lea esi, uName
mov word ptr[edi], ax
mov al, byte ptr[esi+1]
inc edi
inc edi
stosb ;be preparing the 1st part...
call memset, offset temp, 0, 30
add esp, 12
push offset part3
push offset part2
push offset part1
call wsprintfA, offset temp, offset format
add esp, 20
;now checking out the mid-age buffer length.
or ecx, 0FFFFFFFFH
lea edi, temp
xor al, al
repnz scasb
neg ecx
dec ecx
xor edx, edx
lea esi, [temp] ;sum up the temp buf for finalizing the part1.
sum2: xor eax, eax
mov al, byte ptr[esi]
add dx, ax
inc esi
dec cl
jnz sum2
push dx
call memset, offset temp, 0, 30
add esp, 12
pop dx
lea edi, [part1]
mov byte ptr[edi], 1
mov byte ptr[edi+1], dl
push edi
push offset temp
call Computel
call memset, offset part1, 0, 10
add esp, 12
pop ax
lea edi, [part1]
mov word ptr[edi], ax
mov ax, word ptr[temp]
mov word ptr[edi+2], ax
mov al, byte ptr[uName+1]
mov byte ptr[edi+4], al ;finishing constructing 1st part.
call memset, offset uCode, 0, 30
add esp, 12
push offset part3
push offset part2
push offset part1
call wsprintfA, offset uCode, offset format
add esp, 20
call SetDlgItemTextA, hdlg, EDIT_CODE, offset uCode
GenOk: xor eax, eax
RET
@CharsInsufficient:
call SetDlgItemTextA, hdlg, EDIT_CODE, offset insuLen
jmp GenOk
Generate ENDP
;-----------------------------------------------------------------------
Computel PROC
push ebp
mov ebp, esp
push ebx
push edi
push esi
xor eax, eax
xor ebx, ebx
xor edx, edx
mov esi, [ebp+12]
mov edi, [ebp+8]
mov bh, byte ptr[esi]
xor ecx, ecx
goon:
inc esi
mov bl, byte ptr[esi]
inc cl
mov eax, 0A5H
shl eax, cl
xor bl, cl
xor bl, 0A5H
xor al, bl
mov dl, al
and edx, 15
shr al, 4
movzx eax, al
mov al, cctab[eax]
mov ah, cctab[edx]
stosw
dec bh
jnz goon
pop esi
pop edi
pop ebx
pop ebp
RET 8
cctab db "0123456789ABCDEF"
Computel ENDP
;----------------------------------------------------------------------
END Start
(出处:嬴政天下整理收藏)
相关文章:
·ASProtect的加密算法初步分析
·MD5算法研究
·Active Ebook Compiler的注册算法
·语音界面2.0算法分析及注册机源码!
·简单算法——小护士 V1.2
·侠客系统修改器1.21破解手记--算法分析
·中文拨号上网计时计费器 V4.12注册算法分析
·加密算法之RSA算法
·加密算法之DES算法
·加密算法之ElGamal算法
相关软件:
·胜新出纳-支票打印软件 V4.0X 的注册码算法
·胜新现代办公百宝箱 V5.01 的注册码算法
·胜新信函宝典-信封打印软件 V2.02 注册码的算法
·胜新通用企业计划管理系统的注册码算法
·共享软件加密算法库 V3.2
·操作系统内存分配银行家算法模拟系统 XP
→ 特别推荐
→ 热点TOP10
我为人人《《==》》人人为我
关于我们 |
帮助(?)
| 广告服务 |
版权声明 |
商业合作 |
发展历程 |
加盟我们 |
联系我们
Copyright © 1999-2003
winzheng.com All Rights Reserved.
繁体版:由华琦数码技术提供
Powered
by:MeSky.Net
当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。