算法专题快来了,加紧学习------>找了个MD5 CM分析了一下
本帖最后由 wangwei1978 于 2015-6-6 19:04 编辑.text:00401A94 push 12Ch ; cchMax
.text:00401A99 push offset String1; lpString
.text:00401A9E push 64h ; nIDDlgItem
.text:00401AA0 push ; hDlg
.text:00401AA3 call GetDlgItemTextA ; 这个CM只判断是否有输入
.text:00401AA8 or eax, eax ; 判断用户名是否为空
.text:00401AAA jnz short loc_401AC5 ; 注意这个PUSH eax,eax保存在是用户名的长度
.text:00401AAC push 0 ; uType
.text:00401AAE push offset aOoohInputError ; "oooH input Error"
.text:00401AB3 push offset aYourNamePlease ; "Your name please !!!"
.text:00401AB8 push 0 ; hWnd
.text:00401ABA call MessageBoxA
.text:00401ABF leave
.text:00401AC0 retn 10h
.text:00401AC3 ; ---------------------------------------------------------------------------
.text:00401AC3 jmp short loc_401AF8
.text:00401AC5 ; ---------------------------------------------------------------------------
.text:00401AC5
.text:00401AC5 loc_401AC5: ; CODE XREF: DialogFunc+9Bj
.text:00401AC5 push eax ; 注意这个PUSH eax,eax保存在是用户名的长度
.text:00401AC6 push 12Ch ; cchMax
.text:00401ACB push offset byte_409CF8 ; lpString
.text:00401AD0 push 0C8h ; nIDDlgItem
.text:00401AD5 push ; hDlg
.text:00401AD8 call GetDlgItemTextA ; 判断注册是否为空
.text:00401ADD or eax, eax
.text:00401ADF jnz short loc_401AF8
.text:00401AE1 push 0 ; uType
.text:00401AE3 push offset aOoohInputError ; "oooH input Error"
.text:00401AE8 push offset aWhereIsDaSeria ; "Where is Da serial DuDe ?"
.text:00401AED push 0 ; hWnd
.text:00401AEF call MessageBoxA
.text:00401AF4 leave
.text:00401AF5 retn 10h
.text:00401AF8 ; ---------------------------------------------------------------------------
.text:00401AF8
.text:00401AF8 loc_401AF8: ; CODE XREF: DialogFunc+B4j
.text:00401AF8 ; DialogFunc+D0j
.text:00401AF8 push offset String2; "BytePtr "
.text:00401AFD push offset String1; lpString1
.text:00401B02 call lstrcatA ; 用户名与上面字符拼接起来
.text:00401B07 pop eax ; 记得上面PUSH eax现在又POP eax,
.text:00401B08 push offset dword_4056A8 ; unk_4056A8 是个缓存区
.text:00401B0D push eax ; eax 是用户名长度
.text:00401B0E push offset String1; 指向拼接后的字串
.text:00401B13 call sub_401000 ; MD5函数
.text:00401B18 call sub_401B79 ; 格式MD5算出的字串
.text:00401B1D push offset byte_4079D0 ; lpString2
.text:00401B22 push offset byte_409CF8 ; lpString1
.text:00401B27 call lstrcmpA ; 与假码比较
.text:00401B2C test eax, eax
.text:00401B2E jnz short loc_401B45
.text:00401B30 push 0 ; uType
.text:00401B32 push offset aGoodWork ; "Good Work"
.text:00401B37 push offset aGoodSerialNowS ; "Good serial, Now send your Tut & KeyGen"...
.text:00401B3C push 0 ; hWnd
.text:00401B3E call MessageBoxA
.text:00401B43 jmp short loc_401B73
.text:00401B45 ; ---------------------------------------------------------------------------
.text:00401B45
.text:00401B45 loc_401B45: ; CODE XREF: DialogFunc+11Fj
.text:00401B45 push 0 ; uType
.text:00401B47 push offset aFatalError ; "Fatal Error"
.text:00401B4C push offset aHmmmNotLikeThi ; "hmmm not like thisDuDe Try again...."
.text:00401B51 push 0 ; hWnd
.text:00401B53 call MessageBoxA
.text:00401B58 xor eax, eax
.text:00401B5A leave
.text:00401B5B retn 10h 看看00401000代码,看汇编挺累 F5吧!void __stdcall __spoils<ecx> sub_401000(int a1, unsigned int a2, int a3)
{
void *v3; // edi@1
unsigned int v4; // edx@1
int v5; // edi@3
unsigned int v6; // eax@3
signed __int64 v7; // rax@3
int v8; // edx@3
int v9; // edi@3
int v10; // esi@3
int v11; // ST20_4@4
int v12; // ST1C_4@4
int v13; // ST18_4@4
int v14; // eax@4
int v15; // ST24_4@4
int v16; // eax@4
int v17; // ST18_4@4
int v18; // eax@4
int v19; // ST1C_4@4
int v20; // eax@4
int v21; // ST20_4@4
int v22; // eax@4
int v23; // ST24_4@4
int v24; // eax@4
int v25; // ST18_4@4
int v26; // eax@4
int v27; // ST1C_4@4
int v28; // eax@4
int v29; // ST20_4@4
int v30; // eax@4
int v31; // ST24_4@4
int v32; // eax@4
int v33; // ST18_4@4
int v34; // eax@4
int v35; // ST1C_4@4
int v36; // eax@4
int v37; // ST20_4@4
int v38; // eax@4
int v39; // ST24_4@4
int v40; // eax@4
int v41; // ST18_4@4
int v42; // eax@4
int v43; // ST1C_4@4
int v44; // eax@4
int v45; // ST20_4@4
int v46; // eax@4
int v47; // ST24_4@4
int v48; // eax@4
int v49; // ST18_4@4
int v50; // eax@4
int v51; // ST1C_4@4
int v52; // eax@4
int v53; // ST20_4@4
int v54; // eax@4
int v55; // ST24_4@4
int v56; // eax@4
int v57; // ST18_4@4
int v58; // eax@4
int v59; // ST1C_4@4
int v60; // eax@4
int v61; // ST20_4@4
int v62; // eax@4
int v63; // ST24_4@4
int v64; // eax@4
int v65; // ST18_4@4
int v66; // eax@4
int v67; // ST1C_4@4
int v68; // eax@4
int v69; // ST20_4@4
int v70; // eax@4
int v71; // ST24_4@4
int v72; // eax@4
int v73; // ST18_4@4
int v74; // eax@4
int v75; // ST1C_4@4
int v76; // eax@4
int v77; // ST20_4@4
int v78; // eax@4
int v79; // ST24_4@4
int v80; // eax@4
int v81; // ST18_4@4
int v82; // eax@4
int v83; // ST1C_4@4
int v84; // eax@4
int v85; // ST20_4@4
int v86; // eax@4
int v87; // ST24_4@4
int v88; // eax@4
int v89; // ST18_4@4
int v90; // eax@4
int v91; // ST1C_4@4
int v92; // eax@4
int v93; // ST20_4@4
int v94; // eax@4
int v95; // ST24_4@4
int v96; // eax@4
int v97; // ST18_4@4
int v98; // eax@4
int v99; // ST1C_4@4
int v100; // eax@4
int v101; // ST20_4@4
int v102; // eax@4
int v103; // ST24_4@4
int v104; // eax@4
int v105; // ST18_4@4
int v106; // eax@4
int v107; // ST1C_4@4
int v108; // eax@4
int v109; // ST20_4@4
int v110; // eax@4
int v111; // ST24_4@4
int v112; // eax@4
int v113; // ST18_4@4
int v114; // eax@4
int v115; // ST1C_4@4
int v116; // eax@4
int v117; // ST20_4@4
int v118; // eax@4
int v119; // ST24_4@4
int v120; // eax@4
int v121; // ST18_4@4
int v122; // eax@4
int v123; // ST1C_4@4
int v124; // eax@4
int v125; // ST20_4@4
int v126; // eax@4
int v127; // ST24_4@4
int v128; // eax@4
int v129; // ST18_4@4
int v130; // eax@4
int v131; // ST1C_4@4
int v132; // eax@4
int v133; // ST20_4@4
int v134; // eax@4
int v135; // ST24_4@4
int v136; // eax@4
int v137; // ST18_4@4
int v138; // eax@4
int v139; // ST1C_4@4
int v140; // eax@4
signed int v141; // ecx@5
int v142; // eax@6
char v143; // t1@6
int v144; // @3
v3 = (void *)(a2 + 1 + a1);
*((char *)v3 - 1) = -128;
v4 = 64 - (a2 + 1) % 0x40;
if ( v4 < 8 )
v4 += 64;
memset(v3, 0, v4);
v5 = (int)((char *)v3 + v4);
v6 = a2;
v144 = v4 + 1 + a2;
v7 = 8i64 * v6;
*(_DWORD *)(v5 - 8) = v7;
*(_DWORD *)(v5 - 4) = HIDWORD(v7);
v8 = v144;
v9 = a1;
v10 = a3;
*(_DWORD *)a3 = 1732584193;
*(_DWORD *)(a3 + 4) = -271733879;
*(_DWORD *)(a3 + 8) = -1732584194;
*(_DWORD *)(a3 + 12) = 271733878;
do
{
v11 = *(_DWORD *)(a3 + 4);
v12 = *(_DWORD *)(a3 + 8);
v13 = *(_DWORD *)(a3 + 12);
v14 = __ROL4__(*(_DWORD *)v9 + *(_DWORD *)a3 + (v11 & v12 | v13 & ~v11) - 680876936, 7);
v15 = v11 + v14;
v16 = __ROL4__(*(_DWORD *)(v9 + 4) + v13 + ((v11 + v14) & v11 | v12 & ~(v11 + v14)) - 389564586, 12);
v17 = v15 + v16;
v18 = __ROL4__(*(_DWORD *)(v9 + 8) + v12 + ((v15 + v16) & v15 | v11 & ~(v15 + v16)) + 606105819, 17);
v19 = v17 + v18;
v20 = __ROL4__(*(_DWORD *)(v9 + 12) + v11 + ((v17 + v18) & v17 | v15 & ~(v17 + v18)) - 1044525330, 22);
v21 = v19 + v20;
v22 = __ROL4__(*(_DWORD *)(v9 + 16) + v15 + ((v19 + v20) & v19 | v17 & ~(v19 + v20)) - 176418897, 7);
v23 = v21 + v22;
v24 = __ROL4__(*(_DWORD *)(v9 + 20) + v17 + ((v21 + v22) & v21 | v19 & ~(v21 + v22)) + 1200080426, 12);
v25 = v23 + v24;
v26 = __ROL4__(*(_DWORD *)(v9 + 24) + v19 + ((v23 + v24) & v23 | v21 & ~(v23 + v24)) - 1473231341, 17);
v27 = v25 + v26;
v28 = __ROL4__(*(_DWORD *)(v9 + 28) + v21 + ((v25 + v26) & v25 | v23 & ~(v25 + v26)) - 45705983, 22);
v29 = v27 + v28;
v30 = __ROL4__(*(_DWORD *)(v9 + 32) + v23 + ((v27 + v28) & v27 | v25 & ~(v27 + v28)) + 1770035416, 7);
v31 = v29 + v30;
v32 = __ROL4__(*(_DWORD *)(v9 + 36) + v25 + ((v29 + v30) & v29 | v27 & ~(v29 + v30)) - 1958414417, 12);
v33 = v31 + v32;
v34 = __ROL4__(*(_DWORD *)(v9 + 40) + v27 + ((v31 + v32) & v31 | v29 & ~(v31 + v32)) - 42063, 17);
v35 = v33 + v34;
v36 = __ROL4__(*(_DWORD *)(v9 + 44) + v29 + ((v33 + v34) & v33 | v31 & ~(v33 + v34)) - 1990404162, 22);
v37 = v35 + v36;
v38 = __ROL4__(*(_DWORD *)(v9 + 48) + v31 + ((v35 + v36) & v35 | v33 & ~(v35 + v36)) + 1804603682, 7);
v39 = v37 + v38;
v40 = __ROL4__(*(_DWORD *)(v9 + 52) + v33 + ((v37 + v38) & v37 | v35 & ~(v37 + v38)) - 40341101, 12);
v41 = v39 + v40;
v42 = __ROL4__(*(_DWORD *)(v9 + 56) + v35 + ((v39 + v40) & v39 | v37 & ~(v39 + v40)) - 1502002290, 17);
v43 = v41 + v42;
v44 = __ROL4__(*(_DWORD *)(v9 + 60) + v37 + ((v41 + v42) & v41 | v39 & ~(v41 + v42)) + 1236535329, 22);
v45 = v43 + v44;
v46 = __ROL4__(*(_DWORD *)(v9 + 4) + v39 + (v43 & ~v41 | v41 & (v43 + v44)) - 165796510, 5);
v47 = v45 + v46;
v48 = __ROL4__(*(_DWORD *)(v9 + 24) + v41 + (v45 & ~v43 | v43 & (v45 + v46)) - 1069501632, 9);
v49 = v47 + v48;
v50 = __ROL4__(*(_DWORD *)(v9 + 44) + v43 + (v47 & ~v45 | v45 & (v47 + v48)) + 643717713, 14);
v51 = v49 + v50;
v52 = __ROL4__(*(_DWORD *)v9 + v45 + (v49 & ~v47 | v47 & (v49 + v50)) - 373897302, 20);
v53 = v51 + v52;
v54 = __ROL4__(*(_DWORD *)(v9 + 20) + v47 + (v51 & ~v49 | v49 & (v51 + v52)) - 701558691, 5);
v55 = v53 + v54;
v56 = __ROL4__(*(_DWORD *)(v9 + 40) + v49 + (v53 & ~v51 | v51 & (v53 + v54)) + 38016083, 9);
v57 = v55 + v56;
v58 = __ROL4__(*(_DWORD *)(v9 + 60) + v51 + (v55 & ~v53 | v53 & (v55 + v56)) - 660478335, 14);
v59 = v57 + v58;
v60 = __ROL4__(*(_DWORD *)(v9 + 16) + v53 + (v57 & ~v55 | v55 & (v57 + v58)) - 405537848, 20);
v61 = v59 + v60;
v62 = __ROL4__(*(_DWORD *)(v9 + 36) + v55 + (v59 & ~v57 | v57 & (v59 + v60)) + 568446438, 5);
v63 = v61 + v62;
v64 = __ROL4__(*(_DWORD *)(v9 + 56) + v57 + (v61 & ~v59 | v59 & (v61 + v62)) - 1019803690, 9);
v65 = v63 + v64;
v66 = __ROL4__(*(_DWORD *)(v9 + 12) + v59 + (v63 & ~v61 | v61 & (v63 + v64)) - 187363961, 14);
v67 = v65 + v66;
v68 = __ROL4__(*(_DWORD *)(v9 + 32) + v61 + (v65 & ~v63 | v63 & (v65 + v66)) + 1163531501, 20);
v69 = v67 + v68;
v70 = __ROL4__(*(_DWORD *)(v9 + 52) + v63 + (v67 & ~v65 | v65 & (v67 + v68)) - 1444681467, 5);
v71 = v69 + v70;
v72 = __ROL4__(*(_DWORD *)(v9 + 8) + v65 + (v69 & ~v67 | v67 & (v69 + v70)) - 51403784, 9);
v73 = v71 + v72;
v74 = __ROL4__(*(_DWORD *)(v9 + 28) + v67 + (v71 & ~v69 | v69 & (v71 + v72)) + 1735328473, 14);
v75 = v73 + v74;
v76 = __ROL4__(*(_DWORD *)(v9 + 48) + v69 + (v73 & ~v71 | v71 & (v73 + v74)) - 1926607734, 20);
v77 = v75 + v76;
v78 = __ROL4__(*(_DWORD *)(v9 + 20) + v71 + (v73 ^ v75 ^ (v75 + v76)) - 378558, 4);
v79 = v77 + v78;
v80 = __ROL4__(*(_DWORD *)(v9 + 32) + v73 + (v75 ^ v77 ^ (v77 + v78)) - 2022574463, 11);
v81 = v79 + v80;
v82 = __ROL4__(*(_DWORD *)(v9 + 44) + v75 + (v77 ^ v79 ^ (v79 + v80)) + 1839030562, 16);
v83 = v81 + v82;
v84 = __ROL4__(*(_DWORD *)(v9 + 56) + v77 + (v79 ^ v81 ^ (v81 + v82)) - 35309556, 23);
v85 = v83 + v84;
v86 = __ROL4__(*(_DWORD *)(v9 + 4) + v79 + (v81 ^ v83 ^ (v83 + v84)) - 1530992060, 4);
v87 = v85 + v86;
v88 = __ROL4__(*(_DWORD *)(v9 + 16) + v81 + (v83 ^ v85 ^ (v85 + v86)) + 1272893353, 11);
v89 = v87 + v88;
v90 = __ROL4__(*(_DWORD *)(v9 + 28) + v83 + (v85 ^ v87 ^ (v87 + v88)) - 155497632, 16);
v91 = v89 + v90;
v92 = __ROL4__(*(_DWORD *)(v9 + 40) + v85 + (v87 ^ v89 ^ (v89 + v90)) - 1094730640, 23);
v93 = v91 + v92;
v94 = __ROL4__(*(_DWORD *)(v9 + 52) + v87 + (v89 ^ v91 ^ (v91 + v92)) + 681279174, 4);
v95 = v93 + v94;
v96 = __ROL4__(*(_DWORD *)v9 + v89 + (v91 ^ v93 ^ (v93 + v94)) - 358537222, 11);
v97 = v95 + v96;
v98 = __ROL4__(*(_DWORD *)(v9 + 12) + v91 + (v93 ^ v95 ^ (v95 + v96)) - 722521979, 16);
v99 = v97 + v98;
v100 = __ROL4__(*(_DWORD *)(v9 + 24) + v93 + (v95 ^ v97 ^ (v97 + v98)) + 76029189, 23);
v101 = v99 + v100;
v102 = __ROL4__(*(_DWORD *)(v9 + 36) + v95 + (v97 ^ v99 ^ (v99 + v100)) - 640364487, 4);
v103 = v101 + v102;
v104 = __ROL4__(*(_DWORD *)(v9 + 48) + v97 + (v99 ^ v101 ^ (v101 + v102)) - 421815835, 11);
v105 = v103 + v104;
v106 = __ROL4__(*(_DWORD *)(v9 + 60) + v99 + (v101 ^ v103 ^ (v103 + v104)) + 530742520, 16);
v107 = v105 + v106;
v108 = __ROL4__(*(_DWORD *)(v9 + 8) + v101 + (v103 ^ v105 ^ (v105 + v106)) - 995338651, 23);
v109 = v107 + v108;
v110 = __ROL4__(*(_DWORD *)v9 + v103 + (v107 ^ (~v105 | (v107 + v108))) - 198630844, 6);
v111 = v109 + v110;
v112 = __ROL4__(*(_DWORD *)(v9 + 28) + v105 + (v109 ^ (~v107 | (v109 + v110))) + 1126891415, 10);
v113 = v111 + v112;
v114 = __ROL4__(*(_DWORD *)(v9 + 56) + v107 + (v111 ^ (~v109 | (v111 + v112))) - 1416354905, 15);
v115 = v113 + v114;
v116 = __ROL4__(*(_DWORD *)(v9 + 20) + v109 + (v113 ^ (~v111 | (v113 + v114))) - 57434055, 21);
v117 = v115 + v116;
v118 = __ROL4__(*(_DWORD *)(v9 + 48) + v111 + (v115 ^ (~v113 | (v115 + v116))) + 1700485571, 6);
v119 = v117 + v118;
v120 = __ROL4__(*(_DWORD *)(v9 + 12) + v113 + (v117 ^ (~v115 | (v117 + v118))) - 1894986606, 10);
v121 = v119 + v120;
v122 = __ROL4__(*(_DWORD *)(v9 + 40) + v115 + (v119 ^ (~v117 | (v119 + v120))) - 1051523, 15);
v123 = v121 + v122;
v124 = __ROL4__(*(_DWORD *)(v9 + 4) + v117 + (v121 ^ (~v119 | (v121 + v122))) - 2054922799, 21);
v125 = v123 + v124;
v126 = __ROL4__(*(_DWORD *)(v9 + 32) + v119 + (v123 ^ (~v121 | (v123 + v124))) + 1873313359, 6);
v127 = v125 + v126;
v128 = __ROL4__(*(_DWORD *)(v9 + 60) + v121 + (v125 ^ (~v123 | (v125 + v126))) - 30611744, 10);
v129 = v127 + v128;
v130 = __ROL4__(*(_DWORD *)(v9 + 24) + v123 + (v127 ^ (~v125 | (v127 + v128))) - 1560198380, 15);
v131 = v129 + v130;
v132 = __ROL4__(*(_DWORD *)(v9 + 52) + v125 + (v129 ^ (~v127 | (v129 + v130))) + 1309151649, 21);
v133 = v131 + v132;
v134 = __ROL4__(*(_DWORD *)(v9 + 16) + v127 + (v131 ^ (~v129 | (v131 + v132))) - 145523070, 6);
v135 = v133 + v134;
v136 = __ROL4__(*(_DWORD *)(v9 + 44) + v129 + (v133 ^ (~v131 | (v133 + v134))) - 1120210379, 10);
v137 = v135 + v136;
v138 = __ROL4__(*(_DWORD *)(v9 + 8) + v131 + (v135 ^ (~v133 | (v135 + v136))) + 718787259, 15);
v139 = v137 + v138;
v140 = __ROL4__(*(_DWORD *)(v9 + 36) + v133 + (v137 ^ (~v135 | (v137 + v138))) - 343485551, 21);
*(_DWORD *)a3 += v135;
*(_DWORD *)(a3 + 4) += v139 + v140;
*(_DWORD *)(a3 + 8) += v139;
*(_DWORD *)(a3 + 12) += v137;
v9 += 64;
v8 -= 64;
}
while ( v8 );
v141 = 4;
do
{
v142 = *(_DWORD *)v10;
LOBYTE(v142) = BYTE1(v142);
BYTE1(v142) = *(_DWORD *)v10;
v142 = __ROL4__(v142, 16);
v143 = v142;
LOBYTE(v142) = BYTE1(v142);
BYTE1(v142) = v143;
*(_DWORD *)v10 = v142;
v10 += 4;
--v141;
}
while ( v141 );
} 看起来是MD5的算法了.这样的要么自己实现,要不把它提取出吧
MD5 proc _buffer,len,_szName ; CODE XREF: DialogFunc+104p
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr8
arg_4 = dword ptr0Ch
arg_8 = dword ptr10h
add esp, 0FFFFFFF0h
push eax
push ebx
push ecx
push edx
push edi
push esi
mov edi,
mov eax,
inc eax
add edi, eax
mov byte ptr , 80h
xor edx, edx
mov ebx, 40h
div ebx
neg edx
add edx, 40h
cmp edx, 8
jnb short loc_40102F
add edx, 40h
loc_40102F: ; CODE XREF: sub_401000+2Aj
mov ecx, edx
xor al, al
rep stosb
mov eax,
inc edx
add , edx
xor edx, edx
mov ebx, 8
mul ebx
mov , eax
mov , edx
mov edx,
mov edi,
mov esi,
mov dword ptr , 67452301h
mov dword ptr , 0EFCDAB89h
mov dword ptr , 98BADCFEh
mov dword ptr , 10325476h
loc_40106F: ; CODE XREF: sub_401000+9BFj
mov eax,
mov , eax
mov eax,
mov , eax
mov eax,
mov , eax
mov eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and ebx, eax
not eax
and eax, ecx
or eax, ebx
add eax,
add eax,
add eax, 0D76AA478h
mov cl, 7
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and ebx, eax
not eax
and eax, ecx
or eax, ebx
add eax,
add eax,
add eax, 0E8C7B756h
mov cl, 0Ch
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and ebx, eax
not eax
and eax, ecx
or eax, ebx
add eax,
add eax,
add eax, 242070DBh
mov cl, 11h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and ebx, eax
not eax
and eax, ecx
or eax, ebx
add eax,
add eax,
add eax, 0C1BDCEEEh
mov cl, 16h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and ebx, eax
not eax
and eax, ecx
or eax, ebx
add eax,
add eax,
add eax, 0F57C0FAFh
mov cl, 7
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and ebx, eax
not eax
and eax, ecx
or eax, ebx
add eax,
add eax,
add eax, 4787C62Ah
mov cl, 0Ch
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and ebx, eax
not eax
and eax, ecx
or eax, ebx
add eax,
add eax,
add eax, 0A8304613h
mov cl, 11h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and ebx, eax
not eax
and eax, ecx
or eax, ebx
add eax,
add eax,
add eax, 0FD469501h
mov cl, 16h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and ebx, eax
not eax
and eax, ecx
or eax, ebx
add eax,
add eax,
add eax, 698098D8h
mov cl, 7
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and ebx, eax
not eax
and eax, ecx
or eax, ebx
add eax,
add eax,
add eax, 8B44F7AFh
mov cl, 0Ch
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and ebx, eax
not eax
and eax, ecx
or eax, ebx
add eax,
add eax,
add eax, 0FFFF5BB1h
mov cl, 11h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and ebx, eax
not eax
and eax, ecx
or eax, ebx
add eax,
add eax,
add eax, 895CD7BEh
mov cl, 16h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and ebx, eax
not eax
and eax, ecx
or eax, ebx
add eax,
add eax,
add eax, 6B901122h
mov cl, 7
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and ebx, eax
not eax
and eax, ecx
or eax, ebx
add eax,
add eax,
add eax, 0FD987193h
mov cl, 0Ch
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and ebx, eax
not eax
and eax, ecx
or eax, ebx
add eax,
add eax,
add eax, 0A679438Eh
mov cl, 11h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and ebx, eax
not eax
and eax, ecx
or eax, ebx
add eax,
add eax,
add eax, 49B40821h
mov cl, 16h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and eax, ecx
not ecx
and ecx, ebx
or eax, ecx
add eax,
add eax,
add eax, 0F61E2562h
mov cl, 5
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and eax, ecx
not ecx
and ecx, ebx
or eax, ecx
add eax,
add eax,
add eax, 0C040B340h
mov cl, 9
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and eax, ecx
not ecx
and ecx, ebx
or eax, ecx
add eax,
add eax,
add eax, 265E5A51h
mov cl, 0Eh
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and eax, ecx
not ecx
and ecx, ebx
or eax, ecx
add eax,
add eax,
add eax, 0E9B6C7AAh
mov cl, 14h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and eax, ecx
not ecx
and ecx, ebx
or eax, ecx
add eax,
add eax,
add eax, 0D62F105Dh
mov cl, 5
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and eax, ecx
not ecx
and ecx, ebx
or eax, ecx
add eax,
add eax,
add eax, 2441453h
mov cl, 9
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and eax, ecx
not ecx
and ecx, ebx
or eax, ecx
add eax,
add eax,
add eax, 0D8A1E681h
mov cl, 0Eh
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and eax, ecx
not ecx
and ecx, ebx
or eax, ecx
add eax,
add eax,
add eax, 0E7D3FBC8h
mov cl, 14h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and eax, ecx
not ecx
and ecx, ebx
or eax, ecx
add eax,
add eax,
add eax, 21E1CDE6h
mov cl, 5
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and eax, ecx
not ecx
and ecx, ebx
or eax, ecx
add eax,
add eax,
add eax, 0C33707D6h
mov cl, 9
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and eax, ecx
not ecx
and ecx, ebx
or eax, ecx
add eax,
add eax,
add eax, 0F4D50D87h
mov cl, 0Eh
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and eax, ecx
not ecx
and ecx, ebx
or eax, ecx
add eax,
add eax,
add eax, 455A14EDh
mov cl, 14h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and eax, ecx
not ecx
and ecx, ebx
or eax, ecx
add eax,
add eax,
add eax, 0A9E3E905h
mov cl, 5
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and eax, ecx
not ecx
and ecx, ebx
or eax, ecx
add eax,
add eax,
add eax, 0FCEFA3F8h
mov cl, 9
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and eax, ecx
not ecx
and ecx, ebx
or eax, ecx
add eax,
add eax,
add eax, 676F02D9h
mov cl, 0Eh
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
and eax, ecx
not ecx
and ecx, ebx
or eax, ecx
add eax,
add eax,
add eax, 8D2A4C8Ah
mov cl, 14h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
xor eax, ebx
xor eax, ecx
add eax,
add eax,
add eax, 0FFFA3942h
mov cl, 4
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
xor eax, ebx
xor eax, ecx
add eax,
add eax,
add eax, 8771F681h
mov cl, 0Bh
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
xor eax, ebx
xor eax, ecx
add eax,
add eax,
add eax, 6D9D6122h
mov cl, 10h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
xor eax, ebx
xor eax, ecx
add eax,
add eax,
add eax, 0FDE5380Ch
mov cl, 17h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
xor eax, ebx
xor eax, ecx
add eax,
add eax,
add eax, 0A4BEEA44h
mov cl, 4
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
xor eax, ebx
xor eax, ecx
add eax,
add eax,
add eax, 4BDECFA9h
mov cl, 0Bh
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
xor eax, ebx
xor eax, ecx
add eax,
add eax,
add eax, 0F6BB4B60h
mov cl, 10h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
xor eax, ebx
xor eax, ecx
add eax,
add eax,
add eax, 0BEBFBC70h
mov cl, 17h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
xor eax, ebx
xor eax, ecx
add eax,
add eax,
add eax, 289B7EC6h
mov cl, 4
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
xor eax, ebx
xor eax, ecx
add eax,
add eax,
add eax, 0EAA127FAh
mov cl, 0Bh
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
xor eax, ebx
xor eax, ecx
add eax,
add eax,
add eax, 0D4EF3085h
mov cl, 10h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
xor eax, ebx
xor eax, ecx
add eax,
add eax,
add eax, 4881D05h
mov cl, 17h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
xor eax, ebx
xor eax, ecx
add eax,
add eax,
add eax, 0D9D4D039h
mov cl, 4
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
xor eax, ebx
xor eax, ecx
add eax,
add eax,
add eax, 0E6DB99E5h
mov cl, 0Bh
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
xor eax, ebx
xor eax, ecx
add eax,
add eax,
add eax, 1FA27CF8h
mov cl, 10h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
xor eax, ebx
xor eax, ecx
add eax,
add eax,
add eax, 0C4AC5665h
mov cl, 17h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
not ecx
or eax, ecx
xor eax, ebx
add eax,
add eax,
add eax, 0F4292244h
mov cl, 6
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
not ecx
or eax, ecx
xor eax, ebx
add eax,
add eax,
add eax, 432AFF97h
mov cl, 0Ah
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
not ecx
or eax, ecx
xor eax, ebx
add eax,
add eax,
add eax, 0AB9423A7h
mov cl, 0Fh
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
not ecx
or eax, ecx
xor eax, ebx
add eax,
add eax,
add eax, 0FC93A039h
mov cl, 15h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
not ecx
or eax, ecx
xor eax, ebx
add eax,
add eax,
add eax, 655B59C3h
mov cl, 6
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
not ecx
or eax, ecx
xor eax, ebx
add eax,
add eax,
add eax, 8F0CCC92h
mov cl, 0Ah
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
not ecx
or eax, ecx
xor eax, ebx
add eax,
add eax,
add eax, 0FFEFF47Dh
mov cl, 0Fh
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
not ecx
or eax, ecx
xor eax, ebx
add eax,
add eax,
add eax, 85845DD1h
mov cl, 15h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
not ecx
or eax, ecx
xor eax, ebx
add eax,
add eax,
add eax, 6FA87E4Fh
mov cl, 6
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
not ecx
or eax, ecx
xor eax, ebx
add eax,
add eax,
add eax, 0FE2CE6E0h
mov cl, 0Ah
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
not ecx
or eax, ecx
xor eax, ebx
add eax,
add eax,
add eax, 0A3014314h
mov cl, 0Fh
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
not ecx
or eax, ecx
xor eax, ebx
add eax,
add eax,
add eax, 4E0811A1h
mov cl, 15h
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
not ecx
or eax, ecx
xor eax, ebx
add eax,
add eax,
add eax, 0F7537E82h
mov cl, 6
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
not ecx
or eax, ecx
xor eax, ebx
add eax,
add eax,
add eax, 0BD3AF235h
mov cl, 0Ah
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
not ecx
or eax, ecx
xor eax, ebx
add eax,
add eax,
add eax, 2AD7D2BBh
mov cl, 0Fh
rol eax, cl
add eax,
mov , eax
mov eax,
mov ebx,
mov ecx,
not ecx
or eax, ecx
xor eax, ebx
add eax,
add eax,
add eax, 0EB86D391h
mov cl, 15h
rol eax, cl
add eax,
mov , eax
mov eax,
add , eax
mov eax,
add , eax
mov eax,
add , eax
mov eax,
add , eax
add edi, 40h
sub edx, 40h
jnz loc_40106F
mov ecx, 4
loc_4019CA: ; CODE XREF: sub_401000+9D8j
mov eax,
xchg al, ah
rol eax, 10h
xchg al, ah
mov , eax
add esi, 4
loop loc_4019CA
pop esi
pop edi
pop edx
pop ecx
pop ebx
pop eax
leave
retn 0Ch
MD5 endp .text:00401B18 call sub_401B79 ; 格式MD5算出的字串去这个函数看看吧!void __spoils<ecx> sub_401B79()
{
int v0; // ebx@1
v0 = dword_4056A8;//取出MD5算岀的第2组数据
wsprintfA(byte_4079D0, a_8x, v0 ^ dword_4056A8); // 第一组和第二组 XOR 并格化保存到 byte_4079D0
v0 ^= 0xFBD0099u;
wsprintfA(&byte_4079D0, a_8x, v0); // 第一组与0xFBD0099u XOR 并格化保存到 byte_4079D0
wsprintfA(&byte_4079D0, a_8x, v0 ^ dword_4056A8);//第一组与第三组XOR 并格化保存到 byte_4079D0
wsprintfA(&byte_4079D0, a_8x, dword_4056A8);// 第四组格化保存到 byte_4079D0
} 也提取一下代码,偷懒; =============== S U B R O U T I N E =======================================
sub_401B79 proc near ; CODE XREF: DialogFunc+109p
pusha
mov edi, offset byte_4079D0
mov esi, offset unk_4056A8
mov eax,
mov ebx,
xor eax, ebx
push eax
push offset a_8x ; "%.8X"
push edi ; LPSTR
call wsprintfA
add esp, 0Ch
add edi, 8
xor ebx, 0FBD0099h
push ebx
push offset a_8x ; "%.8X"
push edi ; LPSTR
call wsprintfA
add esp, 0Ch
mov ecx,
xor ecx, ebx
add edi, 8
push ecx
push offset a_8x ; "%.8X"
push edi ; LPSTR
call wsprintfA
add esp, 0Ch
xor ebx, 0B0C0A09h
mov edx,
add edi, 8
push edx
push offset a_8x ; "%.8X"
push edi ; LPSTR
call wsprintfA
add esp, 0Ch
popa
retn
sub_401B79 endp
自已建个工程把代码贴进入去.
把CM和我的工程文件打包.希望0基础一起学习进步
太感谢了,收藏学习{:soso_e179:} 不错呢,学习了
页:
[1]