就是MD5
00401203
|.
8B06
mov
eax, dword ptr [esi]
;
67452301
00401205
|.
8B7E 04
mov
edi, dword ptr [esi+4]
;
EFCDAB89
00401208
|.
8B5E 08
mov
ebx, dword ptr [esi+8]
;
98BADCFE
0040120B
|.
8B6E 0C
mov
ebp, dword ptr [esi+C]
;
10325476
0040120E
|.
51
push
ecx
0040120F
|.
52
push
edx
00401210
|.
8BCE
mov
ecx, esi
00401212
|.
894424 1C
mov
dword ptr [esp+1C], eax
;
保存EAX的值
00401216
|.
E8 65090000
call
00401B80
;
存储11141497sDx5show
这段就是调用MD5的初始化代码
align dword
MD5Init proc uses edi
xor eax, eax
mov MD5Len,eax
MD5BURN
mov eax,offset MD5Digest
mov dword ptr [eax+0*4],067452301h
mov dword ptr [eax+1*4],0EFCDAB89h
mov dword ptr [eax+2*4],098BADCFEh
mov dword ptr [eax+3*4],010325476h
ret
MD5Init endp
align dword
MD5Update proc uses esi edi ebx lpBuffer:dword, dwBufLen:dword
mov ebx,dwBufLen
mov esi,lpBuffer
add MD5Len,ebx
.while ebx
mov eax,MD5Index
mov ecx,64
sub ecx,eax
lea edi,[MD5HashBuf+eax]
.if ecx <= ebx
sub ebx,ecx
rep movsb
call MD5Transform
MD5BURN
.else
mov ecx,ebx
rep movsb
add MD5Index,ebx
.break
.endif
.endw
ret
MD5Update endp