|
计算真注册码的MD5值 ---------004EB0E9 |. E8 AE33FFFF CALL Favorite.004DE49C------------ 004DE49C /$Content$nbsp; 55 PUSH EBP 004DE49D |. 8BEC MOV EBP,ESP 004DE49F |. 83C4 B8 ADD ESP,-48 004DE4A2 |. 53 PUSH EBX 004DE4A3 |. 56 PUSH ESI 004DE4A4 |. 57 PUSH EDI 004DE4A5 |. 33C9 XOR ECX,ECX 004DE4A7 |. 894D B8 MOV DWORD PTR SS:[EBP-48],ECX 004DE4AA |. 894D CC MOV DWORD PTR SS:[EBP-34],ECX 004DE4AD |. 894D D0 MOV DWORD PTR SS:[EBP-30],ECX 004DE4B0 |. 894D F4 MOV DWORD PTR SS:[EBP-C],ECX 004DE4B3 |. 894D F0 MOV DWORD PTR SS:[EBP-10],ECX 004DE4B6 |. 894D D8 MOV DWORD PTR SS:[EBP-28],ECX 004DE4B9 |. 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX 004DE4BC |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 004DE4BF |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 004DE4C2 |. E8 0D68F2FF CALL Favorite.00404CD4 004DE4C7 |. 33C0 XOR EAX,EAX 004DE4C9 |. 55 PUSH EBP 004DE4CA |. 68 C5E64D00 PUSH Favorite.004DE6C5 004DE4CF |. 64:FF30 PUSH DWORD PTR FS:[EAX] 004DE4D2 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP 004DE4D5 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C] 004DE4D8 |. 8B15 74ED4E00 MOV EDX,DWORD PTR DS:[4EED74] ; 取一固定字符串 004DE4DE |. E8 D963F2FF CALL Favorite.004048BC 004DE4E3 |. 8D55 D0 LEA EDX,DWORD PTR SS:[EBP-30] 004DE4E6 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 取机器码 004DE4E9 |. E8 CAAAF2FF CALL Favorite.00408FB8 ; 大写字母转换为小写字母 004DE4EE |. 8B55 D0 MOV EDX,DWORD PTR SS:[EBP-30] 004DE4F1 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 004DE4F4 |. E8 C363F2FF CALL Favorite.004048BC 004DE4F9 |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10] 004DE4FC |. E8 2363F2FF CALL Favorite.00404824 004DE501 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 004DE504 |. E8 DB65F2FF CALL Favorite.00404AE4 ; 计算机器码位数 004DE509 |. 8945 E0 MOV DWORD PTR SS:[EBP-20],EAX ; 机器码位数给[EBP-20] 004DE50C |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] 004DE50F |. E8 D065F2FF CALL Favorite.00404AE4 ; 计算固定字符串位数 004DE514 |. 8945 DC MOV DWORD PTR SS:[EBP-24],EAX ; 固定字符串位数给[EBP-24] 004DE517 |. 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20] 004DE51A |. 85C0 TEST EAX,EAX 004DE51C |. 0F8E F5000000 JLE Favorite.004DE617 ; 判断机器位数是否为空 004DE522 |. 8945 D4 MOV DWORD PTR SS:[EBP-2C],EAX 004DE525 |. BB 01000000 MOV EBX,1 004DE52A |> 33F6 /XOR ESI,ESI 004DE52C |. 33C0 |XOR EAX,EAX 004DE52E |. 8945 E4 |MOV DWORD PTR SS:[EBP-1C],EAX 004DE531 |. 83FB 01 |CMP EBX,1 004DE534 |. 75 05 |JNZ SHORT Favorite.004DE53B 004DE536 |. 8B75 E0 |MOV ESI,DWORD PTR SS:[EBP-20] 004DE539 |. EB 01 |JMP SHORT Favorite.004DE53C 004DE53B |> 4E |DEC ESI 004DE53C |> 3B5D E0 |CMP EBX,DWORD PTR SS:[EBP-20] 004DE53F |. 75 09 |JNZ SHORT Favorite.004DE54A 004DE541 |. C745 E4 01000>|MOV DWORD PTR SS:[EBP-1C],1 004DE548 |. EB 03 |JMP SHORT Favorite.004DE54D 004DE54A |> FF45 E4 |INC DWORD PTR SS:[EBP-1C] 004DE54D |> 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4] 004DE550 |. 8A4418 FF |MOV AL,BYTE PTR DS:[EAX+EBX-1] ; 顺序取机器码位数的ASCII值 004DE554 |. E8 EFF9FFFF |CALL Favorite.004DDF48 004DE559 |. 8BF8 |MOV EDI,EAX 004DE55B |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4] 004DE55E |. 8A4430 FF |MOV AL,BYTE PTR DS:[EAX+ESI-1] 004DE562 |. E8 E1F9FFFF |CALL Favorite.004DDF48 004DE567 |. 8945 EC |MOV DWORD PTR SS:[EBP-14],EAX 004DE56A |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4] 004DE56D |. 8B55 E4 |MOV EDX,DWORD PTR SS:[EBP-1C] 004DE570 |. 8A4410 FF |MOV AL,BYTE PTR DS:[EAX+EDX-1] 004DE574 |. E8 CFF9FFFF |CALL Favorite.004DDF48 004DE579 |. 8945 E8 |MOV DWORD PTR SS:[EBP-18],EAX 004DE57C |. 8B45 EC |MOV EAX,DWORD PTR SS:[EBP-14] 004DE57F |. 03C7 |ADD EAX,EDI 004DE581 |. 0345 E8 |ADD EAX,DWORD PTR SS:[EBP-18] 004DE584 |. 99 |CDQ 004DE585 |. F77D E0 |IDIV DWORD PTR SS:[EBP-20] 004DE588 |. 8BF2 |MOV ESI,EDX 004DE58A |. 8B45 EC |MOV EAX,DWORD PTR SS:[EBP-14] 004DE58D |. 03C7 |ADD EAX,EDI 004DE58F |. 0345 E8 |ADD EAX,DWORD PTR SS:[EBP-18] 004DE592 |. 8BD3 |MOV EDX,EBX 004DE594 |. C1E2 02 |SHL EDX,2 004DE597 |. 4A |DEC EDX 004DE598 |. 0FAFD3 |IMUL EDX,EBX 004DE59B |. 03C2 |ADD EAX,EDX 004DE59D |. 85C0 |TEST EAX,EAX 004DE59F |. 79 03 |JNS SHORT Favorite.004DE5A4 004DE5A1 |. 83C0 07 |ADD EAX,7 004DE5A4 |> C1F8 03 |SAR EAX,3 004DE5A7 |. 03F0 |ADD ESI,EAX 004DE5A9 |. 3B75 DC |CMP ESI,DWORD PTR SS:[EBP-24] ; 比较是否小于0X55 004DE5AC |. 7E 14 |JLE SHORT Favorite.004DE5C2 ; 小于则跳 004DE5AE |. 8B45 EC |MOV EAX,DWORD PTR SS:[EBP-14] 004DE5B1 |. 03C7 |ADD EAX,EDI 004DE5B3 |. 0345 E8 |ADD EAX,DWORD PTR SS:[EBP-18] 004DE5B6 |. 03C3 |ADD EAX,EBX 004DE5B8 |. B9 FF000000 |MOV ECX,0FF 004DE5BD |. 99 |CDQ 004DE5BE |. F7F9 |IDIV ECX 004DE5C0 |. 8BF0 |MOV ESI,EAX 004DE5C2 |> 85F6 |TEST ESI,ESI 004DE5C4 |. 7F 15 |JG SHORT Favorite.004DE5DB 004DE5C6 |. 8B45 EC |MOV EAX,DWORD PTR SS:[EBP-14] 004DE5C9 |. 03C7 |ADD EAX,EDI 004DE5CB |. 0345 E8 |ADD EAX,DWORD PTR SS:[EBP-18] 004DE5CE |. 03C3 |ADD EAX,EBX 004DE5D0 |. B9 07000000 |MOV ECX,7 004DE5D5 |. 99 |CDQ 004DE5D6 |. F7F9 |IDIV ECX 004DE5D8 |. 8BF0 |MOV ESI,EAX 004DE5DA |. 46 |INC ESI 004DE5DB |> 3B75 DC |CMP ESI,DWORD PTR SS:[EBP-24] ; 比较是否小于0X55 004DE5DE |. 7E 13 |JLE SHORT Favorite.004DE5F3 ; 小于则跳 004DE5E0 |. 8B45 EC |MOV EAX,DWORD PTR SS:[EBP-14] 004DE5E3 |. 03C7 |ADD EAX,EDI 004DE5E5 |. 0345 E8 |ADD EAX,DWORD PTR SS:[EBP-18] 004DE5E8 |. B9 FF000000 |MOV ECX,0FF 004DE5ED |. 99 |CDQ 004DE5EE |. F7F9 |IDIV ECX 004DE5F0 |. 8BF0 |MOV ESI,EAX 004DE5F2 |. 46 |INC ESI 004DE5F3 |> 8D45 CC |LEA EAX,DWORD PTR SS:[EBP-34] 004DE5F6 |. 8B55 F4 |MOV EDX,DWORD PTR SS:[EBP-C] 004DE5F9 |. 8A5432 FF |MOV DL,BYTE PTR DS:[EDX+ESI-1] ; 取固定字符串对应位的值(取完之后的字符串就是真注册码的一半) 004DE5FD |. E8 0A64F2FF |CALL Favorite.00404A0C 004DE602 |. 8B55 CC |MOV EDX,DWORD PTR SS:[EBP-34] 004DE605 |. 8D45 F0 |LEA EAX,DWORD PTR SS:[EBP-10] 004DE608 |. E8 DF64F2FF |CALL Favorite.00404AEC 004DE60D |. 43 |INC EBX 004DE60E |. FF4D D4 |DEC DWORD PTR SS:[EBP-2C] 004DE611 |.^ 0F85 13FFFFFF \JNZ Favorite.004DE52A 004DE617 |> 8D55 BC LEA EDX,DWORD PTR SS:[EBP-44] 004DE61A |. A1 78ED4E00 MOV EAX,DWORD PTR DS:[4EED78] 004DE61F |. E8 F8F4FFFF CALL Favorite.004DDB1C ; 计算字符串的MD5值 004DE624 |. 8D45 BC LEA EAX,DWORD PTR SS:[EBP-44] 004DE627 |. 8D55 D8 LEA EDX,DWORD PTR SS:[EBP-28] 004DE62A |. E8 61F5FFFF CALL Favorite.004DDB90 004DE62F |. 837D E0 02 CMP DWORD PTR SS:[EBP-20],2 ; 判断机器码位数是否小于等于2 004DE633 |. 7E 1F JLE SHORT Favorite.004DE654 ; 小于等于2,则以05补充。 004DE635 |. 8D45 D8 LEA EAX,DWORD PTR SS:[EBP-28] 004DE638 |. 50 PUSH EAX 004DE639 |. 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20] 004DE63C |. B9 0D000000 MOV ECX,0D 004DE641 |. 99 CDQ 004DE642 |. F7F9 IDIV ECX 004DE644 |. 42 INC EDX ; 机器码位数与0D求余+1 004DE645 |. B9 01000000 MOV ECX,1 ; 这里是在MD5值中所取几个值的初值 004DE64A |. 8B45 D8 MOV EAX,DWORD PTR SS:[EBP-28] ; 把上面计算的MD5值给EAX 004DE64D |. E8 F266F2FF CALL Favorite.00404D44 ; 取机器码位数与0D求余+1在计算的MD5值中位数对应的值 004DE652 |. EB 0D JMP SHORT Favorite.004DE661 004DE654 |> 8D45 D8 LEA EAX,DWORD PTR SS:[EBP-28] 004DE657 |. BA DCE64D00 MOV EDX,Favorite.004DE6DC ; ASCII "05" 004DE65C |. E8 5B62F2FF CALL Favorite.004048BC 004DE661 |> 8D45 B8 LEA EAX,DWORD PTR SS:[EBP-48] 004DE664 |. 8B4D D8 MOV ECX,DWORD PTR SS:[EBP-28] 004DE667 |. 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10] 004DE66A |. E8 C164F2FF CALL Favorite.00404B30 004DE66F |. 8B45 B8 MOV EAX,DWORD PTR SS:[EBP-48] 004DE672 |. 8D55 BC LEA EDX,DWORD PTR SS:[EBP-44] 004DE675 |. E8 A2F4FFFF CALL Favorite.004DDB1C ; 这里显示真注册码。(把它进行MD5计算) 004DE67A |. 8D45 BC LEA EAX,DWORD PTR SS:[EBP-44] 004DE67D |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8] 004DE680 |. E8 0BF5FFFF CALL Favorite.004DDB90 004DE685 |. 33C0 XOR EAX,EAX 004DE687 |. 5A POP EDX 004DE688 |. 59 POP ECX 004DE689 |. 59 POP ECX 004DE68A |. 64:8910 MOV DWORD PTR FS:[EAX],EDX 004DE68D |. 68 CCE64D00 PUSH Favorite.004DE6CC 004DE692 |> 8D45 B8 LEA EAX,DWORD PTR SS:[EBP-48] 004DE695 |. E8 8A61F2FF CALL Favorite.00404824 004DE69A |. 8D45 CC LEA EAX,DWORD PTR SS:[EBP-34] 004DE69D |. BA 02000000 MOV EDX,2 004DE6A2 |. E8 A161F2FF CALL Favorite.00404848 004DE6A7 |. 8D45 D8 LEA EAX,DWORD PTR SS:[EBP-28] 004DE6AA |. E8 7561F2FF CALL Favorite.00404824 004DE6AF |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10] 004DE6B2 |. BA 02000000 MOV EDX,2 004DE6B7 |. E8 8C61F2FF CALL Favorite.00404848 004DE6BC |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 004DE6BF |. E8 6061F2FF CALL Favorite.00404824 004DE6C4 \. C3 RETN
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 计算字符串的MD5值 ----------004DE61F |. E8 F8F4FFFF CALL Favorite.004DDB1C---------- 004DDB1C /$Content$nbsp; 55 PUSH EBP 004DDB1D |. 8BEC MOV EBP,ESP 004DDB1F |. 83C4 A4 ADD ESP,-5C 004DDB22 |. 53 PUSH EBX 004DDB23 |. 8BDA MOV EBX,EDX 004DDB25 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 004DDB28 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 004DDB2B |. E8 A471F2FF CALL Favorite.00404CD4 004DDB30 |. 33C0 XOR EAX,EAX 004DDB32 |. 55 PUSH EBP 004DDB33 |. 68 82DB4D00 PUSH Favorite.004DDB82 004DDB38 |. 64:FF30 PUSH DWORD PTR FS:[EAX] 004DDB3B |. 64:8920 MOV DWORD PTR FS:[EAX],ESP 004DDB3E |. 8D45 A4 LEA EAX,DWORD PTR SS:[EBP-5C] 004DDB41 |. E8 AEFEFFFF CALL Favorite.004DD9F4 ; 初始MD5值 004DDB46 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 取MD5要计算的字符串到EAX 004DDB49 |. E8 966FF2FF CALL Favorite.00404AE4 004DDB4E |. 50 PUSH EAX 004DDB4F |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 004DDB52 |. E8 8D71F2FF CALL Favorite.00404CE4 004DDB57 |. 8BD0 MOV EDX,EAX 004DDB59 |. 8D45 A4 LEA EAX,DWORD PTR SS:[EBP-5C] 004DDB5C |. 59 POP ECX 004DDB5D |. E8 C6FEFFFF CALL Favorite.004DDA28 004DDB62 |. 8BD3 MOV EDX,EBX 004DDB64 |. 8D45 A4 LEA EAX,DWORD PTR SS:[EBP-5C] 004DDB67 |. E8 3CFFFFFF CALL Favorite.004DDAA8 004DDB6C |. 33C0 XOR EAX,EAX 004DDB6E |. 5A POP EDX 004DDB6F |. 59 POP ECX 004DDB70 |. 59 POP ECX 004DDB71 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX 004DDB74 |. 68 89DB4D00 PUSH Favorite.004DDB89 004DDB79 |> 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 004DDB7C |. E8 A36CF2FF CALL Favorite.00404824 004DDB81 \. C3 RETN
初始MD5值 ------004DDB41 |. E8 AEFEFFFF CALL Favorite.004DD9F4---------- 004DD9F4 /$Content$nbsp; C700 01234567 MOV DWORD PTR DS:[EAX],67452301 ; 跟进来到这里!看到下面的常数,标准的MD5算法 004DD9FA |. C740 04 89ABC>MOV DWORD PTR DS:[EAX+4],EFCDAB89 004DDA01 |. C740 08 FEDCB>MOV DWORD PTR DS:[EAX+8],98BADCFE 004DDA08 |. C740 0C 76543>MOV DWORD PTR DS:[EAX+C],10325476 004DDA0F |. 33D2 XOR EDX,EDX 004DDA11 |. 8950 10 MOV DWORD PTR DS:[EAX+10],EDX 004DDA14 |. 33D2 XOR EDX,EDX 004DDA16 |. 8950 14 MOV DWORD PTR DS:[EAX+14],EDX 004DDA19 |. 83C0 18 ADD EAX,18 004DDA1C |. BA 40000000 MOV EDX,40 004DDA21 |. E8 D6A1F2FF CALL Favorite.00407BFC 004DDA26 \. C3 RETN \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
程序用到两个固定字符为: yhn234jukimlpo3982bgtvfr21decxsz34aweq这个进行MD5计算后为:09c8b1c09c1b914bab8cdaf685fb9c96
askdfjk2asd3fjlasdp43lmkoijnh32ubgyvftr3dcxzsaewq10928374653940348023klnlx34cn834efkn
---------------------------------------------------------------------------------------------- 【算法总结】
根据上面算法分析总结C程序算法为: ============================================= #include "Stdio.h" #include "Conio.h" #include "Ctype.h"
int main(void) {static char char1[]={"09c8b1c09c1b914bab8cdaf685fb9c96"}; static char char2[30]; static char char4[]={"askdfjk2asd3fjlasdp43lmkoijnh32ubgyvftr3dcxzsaewq10928374653940348023klnlx34cn834efkn"}; long char3[30],char5[30]; int i,temp; scanf("%s",char2); temp=strlen(char2); for (i=0;i<temp;i++) {char2[i]=tolower(char2[i]); if (char2[i]>=0x30&&char2[i]<=0x39) {if (i==0) {if (char2[0]>=0x30&&char2[0]<=0x39) char3[i]=(char2[i]-0x30+0x1a)+0x1b+(char2[0]-0x30+0x1a); if (char2[0]>=0x61&&char2[0]<=0x7a) char3[i]=(char2[i]-0x30+0x1a)+0x1b+(char2[0]-0x30); } else {if (char2[0]>=0x30&&char2[0]<=0x39) char3[i]=(char2[i]-0x30+0x1a)+(char2[0]-0x30+0x1a); if (char2[0]>=0x61&&char2[0]<=0x7a) char3[i]=(char2[i]-0x30+0x1a)+(char2[0]-0x30); } } if (char2[i]>=0x61&&char2[i]<=0x7a) {if (i==0) {if (char2[0]>=0x30&&char2[0]<=0x39) {char3[i]=(char2[i]-0x30)+0x1b+(char2[0]-0x30+0x1a); } if (char2[0]>=0x61&&char2[0]<=0x7a) {char3[i]=(char2[i]-0x30)+0x1b+(char2[0]-0x30); } } else {if (char2[0]>=0x30&&char2[0]<=0x39) char3[i]=(char2[i]-0x30)+(char2[0]-0x30+0x1a); if (char2[0]>=0x61&&char2[0]<=0x7a) char3[i]=(char2[i]-0x30)+(char2[0]-0x30); } } char5[i]=((((i+1)*(i+1)*0x4-(i+1))+char3[i])>>0x3)+char3[i]%temp; if (char5[i]>0x55) char5[i]=(char3[i]+(i+1))/7+1; printf("%c",char4[char5[i]-1]); } printf("%c",char1[temp%0xd]); getch(); return 0; }
由于刚刚学习编程,设计不好,还请指教。 注册信息在注册表中 [HKEY_LOCAL_MACHINE\SOFTWARE\Favorite] "regCode"="1677bf79d55d8432a06d90f4836cd033" "regUser"="THANKYOU"
机器码为:0000000000000021 注册码为:o3jdljgdq534ssss8 机器码为:h0u09992126464a9g521 注册码为:vjkpgras90nllldapall0上一页 [1] [2] |