160个CM之第六题aLoNg3x.1(源码+激活OK按钮注册机)献给所有爱汇编的朋友
这个CM分三步第一步:激活OK按钮
第二步:隐藏cancella按钮
第三步:隐藏OK按钮
分析结果,
根据注册码换算出正确的用户名,用户名需满足三个算法公式。
注册机使用了穷举的方式来计算,如果要算出正确的用户名需要N久的时间
(穷举的排列组合太多,不花上二三天时间估计没办法穷举算出)
所以放弃了,只写了一个激活OK按钮的注册机
以下贴出的原码是激话OK按钮的原码
.386
.model flat, stdcall;32 bit memory model
option casemap :none;case sensitive
include 360个CM之Acid b注册机.inc
.code
_count proc
LOCAL @buffer:byte
LOCAL @buffer1:byte
invoke GetDlgItemText,hmain,IDC_NAME,addr @buffer,256
mov edx,eax
mov ebx,eax
.if eax>5
mov eax,1h
@@:
lea ecx,@buffer
movzx ecx,byte ptr
leaesi,@buffer
movzx esi,byte ptr
imul ecx,esi
imul ecx,eax
add ebx,ecx
inc eax
dec edx
jnz @b
mov namehe,ebx
.while TRUE
.while TRUE
invoke GetDlgItemText,hmain,IDC_COUNT,addr @buffer1,256
xor eax,eax
lea esi,@buffer1
mov bl,
movzx ebx,bl
L004029AA:
sub bl,30h
lea eax,dword ptr
add eax,eax
add eax,ebx
inc esi
mov bl,byte ptr
.break .if !bl
jmp L004029AA
.endw
add eax,29Ah
.break .if eax==namehe
inc dwcount
invoke SetDlgItemInt,hmain,IDC_COUNT,dwcount,TRUE
.endw
invoke SetDlgItemText,hmain,IDC_REG,addr @buffer1
ret
.else
invoke MessageBox,hmain,offset sztishi,offset sztitle,MB_OK
.endif
ret
_count endp
start:
invoke GetModuleHandle,NULL
movhInstance,eax
invoke InitCommonControls
invoke DialogBoxParam,hInstance,IDD_DIALOG1,NULL,addr DlgProc,NULL
invoke ExitProcess,0
;########################################################################
DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
LOCAL @buffer:byte
LOCAL @buffer1:byte
moveax,uMsg
.if eax==WM_INITDIALOG
push hWin
pop hmain
invoke LoadIcon,hInstance,APP_ICON
invoke SendMessage,hWin,WM_SETICON,ICON_BIG,eax
.elseif eax==WM_COMMAND
mov eax,wParam
.if ax==IDC_OK
xor eax,eax
invoke SetDlgItemText,hmain,IDC_REG,eax
invoke CreateThread,0,0,offset _count,NULL,NULL,NULL
invoke CloseHandle,eax
.endif
.elseif eax==WM_CLOSE
invoke EndDialog,hWin,0
.else
moveax,FALSE
ret
.endif
moveax,TRUE
ret
DlgProc endp
end start
我以为是他来了呢,搞错了。。。 看看是什么东西 {:301_995:}这个cm好坑 不懂编程,看不懂
页:
[1]