能力值:
(RANK:410 )
2 楼
;附件KeyGen源码
.586
.model flat, stdcall
option casemap :none
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
_MD5 proto :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD
.const
DLG_MAIN equ 100
DLG_NAME_EDIT equ 1000
DLG_CREATE_KEY_FILE equ 1001
.data
szNameErr db "用户名不能为空!!!",0
lpszFileName db "Key.reg",0
lpszCreateFileErr db "Key文件创建失败!!!",0
lpszCreateFileSucceed db "恭喜你,Key文件创建成功!!!",0
lpszNameLenErr db "用户名长度不能少于5位!!!",0
.data?
hInstance dd ?
.CODE
START:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke DialogBoxParam,hInstance,DLG_MAIN,0,offset DlgProc,0
invoke ExitProcess,0
DlgProc proc hWnd,uMsg,wParam,lParam
LOCAL @szName[255]:Byte
LOCAL @szKey[255]:Byte
LOCAL @dwMd5Count[5]:DWORD
LOCAL hFile:HWND
LOCAL lpNumberOfBytesRead:DWORD
LOCAL nNameLen:DWORD
.if uMsg==WM_INITDIALOG
invoke LoadIcon,hInstance,100
invoke SendMessage,hWnd,WM_SETICON,ICON_SMALL,eax
.elseif uMsg==WM_COMMAND
mov eax,wParam
.if ax==DLG_CREATE_KEY_FILE
invoke RtlZeroMemory,addr @szName,sizeof @szName
invoke RtlZeroMemory,addr @szKey,sizeof @szKey
invoke RtlZeroMemory,addr @dwMd5Count,sizeof @dwMd5Count
invoke GetDlgItemText,hWnd,DLG_NAME_EDIT,addr @szName,sizeof @szName ;获取用户名
.if !eax
invoke MessageBox,hWnd,offset szNameErr,NULL,MB_OK
mov eax,TRUE
ret
.elseif eax <= 5
invoke MessageBox,hWnd,offset lpszNameLenErr,NULL,MB_OK
mov eax,TRUE
ret
.endif
mov nNameLen,eax
pushad
invoke _MD5,addr @szName,nNameLen,nNameLen,addr @szKey,NULL ;加密用户名
popad
invoke CreateFile,addr lpszFileName,\ ;创建Key文件
GENERIC_READ or GENERIC_WRITE,\
FILE_SHARE_READ,\
NULL,
CREATE_ALWAYS,\
FILE_ATTRIBUTE_NORMAL,\
NULL
.if eax == INVALID_HANDLE_VALUE
invoke MessageBox,hWnd,offset lpszCreateFileErr,NULL,MB_OK
mov eax,TRUE
ret
.endif
mov hFile,eax
invoke SetFilePointer,hFile,NULL,NULL,FILE_BEGIN
invoke WriteFile,hFile,addr @szKey,14h,addr lpNumberOfBytesRead,NULL ;写入加密的用户名Md5Key
invoke FlushFileBuffers,hFile
invoke SetFilePointer,hFile,15h,NULL,FILE_BEGIN
invoke WriteFile,hFile,addr @szName,nNameLen,addr lpNumberOfBytesRead,NULL ;写入未加密的用户名
invoke FlushFileBuffers,hFile
invoke CloseHandle,HFILE ;结束
invoke SetDlgItemText,hWnd,DLG_NAME_EDIT,offset lpszCreateFileSucceed
.endif
.elseif uMsg==WM_CLOSE
invoke EndDialog,hWnd,FALSE
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
DlgProc endp
;MD5函数懒的写了,直接在作者的程序中提取出来。
_MD5 proc lpEnStr,lpiLen1,lpiLen2,lpMD5Count,nCount
var_5C = dword ptr -5Ch
var_58 = dword ptr -58h
var_54 = dword ptr -54h
var_50 = dword ptr -50h
var_4C = dword ptr -4Ch
var_48 = dword ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
add esp, 0FFFFFFA4h
push edi
push esi
push ebx
mov eax, [ebp+arg_10]
or eax, eax
jz short loc_4012A3
dec eax
jnz short loc_4012C8
loc_4012A3: ; CODE XREF: sub_401290+Ej
mov edi, [ebp+arg_C]
mov dword ptr [edi], 96385241h
mov dword ptr [edi+4], 0ABECBDAFh
mov dword ptr [edi+8], 95175346h
mov dword ptr [edi+0Ch], 85265413h
mov dword ptr [edi+10h], 97641382h
loc_4012C8: ; CODE XREF: sub_401290+11j
xor eax, eax
mov [ebp+var_4], eax
mov [ebp+var_8], al
loc_4012D0: ; CODE XREF: sub_401290+E48j
mov esi, [ebp+arg_0]
lea edi, [ebp+var_5C]
mov ecx, 10h
mov ebx, [ebp+var_4]
loc_4012DE: ; CODE XREF: sub_401290+5Ej
lea edx, [ebx+4]
cmp edx, [ebp+arg_4]
ja short loc_4012F5
mov eax, [ebx+esi]
bswap eax
stosd
mov ebx, edx
loop loc_4012DE
mov [ebp+var_4], ebx
jmp short loc_40134E
; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
loc_4012F5: ; CODE XREF: sub_401290+54j
mov eax, [ebp+arg_10]
or eax, eax
jz short loc_401305
cmp eax, 3
jnz loc_4020ED
loc_401305: ; CODE XREF: sub_401290+6Aj
mov edx, ecx
cmp ebx, [ebp+arg_4]
ja short loc_401336
sub eax, eax
mov ch, 4
loc_401310: ; CODE XREF: sub_401290+8Ej
cmp ebx, [ebp+arg_4]
jz short loc_401320
shl eax, 8
mov al, [ebx+esi]
inc ebx
dec ch
jmp short loc_401310
; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
loc_401320: ; CODE XREF: sub_401290+83j
inc ebx
mov [ebp+var_4], ebx
shl eax, 8
mov al, 80h
loc_401329: ; CODE XREF: sub_401290+A0j
dec ch
jz short loc_401332
shl eax, 8
jmp short loc_401329
; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
loc_401332: ; CODE XREF: sub_401290+9Bj
stosd
dec ecx
jz short loc_40134E
loc_401336: ; CODE XREF: sub_401290+7Aj
sub eax, eax
rep stosd
cmp dl, 3
jb short loc_40134E
mov al, 8
mul [ebp+arg_8]
mov [ebp+var_24], edx
mov [ebp+var_20], eax
mov [ebp+var_8], 1
loc_40134E: ; CODE XREF: sub_401290+63j
; sub_401290+A4j ...
mov eax, [ebp+arg_C]
mov edx, [eax+10h]
mov [ebp+var_1C], edx
mov edx, [eax+0Ch]
mov [ebp+var_18], edx
mov edx, [eax+8]
mov [ebp+var_14], edx
mov ecx, [eax+4]
mov [ebp+var_10], ecx
mov ecx, [eax]
mov [ebp+var_C], ecx
rol ecx, 5
xor edx, [ebp+var_18]
and edx, [ebp+var_10]
xor edx, [ebp+var_18]
add edx, [ebp+var_5C]
add edx, ecx
add edx, [ebp+var_1C]
add edx, 5A827999h
mov [ebp+var_1C], edx
mov ecx, edx
mov edx, [ebp+var_10]
rol edx, 1Eh
mov [ebp+var_10], edx
rol ecx, 5
xor edx, [ebp+var_14]
and edx, [ebp+var_C]
xor edx, [ebp+var_14]
add edx, [ebp+var_58]
add edx, ecx
add edx, [ebp+var_18]
add edx, 5A827999h
mov [ebp+var_18], edx
mov ecx, edx
mov edx, [ebp+var_C]
rol edx, 1Eh
mov [ebp+var_C], edx
rol ecx, 5
xor edx, [ebp+var_10]
and edx, [ebp+var_1C]
xor edx, [ebp+var_10]
add edx, [ebp+var_54]
add edx, ecx
add edx, [ebp+var_14]
add edx, 5A827999h
mov [ebp+var_14], edx
mov ecx, edx
mov edx, [ebp+var_1C]
rol edx, 1Eh
mov [ebp+var_1C], edx
rol ecx, 5
xor edx, [ebp+var_C]
and edx, [ebp+var_18]
xor edx, [ebp+var_C]
add edx, [ebp+var_50]
add edx, ecx
add edx, [ebp+var_10]
add edx, 5A827999h
mov [ebp+var_10], edx
mov ecx, edx
mov edx, [ebp+var_18]
rol edx, 1Eh
mov [ebp+var_18], edx
rol ecx, 5
xor edx, [ebp+var_1C]
and edx, [ebp+var_14]
xor edx, [ebp+var_1C]
add edx, [ebp+var_4C]
add edx, ecx
add edx, [ebp+var_C]
add edx, 5A827999h
mov [ebp+var_C], edx
mov ecx, edx
mov edx, [ebp+var_14]
rol edx, 1Eh
mov [ebp+var_14], edx
rol ecx, 5
xor edx, [ebp+var_18]
and edx, [ebp+var_10]
xor edx, [ebp+var_18]
add edx, [ebp+var_48]
add edx, ecx
add edx, [ebp+var_1C]
add edx, 5A827999h
mov [ebp+var_1C], edx
mov ecx, edx
mov edx, [ebp+var_10]
rol edx, 1Eh
mov [ebp+var_10], edx
rol ecx, 5
xor edx, [ebp+var_14]
and edx, [ebp+var_C]
xor edx, [ebp+var_14]
add edx, [ebp+var_44]
add edx, ecx
add edx, [ebp+var_18]
add edx, 5A827999h
mov [ebp+var_18], edx
mov ecx, edx
mov edx, [ebp+var_C]
rol edx, 1Eh
mov [ebp+var_C], edx
rol ecx, 5
xor edx, [ebp+var_10]
and edx, [ebp+var_1C]
xor edx, [ebp+var_10]
add edx, [ebp+var_40]
add edx, ecx
add edx, [ebp+var_14]
add edx, 5A827999h
mov [ebp+var_14], edx
mov ecx, edx
mov edx, [ebp+var_1C]
rol edx, 1Eh
mov [ebp+var_1C], edx
rol ecx, 5
xor edx, [ebp+var_C]
and edx, [ebp+var_18]
xor edx, [ebp+var_C]
add edx, [ebp+var_3C]
add edx, ecx
add edx, [ebp+var_10]
add edx, 5A827999h
mov [ebp+var_10], edx
mov ecx, edx
mov edx, [ebp+var_18]
rol edx, 1Eh
mov [ebp+var_18], edx
rol ecx, 5
xor edx, [ebp+var_1C]
and edx, [ebp+var_14]
xor edx, [ebp+var_1C]
add edx, [ebp+var_38]
add edx, ecx
add edx, [ebp+var_C]
add edx, 5A827999h
mov [ebp+var_C], edx
mov ecx, edx
mov edx, [ebp+var_14]
rol edx, 1Eh
mov [ebp+var_14], edx
rol ecx, 5
xor edx, [ebp+var_18]
and edx, [ebp+var_10]
xor edx, [ebp+var_18]
add edx, [ebp+var_34]
add edx, ecx
add edx, [ebp+var_1C]
add edx, 5A827999h
mov [ebp+var_1C], edx
mov ecx, edx
mov edx, [ebp+var_10]
rol edx, 1Eh
mov [ebp+var_10], edx
rol ecx, 5
xor edx, [ebp+var_14]
and edx, [ebp+var_C]
xor edx, [ebp+var_14]
add edx, [ebp+var_30]
add edx, ecx
add edx, [ebp+var_18]
add edx, 5A827999h
mov [ebp+var_18], edx
mov ecx, edx
mov edx, [ebp+var_C]
rol edx, 1Eh
mov [ebp+var_C], edx
rol ecx, 5
xor edx, [ebp+var_10]
and edx, [ebp+var_1C]
xor edx, [ebp+var_10]
add edx, [ebp+var_2C]
add edx, ecx
add edx, [ebp+var_14]
add edx, 5A827999h
mov [ebp+var_14], edx
mov ecx, edx
mov edx, [ebp+var_1C]
rol edx, 1Eh
mov [ebp+var_1C], edx
rol ecx, 5
xor edx, [ebp+var_C]
and edx, [ebp+var_18]
xor edx, [ebp+var_C]
add edx, [ebp+var_28]
add edx, ecx
add edx, [ebp+var_10]
add edx, 5A827999h
mov [ebp+var_10], edx
mov ecx, edx
mov edx, [ebp+var_18]
rol edx, 1Eh
mov [ebp+var_18], edx
rol ecx, 5
xor edx, [ebp+var_1C]
and edx, [ebp+var_14]
xor edx, [ebp+var_1C]
add edx, [ebp+var_24]
add edx, ecx
add edx, [ebp+var_C]
add edx, 5A827999h
mov [ebp+var_C], edx
mov ecx, edx
mov edx, [ebp+var_14]
rol edx, 1Eh
mov [ebp+var_14], edx
rol ecx, 5
xor edx, [ebp+var_18]
and edx, [ebp+var_10]
xor edx, [ebp+var_18]
add edx, [ebp+var_20]
add edx, ecx
add edx, [ebp+var_1C]
add edx, 5A827999h
mov [ebp+var_1C], edx
mov ecx, edx
mov edx, [ebp+var_10]
rol edx, 1Eh
mov [ebp+var_10], edx
xor ebx, ebx
loc_4015F0: ; CODE XREF: sub_401290+399j
add bl, 8
and bl, 3Fh
mov eax, ss:[ebx+ebp+var_5C]
add bl, 18h
and bl, 3Fh
xor eax, ss:[ebx+ebp+var_5C]
add bl, 14h
and bl, 3Fh
xor eax, ss:[ebx+ebp+var_5C]
sub bl, 34h
and bl, 3Fh
xor eax, ss:[ebx+ebp+var_5C]
rol eax, 1
mov ss:[ebx+ebp+var_5C], eax
add bl, 4
test bl, 3Fh
jnz short loc_4015F0
rol ecx, 5
xor edx, [ebp+var_14]
and edx, [ebp+var_C]
xor edx, [ebp+var_14]
add edx, [ebp+var_5C]
add edx, ecx
add edx, [ebp+var_18]
add edx, 5A827999h
mov [ebp+var_18], edx
mov ecx, edx
mov edx, [ebp+var_C]
rol edx, 1Eh
mov [ebp+var_C], edx
rol ecx, 5
xor edx, [ebp+var_10]
and edx, [ebp+var_1C]
xor edx, [ebp+var_10]
add edx, [ebp+var_58]
add edx, ecx
add edx, [ebp+var_14]
add edx, 5A827999h
mov [ebp+var_14], edx
mov ecx, edx
mov edx, [ebp+var_1C]
rol edx, 1Eh
mov [ebp+var_1C], edx
rol ecx, 5
xor edx, [ebp+var_C]
and edx, [ebp+var_18]
xor edx, [ebp+var_C]
add edx, [ebp+var_54]
add edx, ecx
add edx, [ebp+var_10]
add edx, 5A827999h
mov [ebp+var_10], edx
mov ecx, edx
mov edx, [ebp+var_18]
rol edx, 1Eh
mov [ebp+var_18], edx
rol ecx, 5
xor edx, [ebp+var_1C]
and edx, [ebp+var_14]
xor edx, [ebp+var_1C]
add edx, [ebp+var_50]
add edx, ecx
add edx, [ebp+var_C]
add edx, 5A827999h
mov [ebp+var_C], edx
mov ecx, edx
mov edx, [ebp+var_14]
rol edx, 1Eh
mov [ebp+var_14], edx
rol ecx, 5
xor edx, [ebp+var_18]
xor edx, [ebp+var_10]
add edx, [ebp+var_4C]
add edx, ecx
add edx, [ebp+var_1C]
add edx, 6ED9EBA1h
mov [ebp+var_1C], edx
mov ecx, edx
mov edx, [ebp+var_10]
rol edx, 1Eh
mov [ebp+var_10], edx
rol ecx, 5
xor edx, [ebp+var_14]
xor edx, [ebp+var_C]
add edx, [ebp+var_48]
add edx, ecx
add edx, [ebp+var_18]
add edx, 6ED9EBA1h
mov [ebp+var_18], edx
mov ecx, edx
mov edx, [ebp+var_C]
rol edx, 1Eh
mov [ebp+var_C], edx
rol ecx, 5
xor edx, [ebp+var_10]
xor edx, [ebp+var_1C]
add edx, [ebp+var_44]
add edx, ecx
add edx, [ebp+var_14]
add edx, 6ED9EBA1h
mov [ebp+var_14], edx
mov ecx, edx
mov edx, [ebp+var_1C]
rol edx, 1Eh
mov [ebp+var_1C], edx
rol ecx, 5
xor edx, [ebp+var_C]
xor edx, [ebp+var_18]
add edx, [ebp+var_40]
add edx, ecx
add edx, [ebp+var_10]
add edx, 6ED9EBA1h
mov [ebp+var_10], edx
mov ecx, edx
mov edx, [ebp+var_18]
rol edx, 1Eh
mov [ebp+var_18], edx
rol ecx, 5
xor edx, [ebp+var_1C]
xor edx, [ebp+var_14]
add edx, [ebp+var_3C]
add edx, ecx
add edx, [ebp+var_C]
add edx, 6ED9EBA1h
mov [ebp+var_C], edx
mov ecx, edx
mov edx, [ebp+var_14]
rol edx, 1Eh
mov [ebp+var_14], edx
rol ecx, 5
xor edx, [ebp+var_18]
xor edx, [ebp+var_10]
add edx, [ebp+var_38]
add edx, ecx
add edx, [ebp+var_1C]
add edx, 6ED9EBA1h
mov [ebp+var_1C], edx
mov ecx, edx
mov edx, [ebp+var_10]
rol edx, 1Eh
mov [ebp+var_10], edx
rol ecx, 5
xor edx, [ebp+var_14]
xor edx, [ebp+var_C]
add edx, [ebp+var_34]
add edx, ecx
add edx, [ebp+var_18]
add edx, 6ED9EBA1h
mov [ebp+var_18], edx
mov ecx, edx
mov edx, [ebp+var_C]
rol edx, 1Eh
mov [ebp+var_C], edx
rol ecx, 5
xor edx, [ebp+var_10]
xor edx, [ebp+var_1C]
add edx, [ebp+var_30]
add edx, ecx
add edx, [ebp+var_14]
add edx, 6ED9EBA1h
mov [ebp+var_14], edx
mov ecx, edx
mov edx, [ebp+var_1C]
rol edx, 1Eh
mov [ebp+var_1C], edx
rol ecx, 5
xor edx, [ebp+var_C]
xor edx, [ebp+var_18]
add edx, [ebp+var_2C]
add edx, ecx
add edx, [ebp+var_10]
add edx, 6ED9EBA1h
mov [ebp+var_10], edx
mov ecx, edx
mov edx, [ebp+var_18]
rol edx, 1Eh
mov [ebp+var_18], edx
rol ecx, 5
xor edx, [ebp+var_1C]
xor edx, [ebp+var_14]
add edx, [ebp+var_28]
add edx, ecx
add edx, [ebp+var_C]
add edx, 6ED9EBA1h
mov [ebp+var_C], edx
mov ecx, edx
mov edx, [ebp+var_14]
rol edx, 1Eh
mov [ebp+var_14], edx
rol ecx, 5
xor edx, [ebp+var_18]
xor edx, [ebp+var_10]
add edx, [ebp+var_24]
add edx, ecx
add edx, [ebp+var_1C]
add edx, 6ED9EBA1h
mov [ebp+var_1C], edx
mov ecx, edx
mov edx, [ebp+var_10]
rol edx, 1Eh
mov [ebp+var_10], edx
rol ecx, 5
xor edx, [ebp+var_14]
xor edx, [ebp+var_C]
add edx, [ebp+var_20]
add edx, ecx
add edx, [ebp+var_18]
add edx, 6ED9EBA1h
mov [ebp+var_18], edx
mov ecx, edx
mov edx, [ebp+var_C]
rol edx, 1Eh
mov [ebp+var_C], edx
xor ebx, ebx
loc_401889: ; CODE XREF: sub_401290+632j
add bl, 8
and bl, 3Fh
mov eax, ss:[ebx+ebp+var_5C]
add bl, 18h
and bl, 3Fh
xor eax, ss:[ebx+ebp+var_5C]
add bl, 14h
and bl, 3Fh
xor eax, ss:[ebx+ebp+var_5C]
sub bl, 34h
and bl, 3Fh
xor eax, ss:[ebx+ebp+var_5C]
rol eax, 1
mov ss:[ebx+ebp+var_5C], eax
add bl, 4
test bl, 3Fh
jnz short loc_401889
rol ecx, 5
xor edx, [ebp+var_10]
xor edx, [ebp+var_1C]
add edx, [ebp+var_5C]
add edx, ecx
add edx, [ebp+var_14]
add edx, 6ED9EBA1h
mov [ebp+var_14], edx
mov ecx, edx
mov edx, [ebp+var_1C]
rol edx, 1Eh
mov [ebp+var_1C], edx
rol ecx, 5
xor edx, [ebp+var_C]
xor edx, [ebp+var_18]
add edx, [ebp+var_58]
add edx, ecx
add edx, [ebp+var_10]
add edx, 6ED9EBA1h
mov [ebp+var_10], edx
mov ecx, edx
mov edx, [ebp+var_18]
rol edx, 1Eh
mov [ebp+var_18], edx
rol ecx, 5
xor edx, [ebp+var_1C]
xor edx, [ebp+var_14]
add edx, [ebp+var_54]
add edx, ecx
add edx, [ebp+var_C]
add edx, 6ED9EBA1h
mov [ebp+var_C], edx
mov ecx, edx
mov edx, [ebp+var_14]
rol edx, 1Eh
mov [ebp+var_14], edx
rol ecx, 5
xor edx, [ebp+var_18]
xor edx, [ebp+var_10]
add edx, [ebp+var_50]
add edx, ecx
add edx, [ebp+var_1C]
add edx, 6ED9EBA1h
mov [ebp+var_1C], edx
mov ecx, edx
mov edx, [ebp+var_10]
rol edx, 1Eh
mov [ebp+var_10], edx
rol ecx, 5
xor edx, [ebp+var_14]
xor edx, [ebp+var_C]
add edx, [ebp+var_4C]
add edx, ecx
add edx, [ebp+var_18]
add edx, 6ED9EBA1h
mov [ebp+var_18], edx
mov ecx, edx
mov edx, [ebp+var_C]
rol edx, 1Eh
mov [ebp+var_C], edx
rol ecx, 5
xor edx, [ebp+var_10]
xor edx, [ebp+var_1C]
add edx, [ebp+var_48]
add edx, ecx
add edx, [ebp+var_14]
add edx, 6ED9EBA1h
mov [ebp+var_14], edx
mov ecx, edx
mov edx, [ebp+var_1C]
rol edx, 1Eh
mov [ebp+var_1C], edx
rol ecx, 5
xor edx, [ebp+var_C]
xor edx, [ebp+var_18]
add edx, [ebp+var_44]
add edx, ecx
add edx, [ebp+var_10]
add edx, 6ED9EBA1h
mov [ebp+var_10], edx
mov ecx, edx
mov edx, [ebp+var_18]
rol edx, 1Eh
mov [ebp+var_18], edx
rol ecx, 5
xor edx, [ebp+var_1C]
xor edx, [ebp+var_14]
add edx, [ebp+var_40]
add edx, ecx
add edx, [ebp+var_C]
add edx, 6ED9EBA1h
mov [ebp+var_C], edx
mov ecx, edx
mov edx, [ebp+var_14]
rol edx, 1Eh
mov [ebp+var_14], edx
rol ecx, 5
mov eax, [ebp+var_10]
or edx, eax
and edx, [ebp+var_18]
and eax, [ebp+var_14]
or edx, eax
add edx, [ebp+var_3C]
add edx, ecx
add edx, [ebp+var_1C]
add edx, 8F1BBCDCh
mov [ebp+var_1C], edx
mov ecx, edx
mov edx, [ebp+var_10]
rol edx, 1Eh
mov [ebp+var_10], edx
rol ecx, 5
mov eax, [ebp+var_C]
or edx, eax
and edx, [ebp+var_14]
and eax, [ebp+var_10]
or edx, eax
add edx, [ebp+var_38]
add edx, ecx
add edx, [ebp+var_18]
add edx, 8F1BBCDCh
mov [ebp+var_18], edx
mov ecx, edx
mov edx, [ebp+var_C]
rol edx, 1Eh
mov [ebp+var_C], edx
rol ecx, 5
mov eax, [ebp+var_1C]
or edx, eax
and edx, [ebp+var_10]
and eax, [ebp+var_C]
or edx, eax
add edx, [ebp+var_34]
add edx, ecx
add edx, [ebp+var_14]
add edx, 8F1BBCDCh
mov [ebp+var_14], edx
mov ecx, edx
mov edx, [ebp+var_1C]
rol edx, 1Eh
mov [ebp+var_1C], edx
rol ecx, 5
mov eax, [ebp+var_18]
or edx, eax
and edx, [ebp+var_C]
and eax, [ebp+var_1C]
or edx, eax
add edx, [ebp+var_30]
add edx, ecx
add edx, [ebp+var_10]
add edx, 8F1BBCDCh
mov [ebp+var_10], edx
mov ecx, edx
mov edx, [ebp+var_18]
rol edx, 1Eh
mov [ebp+var_18], edx
rol ecx, 5
mov eax, [ebp+var_14]
or edx, eax
and edx, [ebp+var_1C]
and eax, [ebp+var_18]
or edx, eax
add edx, [ebp+var_2C]
add edx, ecx
add edx, [ebp+var_C]
add edx, 8F1BBCDCh
mov [ebp+var_C], edx
mov ecx, edx
mov edx, [ebp+var_14]
rol edx, 1Eh
mov [ebp+var_14], edx
rol ecx, 5
mov eax, [ebp+var_10]
or edx, eax
and edx, [ebp+var_18]
and eax, [ebp+var_14]
or edx, eax
add edx, [ebp+var_28]
add edx, ecx
add edx, [ebp+var_1C]
add edx, 8F1BBCDCh
mov [ebp+var_1C], edx
mov ecx, edx
mov edx, [ebp+var_10]
rol edx, 1Eh
mov [ebp+var_10], edx
rol ecx, 5
mov eax, [ebp+var_C]
or edx, eax
and edx, [ebp+var_14]
and eax, [ebp+var_10]
or edx, eax
add edx, [ebp+var_24]
add edx, ecx
add edx, [ebp+var_18]
add edx, 8F1BBCDCh
mov [ebp+var_18], edx
mov ecx, edx
mov edx, [ebp+var_C]
rol edx, 1Eh
mov [ebp+var_C], edx
rol ecx, 5
mov eax, [ebp+var_1C]
or edx, eax
and edx, [ebp+var_10]
and eax, [ebp+var_C]
or edx, eax
add edx, [ebp+var_20]
add edx, ecx
add edx, [ebp+var_14]
add edx, 8F1BBCDCh
mov [ebp+var_14], edx
mov ecx, edx
mov edx, [ebp+var_1C]
rol edx, 1Eh
mov [ebp+var_1C], edx
xor ebx, ebx
loc_401B4E: ; CODE XREF: sub_401290+8F7j
add bl, 8
and bl, 3Fh
mov eax, ss:[ebx+ebp+var_5C]
add bl, 18h
and bl, 3Fh
xor eax, ss:[ebx+ebp+var_5C]
add bl, 14h
and bl, 3Fh
xor eax, ss:[ebx+ebp+var_5C]
sub bl, 34h
and bl, 3Fh
xor eax, ss:[ebx+ebp+var_5C]
rol eax, 1
mov ss:[ebx+ebp+var_5C], eax
add bl, 4
test bl, 3Fh
jnz short loc_401B4E
rol ecx, 5
mov eax, [ebp+var_18]
or edx, eax
and edx, [ebp+var_C]
and eax, [ebp+var_1C]
or edx, eax
add edx, [ebp+var_5C]
add edx, ecx
add edx, [ebp+var_10]
add edx, 8F1BBCDCh
mov [ebp+var_10], edx
mov ecx, edx
mov edx, [ebp+var_18]
rol edx, 1Eh
mov [ebp+var_18], edx
rol ecx, 5
mov eax, [ebp+var_14]
or edx, eax
and edx, [ebp+var_1C]
and eax, [ebp+var_18]
or edx, eax
add edx, [ebp+var_58]
add edx, ecx
add edx, [ebp+var_C]
add edx, 8F1BBCDCh
mov [ebp+var_C], edx
mov ecx, edx
mov edx, [ebp+var_14]
rol edx, 1Eh
mov [ebp+var_14], edx
rol ecx, 5
mov eax, [ebp+var_10]
or edx, eax
and edx, [ebp+var_18]
and eax, [ebp+var_14]
or edx, eax
add edx, [ebp+var_54]
add edx, ecx
add edx, [ebp+var_1C]
add edx, 8F1BBCDCh
mov [ebp+var_1C], edx
mov ecx, edx
mov edx, [ebp+var_10]
rol edx, 1Eh
mov [ebp+var_10], edx
rol ecx, 5
mov eax, [ebp+var_C]
or edx, eax
and edx, [ebp+var_14]
and eax, [ebp+var_10]
or edx, eax
add edx, [ebp+var_50]
add edx, ecx
add edx, [ebp+var_18]
add edx, 8F1BBCDCh
mov [ebp+var_18], edx
mov ecx, edx
mov edx, [ebp+var_C]
rol edx, 1Eh
mov [ebp+var_C], edx
rol ecx, 5
mov eax, [ebp+var_1C]
or edx, eax
and edx, [ebp+var_10]
and eax, [ebp+var_C]
or edx, eax
add edx, [ebp+var_4C]
add edx, ecx
add edx, [ebp+var_14]
add edx, 8F1BBCDCh
mov [ebp+var_14], edx
mov ecx, edx
mov edx, [ebp+var_1C]
rol edx, 1Eh
mov [ebp+var_1C], edx
rol ecx, 5
mov eax, [ebp+var_18]
or edx, eax
and edx, [ebp+var_C]
and eax, [ebp+var_1C]
or edx, eax
add edx, [ebp+var_48]
add edx, ecx
add edx, [ebp+var_10]
add edx, 8F1BBCDCh
mov [ebp+var_10], edx
mov ecx, edx
mov edx, [ebp+var_18]
rol edx, 1Eh
mov [ebp+var_18], edx
rol ecx, 5
mov eax, [ebp+var_14]
or edx, eax
and edx, [ebp+var_1C]
and eax, [ebp+var_18]
or edx, eax
add edx, [ebp+var_44]
add edx, ecx
add edx, [ebp+var_C]
add edx, 8F1BBCDCh
mov [ebp+var_C], edx
mov ecx, edx
mov edx, [ebp+var_14]
rol edx, 1Eh
mov [ebp+var_14], edx
rol ecx, 5
mov eax, [ebp+var_10]
or edx, eax
and edx, [ebp+var_18]
and eax, [ebp+var_14]
or edx, eax
add edx, [ebp+var_40]
add edx, ecx
add edx, [ebp+var_1C]
add edx, 8F1BBCDCh
mov [ebp+var_1C], edx
mov ecx, edx
mov edx, [ebp+var_10]
rol edx, 1Eh
mov [ebp+var_10], edx
rol ecx, 5
mov eax, [ebp+var_C]
or edx, eax
and edx, [ebp+var_14]
and eax, [ebp+var_10]
or edx, eax
add edx, [ebp+var_3C]
add edx, ecx
add edx, [ebp+var_18]
add edx, 8F1BBCDCh
mov [ebp+var_18], edx
mov ecx, edx
mov edx, [ebp+var_C]
rol edx, 1Eh
mov [ebp+var_C], edx
rol ecx, 5
mov eax, [ebp+var_1C]
or edx, eax
and edx, [ebp+var_10]
and eax, [ebp+var_C]
or edx, eax
add edx, [ebp+var_38]
add edx, ecx
add edx, [ebp+var_14]
add edx, 8F1BBCDCh
mov [ebp+var_14], edx
mov ecx, edx
mov edx, [ebp+var_1C]
rol edx, 1Eh
mov [ebp+var_1C], edx
rol ecx, 5
mov eax, [ebp+var_18]
or edx, eax
and edx, [ebp+var_C]
and eax, [ebp+var_1C]
or edx, eax
add edx, [ebp+var_34]
add edx, ecx
add edx, [ebp+var_10]
add edx, 8F1BBCDCh
mov [ebp+var_10], edx
mov ecx, edx
mov edx, [ebp+var_18]
rol edx, 1Eh
mov [ebp+var_18], edx
rol ecx, 5
mov eax, [ebp+var_14]
or edx, eax
and edx, [ebp+var_1C]
and eax, [ebp+var_18]
or edx, eax
add edx, [ebp+var_30]
add edx, ecx
add edx, [ebp+var_C]
add edx, 8F1BBCDCh
mov [ebp+var_C], edx
mov ecx, edx
mov edx, [ebp+var_14]
rol edx, 1Eh
mov [ebp+var_14], edx
rol ecx, 5
xor edx, [ebp+var_18]
xor edx, [ebp+var_10]
add edx, [ebp+var_2C]
add edx, ecx
add edx, [ebp+var_1C]
add edx, 0CA62C1D6h
mov [ebp+var_1C], edx
mov ecx, edx
mov edx, [ebp+var_10]
rol edx, 1Eh
mov [ebp+var_10], edx
rol ecx, 5
xor edx, [ebp+var_14]
xor edx, [ebp+var_C]
add edx, [ebp+var_28]
add edx, ecx
add edx, [ebp+var_18]
add edx, 0CA62C1D6h
mov [ebp+var_18], edx
mov ecx, edx
mov edx, [ebp+var_C]
rol edx, 1Eh
mov [ebp+var_C], edx
rol ecx, 5
xor edx, [ebp+var_10]
xor edx, [ebp+var_1C]
add edx, [ebp+var_24]
add edx, ecx
add edx, [ebp+var_14]
add edx, 0CA62C1D6h
mov [ebp+var_14], edx
mov ecx, edx
mov edx, [ebp+var_1C]
rol edx, 1Eh
mov [ebp+var_1C], edx
rol ecx, 5
xor edx, [ebp+var_C]
xor edx, [ebp+var_18]
add edx, [ebp+var_20]
add edx, ecx
add edx, [ebp+var_10]
add edx, 0CA62C1D6h
mov [ebp+var_10], edx
mov ecx, edx
mov edx, [ebp+var_18]
rol edx, 1Eh
mov [ebp+var_18], edx
xor ebx, ebx
loc_401E2F: ; CODE XREF: sub_401290+BD8j
add bl, 8
and bl, 3Fh
mov eax, ss:[ebx+ebp+var_5C]
add bl, 18h
and bl, 3Fh
xor eax, ss:[ebx+ebp+var_5C]
add bl, 14h
and bl, 3Fh
xor eax, ss:[ebx+ebp+var_5C]
sub bl, 34h
and bl, 3Fh
xor eax, ss:[ebx+ebp+var_5C]
rol eax, 1
mov ss:[ebx+ebp+var_5C], eax
add bl, 4
test bl, 3Fh
jnz short loc_401E2F
rol ecx, 5
xor edx, [ebp+var_1C]
xor edx, [ebp+var_14]
add edx, [ebp+var_5C]
add edx, ecx
add edx, [ebp+var_C]
add edx, 0CA62C1D6h
mov [ebp+var_C], edx
mov ecx, edx
mov edx, [ebp+var_14]
rol edx, 1Eh
mov [ebp+var_14], edx
rol ecx, 5
xor edx, [ebp+var_18]
xor edx, [ebp+var_10]
add edx, [ebp+var_58]
add edx, ecx
add edx, [ebp+var_1C]
add edx, 0CA62C1D6h
mov [ebp+var_1C], edx
mov ecx, edx
mov edx, [ebp+var_10]
rol edx, 1Eh
mov [ebp+var_10], edx
rol ecx, 5
xor edx, [ebp+var_14]
xor edx, [ebp+var_C]
add edx, [ebp+var_54]
add edx, ecx
add edx, [ebp+var_18]
add edx, 0CA62C1D6h
mov [ebp+var_18], edx
mov ecx, edx
mov edx, [ebp+var_C]
rol edx, 1Eh
mov [ebp+var_C], edx
rol ecx, 5
xor edx, [ebp+var_10]
xor edx, [ebp+var_1C]
add edx, [ebp+var_50]
add edx, ecx
add edx, [ebp+var_14]
add edx, 0CA62C1D6h
mov [ebp+var_14], edx
mov ecx, edx
mov edx, [ebp+var_1C]
rol edx, 1Eh
mov [ebp+var_1C], edx
rol ecx, 5
xor edx, [ebp+var_C]
xor edx, [ebp+var_18]
add edx, [ebp+var_4C]
add edx, ecx
add edx, [ebp+var_10]
add edx, 0CA62C1D6h
mov [ebp+var_10], edx
mov ecx, edx
mov edx, [ebp+var_18]
rol edx, 1Eh
mov [ebp+var_18], edx
rol ecx, 5
xor edx, [ebp+var_1C]
xor edx, [ebp+var_14]
add edx, [ebp+var_48]
add edx, ecx
add edx, [ebp+var_C]
add edx, 0CA62C1D6h
mov [ebp+var_C], edx
mov ecx, edx
mov edx, [ebp+var_14]
rol edx, 1Eh
mov [ebp+var_14], edx
rol ecx, 5
xor edx, [ebp+var_18]
xor edx, [ebp+var_10]
add edx, [ebp+var_44]
add edx, ecx
add edx, [ebp+var_1C]
add edx, 0CA62C1D6h
mov [ebp+var_1C], edx
mov ecx, edx
mov edx, [ebp+var_10]
rol edx, 1Eh
mov [ebp+var_10], edx
rol ecx, 5
xor edx, [ebp+var_14]
xor edx, [ebp+var_C]
add edx, [ebp+var_40]
add edx, ecx
add edx, [ebp+var_18]
add edx, 0CA62C1D6h
mov [ebp+var_18], edx
mov ecx, edx
mov edx, [ebp+var_C]
rol edx, 1Eh
mov [ebp+var_C], edx
rol ecx, 5
xor edx, [ebp+var_10]
xor edx, [ebp+var_1C]
add edx, [ebp+var_3C]
add edx, ecx
add edx, [ebp+var_14]
add edx, 0CA62C1D6h
mov [ebp+var_14], edx
mov ecx, edx
mov edx, [ebp+var_1C]
rol edx, 1Eh
mov [ebp+var_1C], edx
rol ecx, 5
xor edx, [ebp+var_C]
xor edx, [ebp+var_18]
add edx, [ebp+var_38]
add edx, ecx
add edx, [ebp+var_10]
add edx, 0CA62C1D6h
mov [ebp+var_10], edx
mov ecx, edx
mov edx, [ebp+var_18]
rol edx, 1Eh
mov [ebp+var_18], edx
rol ecx, 5
xor edx, [ebp+var_1C]
xor edx, [ebp+var_14]
add edx, [ebp+var_34]
add edx, ecx
add edx, [ebp+var_C]
add edx, 0CA62C1D6h
mov [ebp+var_C], edx
mov ecx, edx
mov edx, [ebp+var_14]
rol edx, 1Eh
mov [ebp+var_14], edx
rol ecx, 5
xor edx, [ebp+var_18]
xor edx, [ebp+var_10]
add edx, [ebp+var_30]
add edx, ecx
add edx, [ebp+var_1C]
add edx, 0CA62C1D6h
mov [ebp+var_1C], edx
mov ecx, edx
mov edx, [ebp+var_10]
rol edx, 1Eh
mov [ebp+var_10], edx
rol ecx, 5
xor edx, [ebp+var_14]
xor edx, [ebp+var_C]
add edx, [ebp+var_2C]
add edx, ecx
add edx, [ebp+var_18]
add edx, 0CA62C1D6h
mov [ebp+var_18], edx
mov ecx, edx
mov edx, [ebp+var_C]
rol edx, 1Eh
mov [ebp+var_C], edx
rol ecx, 5
xor edx, [ebp+var_10]
xor edx, [ebp+var_1C]
add edx, [ebp+var_28]
add edx, ecx
add edx, [ebp+var_14]
add edx, 0CA62C1D6h
mov [ebp+var_14], edx
mov ecx, edx
mov edx, [ebp+var_1C]
rol edx, 1Eh
mov [ebp+var_1C], edx
rol ecx, 5
xor edx, [ebp+var_C]
xor edx, [ebp+var_18]
add edx, [ebp+var_24]
add edx, ecx
add edx, [ebp+var_10]
add edx, 0CA62C1D6h
mov [ebp+var_10], edx
mov ecx, edx
mov edx, [ebp+var_18]
rol edx, 1Eh
mov [ebp+var_18], edx
rol ecx, 5
xor edx, [ebp+var_1C]
xor edx, [ebp+var_14]
add edx, [ebp+var_20]
add edx, ecx
add edx, [ebp+var_C]
add edx, 0CA62C1D6h
mov [ebp+var_C], edx
mov ecx, edx
mov edx, [ebp+var_14]
rol edx, 1Eh
mov [ebp+var_14], edx
mov eax, [ebp+arg_C]
add [eax], ecx
mov ecx, [ebp+var_10]
add [eax+4], ecx
add [eax+8], edx
mov edx, [ebp+var_18]
add [eax+0Ch], edx
mov edx, [ebp+var_1C]
add [eax+10h], edx
cmp [ebp+var_8], 0
jz loc_4012D0
mov edi, [ebp+arg_C]
mov ecx, 5
loc_4020E6: ; CODE XREF: sub_401290+E5Bj
mov eax, [edi]
bswap eax
stosd
loop loc_4020E6
loc_4020ED: ; CODE XREF: sub_401290+6Fj
pop ebx
pop esi
pop edi
ret
_MD5 endp
end START
上传的附件:
能力值:
( LV12,RANK:740 )
7 楼
peid=>KANAL=>
"SHA1 [Compress] :: 000011AC :: 00401DAC"
参考(照抄)了狂编的SHA1算法示例
712K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3q4G2k6$3!0K6L8$3k6@1i4K6u0W2j5$3!0E0i4K6u0r3k6r3!0%4L8Y4m8S2k6$3g2Q4x3X3g2S2M7%4m8Q4x3@1k6E0L8$3c8W2i4K6y4p5k6r3!0%4L8Y4y4G2N6i4u0U0k6g2)9J5y4X3W2V1i4K6y4p5x3e0t1H3
我也贴个源码
.586
.Model Flat, StdCall
Option Casemap :None
include windows.inc
include user32.inc
include kernel32.inc
include gdi32.inc
include comdlg32.inc
includelib user32.lib
includelib kernel32.lib
includelib gdi32.lib
includelib comdlg32.lib
include rsrc.inc
.data
WindowsName db "KeyGen for HappyTown crackme_0011 by aal",0
MainClassName db "KeyGenT",0
dlgtxt db "错误!",0
szShortName db "用户名太短(〉=4)",0
szKeyFileName db "Key.reg",0
szKeyFileDone db "注册文件生成!",0
txtSize dd 0
DecDat dd 8 dup(0)
username db 256 dup(0)
sb dd 0
.data?
hInstance dd ?
SHA1XOR4 macro
xor ebx,ebx
@@: add bl,8
and bl,3Fh
mov eax,@fx[ebx] ;off=2*4
add bl,18h
and bl,3Fh
xor eax,@fx[ebx] ;off=8*4
add bl,14h
and bl,3Fh
xor eax,@fx[ebx] ;off=13*4
sub bl,34h
and bl,3Fh
xor eax,@fx[ebx] ;off=0
rol eax,1
mov @fx[ebx],eax
add bl,4
test bl,3Fh
jnz @B
endm
;----------
SHA1FUNC1 macro p1,p2,p3,p4
rol ecx,5
xor edx,p1
and edx,p2
xor edx,p1
add edx,p3
add edx,ecx
add edx,p4
add edx,5A827999h ;2^30*sqr(2)
mov p4,edx
mov ecx,edx
mov edx,p2
rol edx,1Eh
mov p2,edx
endm
;----------
SHA1FUNC2 macro p1,p2,p3,p4
rol ecx,5
xor edx,p1
xor edx,p2
add edx,p3
add edx,ecx
add edx,p4
add edx,6ED9EBA1h ;2^30*sqr(3)
mov p4,edx
mov ecx,edx
mov edx,p2
rol edx,1Eh
mov p2,edx
endm
;----------
SHA1FUNC3 macro p1,p2,p3,p4,p5
rol ecx,5
mov eax,p2
or edx,eax
and edx,p1
and eax,p3
or edx,eax
add edx,p4
add edx,ecx
add edx,p5
add edx,8F1BBCDCh ;2^30*sqr(5)
mov p5,edx
mov ecx,edx
mov edx,p2
rol edx,1Eh
mov p2,edx
endm
;----------
SHA1FUNC4 macro p1,p2,p3,p4
rol ecx,5
xor edx,p1
xor edx,p2
add edx,p3
add edx,ecx
add edx,p4
add edx,0CA62C1D6h ;2^30*sqr(10)
mov p4,edx
mov ecx,edx
mov edx,p2
rol edx,1Eh
mov p2,edx
endm
;----------------
.code
SHA1_EnCode proc uses ebx esi edi pSrc,nSize,nTotal,pDest,nSlice
local @pRead,@End[4]:byte
local @fy[5]
local @fx[10h]
mov eax,nSlice
or eax,eax ;一次性提交?
jz setBeg
dec eax ;数据开始段?
jnz SkipBeg
setBeg: mov edi,pDest
mov dword ptr [edi],96385241h
mov dword ptr [edi+4],0ABECBDAFh
mov dword ptr [edi+8],95175346h
mov dword ptr [edi+12],85265413h
mov dword ptr [edi+16],97641382h
SkipBeg: xor eax,eax
mov @pRead,eax
mov @End,al
LoopBlk: mov esi,pSrc
lea edi,@fx
mov ecx,10h ;每次提取64字节,因此当文件未结束时,nSize必须以64字节(40h)对齐
mov ebx,@pRead
@@: lea edx,[ebx+4]
cmp edx,nSize
ja @F
mov eax,[esi+ebx]
bswap eax
stosd
mov ebx,edx
loop @B
mov @pRead,ebx
jmp Enc1
@@: mov eax,nSlice
or eax,eax ;一次性提交?
jz setEnd
cmp eax,3 ;数据结束段?
jnz Result
setEnd: mov edx,ecx
cmp ebx,nSize
ja Tail0
sub eax,eax
mov ch,4
@@: cmp ebx,nSize
jz @F
shl eax,8
mov al,[esi+ebx]
inc ebx
dec ch
jmp @B
@@: inc ebx
mov @pRead,ebx
shl eax,8
mov al,80h
@@: dec ch
jz @F
shl eax,8
jmp @B
@@: stosd
dec ecx
jz Enc1
Tail0: sub eax,eax
rep stosd
cmp dl,3
jb Enc1
mov al,8
mul nTotal
mov dword ptr @fx[38h],edx
mov dword ptr @fx[3Ch],eax
mov @End,1
;----------
Enc1: mov eax,pDest
mov edx,[eax+10h]
mov @fy[00h],edx
mov edx,[eax+0Ch]
mov @fy[04h],edx
mov edx,[eax+08h]
mov @fy[08h],edx
mov ecx,[eax+04h]
mov @fy[0Ch],ecx
mov ecx,[eax]
mov @fy[10h],ecx
;----------
SHA1FUNC1 @fy[04h],@fy[0Ch],@fx[00h],@fy[00h]
SHA1FUNC1 @fy[08h],@fy[10h],@fx[04h],@fy[04h]
SHA1FUNC1 @fy[0Ch],@fy[00h],@fx[08h],@fy[08h]
SHA1FUNC1 @fy[10h],@fy[04h],@fx[0Ch],@fy[0Ch]
SHA1FUNC1 @fy[00h],@fy[08h],@fx[10h],@fy[10h]
SHA1FUNC1 @fy[04h],@fy[0Ch],@fx[14h],@fy[00h]
SHA1FUNC1 @fy[08h],@fy[10h],@fx[18h],@fy[04h]
SHA1FUNC1 @fy[0Ch],@fy[00h],@fx[1Ch],@fy[08h]
SHA1FUNC1 @fy[10h],@fy[04h],@fx[20h],@fy[0Ch]
SHA1FUNC1 @fy[00h],@fy[08h],@fx[24h],@fy[10h]
SHA1FUNC1 @fy[04h],@fy[0Ch],@fx[28h],@fy[00h]
SHA1FUNC1 @fy[08h],@fy[10h],@fx[2Ch],@fy[04h]
SHA1FUNC1 @fy[0Ch],@fy[00h],@fx[30h],@fy[08h]
SHA1FUNC1 @fy[10h],@fy[04h],@fx[34h],@fy[0Ch]
SHA1FUNC1 @fy[00h],@fy[08h],@fx[38h],@fy[10h]
SHA1FUNC1 @fy[04h],@fy[0Ch],@fx[3Ch],@fy[00h]
SHA1XOR4
SHA1FUNC1 @fy[08h],@fy[10h],@fx[00h],@fy[04h]
SHA1FUNC1 @fy[0Ch],@fy[00h],@fx[04h],@fy[08h]
SHA1FUNC1 @fy[10h],@fy[04h],@fx[08h],@fy[0Ch]
SHA1FUNC1 @fy[00h],@fy[08h],@fx[0Ch],@fy[10h]
;----------
SHA1FUNC2 @fy[04h],@fy[0Ch],@fx[10h],@fy[00h]
SHA1FUNC2 @fy[08h],@fy[10h],@fx[14h],@fy[04h]
SHA1FUNC2 @fy[0Ch],@fy[00h],@fx[18h],@fy[08h]
SHA1FUNC2 @fy[10h],@fy[04h],@fx[1Ch],@fy[0Ch]
SHA1FUNC2 @fy[00h],@fy[08h],@fx[20h],@fy[10h]
SHA1FUNC2 @fy[04h],@fy[0Ch],@fx[24h],@fy[00h]
SHA1FUNC2 @fy[08h],@fy[10h],@fx[28h],@fy[04h]
SHA1FUNC2 @fy[0Ch],@fy[00h],@fx[2Ch],@fy[08h]
SHA1FUNC2 @fy[10h],@fy[04h],@fx[30h],@fy[0Ch]
SHA1FUNC2 @fy[00h],@fy[08h],@fx[34h],@fy[10h]
SHA1FUNC2 @fy[04h],@fy[0Ch],@fx[38h],@fy[00h]
SHA1FUNC2 @fy[08h],@fy[10h],@fx[3Ch],@fy[04h]
SHA1XOR4
SHA1FUNC2 @fy[0Ch],@fy[00h],@fx[00h],@fy[08h]
SHA1FUNC2 @fy[10h],@fy[04h],@fx[04h],@fy[0Ch]
SHA1FUNC2 @fy[00h],@fy[08h],@fx[08h],@fy[10h]
SHA1FUNC2 @fy[04h],@fy[0Ch],@fx[0Ch],@fy[00h]
SHA1FUNC2 @fy[08h],@fy[10h],@fx[10h],@fy[04h]
SHA1FUNC2 @fy[0Ch],@fy[00h],@fx[14h],@fy[08h]
SHA1FUNC2 @fy[10h],@fy[04h],@fx[18h],@fy[0Ch]
SHA1FUNC2 @fy[00h],@fy[08h],@fx[1Ch],@fy[10h]
;----------
SHA1FUNC3 @fy[04h],@fy[0Ch],@fy[08h],@fx[20h],@fy[00h]
SHA1FUNC3 @fy[08h],@fy[10h],@fy[0Ch],@fx[24h],@fy[04h]
SHA1FUNC3 @fy[0Ch],@fy[00h],@fy[10h],@fx[28h],@fy[08h]
SHA1FUNC3 @fy[10h],@fy[04h],@fy[00h],@fx[2Ch],@fy[0Ch]
SHA1FUNC3 @fy[00h],@fy[08h],@fy[04h],@fx[30h],@fy[10h]
SHA1FUNC3 @fy[04h],@fy[0Ch],@fy[08h],@fx[34h],@fy[00h]
SHA1FUNC3 @fy[08h],@fy[10h],@fy[0Ch],@fx[38h],@fy[04h]
SHA1FUNC3 @fy[0Ch],@fy[00h],@fy[10h],@fx[3Ch],@fy[08h]
SHA1XOR4
SHA1FUNC3 @fy[10h],@fy[04h],@fy[00h],@fx[00h],@fy[0Ch]
SHA1FUNC3 @fy[00h],@fy[08h],@fy[04h],@fx[04h],@fy[10h]
SHA1FUNC3 @fy[04h],@fy[0Ch],@fy[08h],@fx[08h],@fy[00h]
SHA1FUNC3 @fy[08h],@fy[10h],@fy[0Ch],@fx[0Ch],@fy[04h]
SHA1FUNC3 @fy[0Ch],@fy[00h],@fy[10h],@fx[10h],@fy[08h]
SHA1FUNC3 @fy[10h],@fy[04h],@fy[00h],@fx[14h],@fy[0Ch]
SHA1FUNC3 @fy[00h],@fy[08h],@fy[04h],@fx[18h],@fy[10h]
SHA1FUNC3 @fy[04h],@fy[0Ch],@fy[08h],@fx[1Ch],@fy[00h]
SHA1FUNC3 @fy[08h],@fy[10h],@fy[0Ch],@fx[20h],@fy[04h]
SHA1FUNC3 @fy[0Ch],@fy[00h],@fy[10h],@fx[24h],@fy[08h]
SHA1FUNC3 @fy[10h],@fy[04h],@fy[00h],@fx[28h],@fy[0Ch]
SHA1FUNC3 @fy[00h],@fy[08h],@fy[04h],@fx[2Ch],@fy[10h]
SHA1FUNC4 @fy[04h],@fy[0Ch],@fx[30h],@fy[00h]
SHA1FUNC4 @fy[08h],@fy[10h],@fx[34h],@fy[04h]
SHA1FUNC4 @fy[0Ch],@fy[00h],@fx[38h],@fy[08h]
SHA1FUNC4 @fy[10h],@fy[04h],@fx[3Ch],@fy[0Ch]
SHA1XOR4
SHA1FUNC4 @fy[00h],@fy[08h],@fx[00h],@fy[10h]
SHA1FUNC4 @fy[04h],@fy[0Ch],@fx[04h],@fy[00h]
SHA1FUNC4 @fy[08h],@fy[10h],@fx[08h],@fy[04h]
SHA1FUNC4 @fy[0Ch],@fy[00h],@fx[0Ch],@fy[08h]
SHA1FUNC4 @fy[10h],@fy[04h],@fx[10h],@fy[0Ch]
SHA1FUNC4 @fy[00h],@fy[08h],@fx[14h],@fy[10h]
SHA1FUNC4 @fy[04h],@fy[0Ch],@fx[18h],@fy[00h]
SHA1FUNC4 @fy[08h],@fy[10h],@fx[1Ch],@fy[04h]
SHA1FUNC4 @fy[0Ch],@fy[00h],@fx[20h],@fy[08h]
SHA1FUNC4 @fy[10h],@fy[04h],@fx[24h],@fy[0Ch]
SHA1FUNC4 @fy[00h],@fy[08h],@fx[28h],@fy[10h]
SHA1FUNC4 @fy[04h],@fy[0Ch],@fx[2Ch],@fy[00h]
SHA1FUNC4 @fy[08h],@fy[10h],@fx[30h],@fy[04h]
SHA1FUNC4 @fy[0Ch],@fy[00h],@fx[34h],@fy[08h]
SHA1FUNC4 @fy[10h],@fy[04h],@fx[38h],@fy[0Ch]
SHA1FUNC4 @fy[00h],@fy[08h],@fx[3Ch],@fy[10h]
mov eax,pDest
add [eax],ecx
mov ecx,@fy[0Ch]
add [eax+04h],ecx
add [eax+08h],edx
mov edx,@fy[04h]
add [eax+0Ch],edx
mov edx,@fy[00h]
add [eax+10h],edx
cmp @End,0
jz LoopBlk
mov edi,pDest
mov ecx,5
@@: mov eax,[edi]
bswap eax
stosd
loop @B
Result: ret
SHA1_EnCode endp
;--------------
SHA1_GetCode PROC PUBLIC pSrc:DWORD,nSize:DWORD,pDest:DWORD
invoke SHA1_EnCode,pSrc,nSize,nSize,pDest,0
ret
SHA1_GetCode ENDP
KeyGen proc uses ebx esi edi,hWnd:DWORD
local hFile
xor al,al
mov byte ptr[username+1],al
invoke GetDlgItemText,hWnd,IDC_EDT1,addr username+1,255
cmp eax,4
jl wrong
mov txtSize,eax
invoke SHA1_GetCode,addr username+1,txtSize,addr DecDat
mov eax,txtSize
inc eax
mov txtSize,eax
invoke CreateFile,addr szKeyFileName,GENERIC_WRITE,FILE_SHARE_READ,\
NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL
mov hFile,eax
invoke WriteFile,hFile,addr DecDat,20,addr sb,NULL
invoke WriteFile,hFile,addr username,dword ptr [txtSize],addr sb,NULL
invoke CloseHandle,hFile
invoke MessageBox,hWnd,addr szKeyFileDone,addr WindowsName,MB_OK
jmp Result
wrong:
invoke MessageBox,hWnd,addr szShortName,addr dlgtxt,MB_OK
Result: ret
KeyGen endp
dlgproc proc 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 eax == IDC_BTN1
invoke KeyGen,hWnd
.endif
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
dlgproc endp
;=========================================
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke DialogBoxParam,hInstance,IDD_DLG1,NULL,addr dlgproc,NULL
invoke ExitProcess,eax
;=======================================
end start
上传的附件: