📄 chap6-3-6.htm.primary
字号:
MOV pbox_num18,12h <br>
loc_401173: <br>
XOR ECX,ECX <br>
MOV pbox_num4,04 <br>
loc_40117D: <br>
XOR EBX,EBX <br>
MOV BL,[EAX+EDX] <br>
SHL ECX,08 <br>
OR ECX,EBX <br>
INC EAX <br>
CMP EAX,len_PWD <br>
JL loc_40118E <br>
XOR EAX,EAX <br>
loc_40118E: <br>
MOV EBX,pbox_num4 <br>
DEC EBX <br>
MOV pbox_num4,EBX <br>
JNZ loc_40117D <br>
MOV EBX,[EDI+ESI] <br>
ADD ESI,4 <br>
XOR EBX,ECX <br>
MOV ECX,pbox_num18 <br>
MOV [ESI-04],EBX <br>
DEC ECX <br>
MOV pbox_num18,ECX <br>
JNZ loc_401173 <br>
<br>
;用连续的blowfish算法填充p盒 <br>
MOV EBX,offset key <br>
XOR EAX,EAX <br>
MOV BFLOW,EAX <br>
MOV BFHIGH,EAX <br>
MOV ESI,EBX <br>
MOV EDI,09 <br>
loc_4011C4: <br>
LEA EAX,BFLOW <br>
LEA ECX,BFHIGH <br>
invoke BlowFish_En,ECX,EAX <br>
MOV EAX,BFHIGH <br>
MOV ECX,BFLOW <br>
MOV [ESI],EAX <br>
MOV [ESI+04],ECX <br>
ADD ESI,8 <br>
DEC EDI <br>
JNZ loc_4011C4 <br>
<br>
;用连续的blowfish算法填充s盒 <br>
LEA ESI,[EBX+4Ch] <br>
MOV snum,04
;4个s盒。 <br>
loc_4011F2: <br>
MOV EDI,80H
;每个盒填充80h=128次(每次填充两个数)。 <br>
loc_4011F7: <br>
LEA ECX,BFLOW <br>
LEA EDX,BFHIGH <br>
invoke BlowFish_En,EDX,ECX <br>
MOV ECX,BFHIGH <br>
MOV EDX,BFLOW <br>
MOV [ESI-04],ECX <br>
MOV [ESI],EDX <br>
ADD ESI,8 <br>
DEC EDI <br>
JNZ loc_4011F7 <br>
DEC snum <br>
JNZ loc_4011F2 <br>
RET <br>
BlowFish_Init endp <br>
<br>
;消息处理函数 <br>
_ProcDlgMain proc uses ebx edi esi edx ecx,hWnd:DWORD,wMsg:DWORD,wParam:DWORD,lParam:DWORD
<br>
mov eax,wMsg <br>
.if eax==WM_CLOSE <br>
invoke EndDialog,hWnd,NULL
<br>
.elseif eax==WM_COMMAND <br>
mov eax,wParam
<br>
and eax,0ffffh
<br>
.if eax==IDGEN
<br>
;如果你直接用ComputerID产生序列号,从这里到mov MYBFLOW,ebx一段应该屏蔽 <br>
invoke GetDlgItemText,hWnd,Edit1,offset
szID,17 <br>
xor ebx,ebx <br>
xor eax,eax <br>
mov esi,offset szID <br>
mov ecx,8 <br>
@@33: <br>
<br>
or ebx,eax <br>
xor eax,eax <br>
lodsb <br>
cmp eax,39h <br>
jle @@3 <br>
sub eax,7 <br>
@@3: <br>
sub eax,30h <br>
<br>
shl ebx,4 <br>
loop @@33 <br>
or ebx,eax <br>
mov MYBFHIGH,ebx <br>
<br>
mov esi,offset szID+8 <br>
mov ecx,8 <br>
xor eax,eax <br>
xor ebx,ebx <br>
@@44: <br>
or ebx,eax <br>
lodsb <br>
cmp eax,39h <br>
jle @@4 <br>
sub eax,7 <br>
@@4: <br>
sub eax,30h <br>
shl ebx,4 <br>
loop @@44 <br>
or ebx,eax <br>
mov MYBFLOW,ebx <br>
;………………………………………………………………………………………………………… <br>
;如果你直接用ComputerID产生序列号,这里后面的所有语句你都应将其激活 <br>
; invoke BlowFish_Init,offset PW_1,23
<br>
; invoke BlowFish_En,offset data1_p,offset
data1_p+4 <br>
; MOV EAX,BFHIGH <br>
; MOV MYBFHIGH,EAX <br>
; MOV EAX,BFLOW <br>
; MOV MYBFLOW,EAX <br>
invoke BlowFish_Init,offset PW_2,18
<br>
invoke BlowFish_En,offset MYBFHIGH,offset
MYBFLOW <br>
MOV EAX,BFHIGH <br>
MOV MYBFHIGH,EAX <br>
MOV EAX,BFLOW <br>
MOV MYBFLOW,EAX <br>
invoke BlowFish_Init,offset PW_3,14
<br>
invoke BlowFish_En,offset MYBFHIGH,offset
MYBFLOW <br>
<br>
mov ebx,BFHIGH <br>
mov eax,ebx <br>
mov edi,offset szText <br>
mov ecx,8 <br>
@@12: <br>
mov eax,ebx <br>
shl ebx,4 <br>
shr eax,28 <br>
cmp eax,9 <br>
jle @@11 <br>
add eax,7 <br>
@@11: add eax,30h <br>
and eax,0ffh <br>
stosb <br>
loop @@12 <br>
<br>
mov ebx,BFLOW <br>
mov eax,ebx <br>
mov edi,offset szText+8 <br>
mov ecx,8 <br>
@@22: <br>
mov eax,ebx <br>
shl ebx,4 <br>
shr eax,28 <br>
cmp eax,9 <br>
jle @@21 <br>
add eax,7 <br>
@@21: add eax,30h <br>
and eax,0ffh <br>
stosb <br>
loop @@22 <br>
<br>
xor eax,eax <br>
mov [edi],eax <br>
invoke SetDlgItemText,hWnd,Edit2,offset
szText <br>
mov eax,FALSE <br>
ret <br>
.elseif eax==IDCLOSE
<br>
invoke EndDialog,hWnd,NULL <br>
.endif <br>
.else <br>
mov eax,FALSE
<br>
ret <br>
.endif <br>
mov eax,TRUE <br>
ret <br>
<br>
_ProcDlgMain endp <br>
<br>
;主程序 <br>
start: <br>
invoke InitCommonControls <br>
invoke GetModuleHandle,NULL <br>
mov hInstance,eax <br>
invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset
_ProcDlgMain,0 <br>
invoke ExitProcess,NULL <br>
end start <br>
<br>
end <br>
<br>
;资源文件:rsrc.rc <br>
;#include <Resource.h> <br>
;#define IDGEN
10 <br>
;#define DLG_MAIN 100 <br>
;#define EDIT1
11 <br>
;#define EDIT2
12 <br>
; <br>
;DLG_MAIN DIALOGEX 100,150,250,60 <br>
;STYLE DS_MODALFRAME|WS_POPUP|WS_VISIBLE|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME
<br>
;CAPTION "BlowFish's CrackMe KenGen By
夜月[CCG] " <br>
;FONT 9,"宋体" <br>
; <br>
;BEGIN <br>
;CONTROL " ID:",-1,"Static",SS_LEFT,10,13,40,17 <br>
;CONTROL "SN:" ,-2,"Static",SS_CENTER,10,40,20,17
<br>
;CONTROL "" ,11,"Edit",ES_LEFT,30,13,150,10
<br>
;CONTROL "" ,12,"Edit",ES_LEFT,30,40,150,10
<br>
;CONTROL "GENERATE",IDGEN,"BUTTON",BS_PUSHBUTTON,200,11,40,15
<br>
;CONTROL "EXIT",IDCLOSE,"BUTTON",BS_PUSHBUTTON,200,36,41,14
<br>
;END </blockquote>
<div align="right"> </div>
<div align="center"><a href="../Catalog.htm"><img src="../image/navtoc.gif" width="84" height="23" border="0"></a><a href="Chap6-3-5.htm"><img src="../image/Navprev.gif" width="80" height="23" border="0"></a><a href="Chap6-4.htm"><img src="../image/navnext.gif" width="83" height="23" border="0"></a>
</div>
<hr width=735>
<div align="center"><span class="p9"><font size="2"><span class="p9"><font size="2"><span class="p9">Copyright
© 2000-2001 <a href="http://www.pediy.com/">KanXue Studio</a> All Rights
Reserved.</span></font></span></font></span></div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -