|
来源于:http://bbs.pediy.com/showthread. ... E%CA%D5%B2%D8%BC%D0
【破文作者】 YuanQiao[BCG][]
【文章题目】 IE收藏夹管理小精灵
【下载地址】 http://www.nanhoo.com/pro/favorite/favoriteSetup.exe
----------------------------------------------------------------------------------------------
【破解工具】 PEiD, OllyDbg
【破解难度】 +++初级+++
【破解平台】 WinXP SP2
----------------------------------------------------------------------------------------------
【文章简介】
1.可以录入网址
2.可以查找网址
3.可以打开网址
4.可以对网址分类
5.可以从IE收藏夹导入网址
6.可以把网址导放到IE收藏夹
7.清空IE收藏夹
8.支持本地网络实名(中文上网,把你的收藏夹当做数据库,你根本不用花钱去买网络实名,自己录一下就可以了,要什么有什么,你要什么关键字都可以自已录入)
9.支持广告拦截
10.支持各种搜索引擎(baidu,google,yahoo,sogou,yisou ,只要你在IE的网址上敲入中文,便可以通过各种搜索引擎进行搜索)
----------------------------------------------------------------------------------------------
【破解过程】
用PEiD检测显示《Borland Delphi 6.0 - 7.0》无壳。
运行软件,注册无提示。
用OLLYDBG载入之后,使用字符串参考。
看到一些字符:
\\.\PhysicalDrive0
regCode
regUser
通过下面计算后,说明找的断点是正确的。
004EB0C4 /. 55 PUSH EBP
004EB0C5 |. 8BEC MOV EBP,ESP
004EB0C7 |. 33C9 XOR ECX,ECX
004EB0C9 |. 51 PUSH ECX
004EB0CA |. 51 PUSH ECX
004EB0CB |. 51 PUSH ECX
004EB0CC |. 51 PUSH ECX
004EB0CD |. 33C0 XOR EAX,EAX
004EB0CF |. 55 PUSH EBP
004EB0D0 |. 68 35B14E00 PUSH Favorite.004EB135
004EB0D5 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
004EB0D8 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
004EB0DB |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
004EB0DE |. E8 592BFFFF CALL Favorite.004DDC3C ; 计算机器码(如有兴趣可以进去看一看)
004EB0E3 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004EB0E6 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
004EB0E9 |. E8 AE33FFFF CALL Favorite.004DE49C ; 计算真注册码的MD5值
004EB0EE |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 把真注册码的MD5值给EAX
004EB0F1 |. 50 PUSH EAX
004EB0F2 |. 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
004EB0F5 |. B8 48B14E00 MOV EAX,Favorite.004EB148 ; ASCII "regCode"
004EB0FA |. E8 D131FFFF CALL Favorite.004DE2D0 ; 计算假注册码的MD5值
004EB0FF |. 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10] ; 把假注册码的MD5值给EAX
004EB102 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
004EB105 |. E8 D6E0F1FF CALL Favorite.004091E0
004EB10A |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
004EB10D |. 58 POP EAX
004EB10E |. E8 1D9BF1FF CALL Favorite.00404C30 ; 比较两个MD5值是否相等
004EB113 74 05 JE SHORT Favorite.004EB11A ; 这个就是爆破口
004EB115 |. E8 9EDDFFFF CALL Favorite.004E8EB8
004EB11A |> 33C0 XOR EAX,EAX
004EB11C |. 5A POP EDX
004EB11D |. 59 POP ECX
004EB11E |. 59 POP ECX
004EB11F |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
004EB122 |. 68 3CB14E00 PUSH Favorite.004EB13C
004EB127 |> 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
004EB12A |. BA 04000000 MOV EDX,4
004EB12F |. E8 1497F1FF CALL Favorite.00404848
004EB134 \. C3 RETN
计算机器码
---------004EB0DE |. E8 592BFFFF CALL Favorite.004DDC3C ---------
004DDC3C /$ 55 PUSH EBP
004DDC3D |. 8BEC MOV EBP,ESP
004DDC3F |. 33C9 XOR ECX,ECX
004DDC41 |. 51 PUSH ECX
004DDC42 |. 51 PUSH ECX
004DDC43 |. 51 PUSH ECX
004DDC44 |. 51 PUSH ECX
004DDC45 |. 51 PUSH ECX
004DDC46 |. 51 PUSH ECX
004DDC47 |. 51 PUSH ECX
004DDC48 |. 53 PUSH EBX
004DDC49 |. 8BD8 MOV EBX,EAX
004DDC4B |. 33C0 XOR EAX,EAX
004DDC4D |. 55 PUSH EBP
004DDC4E |. 68 F2DC4D00 PUSH Favorite.004DDCF2
004DDC53 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
004DDC56 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
004DDC59 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004DDC5C |. E8 FF000000 CALL Favorite.004DDD60 ; 取硬盘物理序列号
004DDC61 |. 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]
004DDC64 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004DDC67 |. E8 74B5F2FF CALL Favorite.004091E0
004DDC6C |. 837D EC 00 CMP DWORD PTR SS:[EBP-14],0 ; 判断是否取到硬盘物理序列号
004DDC70 |. 75 08 JNZ SHORT Favorite.004DDC7A
004DDC72 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004DDC75 |. E8 16030000 CALL Favorite.004DDF90 ; 取C盘逻辑序列号
004DDC7A |> 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18]
004DDC7D |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004DDC80 |. E8 5BB5F2FF CALL Favorite.004091E0
004DDC85 |. 837D E8 00 CMP DWORD PTR SS:[EBP-18],0 ; 判断是否取到C盘逻辑序列号
004DDC89 |. 75 35 JNZ SHORT Favorite.004DDCC0
004DDC8B |. 33C0 XOR EAX,EAX
004DDC8D |. E8 B2C2F2FF CALL Favorite.00409F44
004DDC92 |. 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
004DDC95 |. 8955 F4 MOV DWORD PTR SS:[EBP-C],EDX
004DDC98 |. 68 08DD4D00 PUSH Favorite.004DDD08 ; ASCII "h0u0"
004DDC9D |. FF75 F4 PUSH DWORD PTR SS:[EBP-C] ; /Arg2
004DDCA0 |. FF75 F0 PUSH DWORD PTR SS:[EBP-10] ; |Arg1
004DDCA3 |. 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C] ; |
004DDCA6 |. E8 11BAF2FF CALL Favorite.004096BC ; \Favorite.004096BC
004DDCAB |. FF75 E4 PUSH DWORD PTR SS:[EBP-1C]
004DDCAE |. 68 18DD4D00 PUSH Favorite.004DDD18 ; ASCII "a9g5"
004DDCB3 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004DDCB6 |. BA 03000000 MOV EDX,3
004DDCBB |. E8 E46EF2FF CALL Favorite.00404BA4
004DDCC0 |> 8BC3 MOV EAX,EBX
004DDCC2 |. B9 28DD4D00 MOV ECX,Favorite.004DDD28 ; ASCII "21"
004DDCC7 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
004DDCCA |. E8 616EF2FF CALL Favorite.00404B30 ; 取到的序列号后加上21
004DDCCF |. 33C0 XOR EAX,EAX
004DDCD1 |. 5A POP EDX
004DDCD2 |. 59 POP ECX
004DDCD3 |. 59 POP ECX
004DDCD4 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
004DDCD7 |. 68 F9DC4D00 PUSH Favorite.004DDCF9
004DDCDC |> 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
004DDCDF |. BA 03000000 MOV EDX,3
004DDCE4 |. E8 5F6BF2FF CALL Favorite.00404848
004DDCE9 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004DDCEC |. E8 336BF2FF CALL Favorite.00404824
004DDCF1 \. C3 RETN
计算真注册码的MD5值
---------004EB0E9 |. E8 AE33FFFF CALL Favorite.004DE49C------------
004DE49C /$ 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 /$ 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 /$ 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=tolower(char2);
if (char2>=0x30&&char2<=0x39)
{if (i==0)
{if (char2[0]>=0x30&&char2[0]<=0x39)
char3=(char2-0x30+0x1a)+0x1b+(char2[0]-0x30+0x1a);
if (char2[0]>=0x61&&char2[0]<=0x7a)
char3=(char2-0x30+0x1a)+0x1b+(char2[0]-0x30);
}
else
{if (char2[0]>=0x30&&char2[0]<=0x39)
char3=(char2-0x30+0x1a)+(char2[0]-0x30+0x1a);
if (char2[0]>=0x61&&char2[0]<=0x7a)
char3=(char2-0x30+0x1a)+(char2[0]-0x30);
}
}
if (char2>=0x61&&char2<=0x7a)
{if (i==0)
{if (char2[0]>=0x30&&char2[0]<=0x39)
{char3=(char2-0x30)+0x1b+(char2[0]-0x30+0x1a);
}
if (char2[0]>=0x61&&char2[0]<=0x7a)
{char3=(char2-0x30)+0x1b+(char2[0]-0x30);
}
}
else
{if (char2[0]>=0x30&&char2[0]<=0x39)
char3=(char2-0x30)+(char2[0]-0x30+0x1a);
if (char2[0]>=0x61&&char2[0]<=0x7a)
char3=(char2-0x30)+(char2[0]-0x30);
}
}
char5=((((i+1)*(i+1)*0x4-(i+1))+char3)>>0x3)+char3%temp;
if (char5>0x55)
char5=(char3+(i+1))/7+1;
printf("%c",char4[char5-1]);
}
printf("%c",char1[temp%0xd]);
getch();
return 0;
}
由于刚刚学习编程,设计不好,还请指教。
注册信息在注册表中
[HKEY_LOCAL_MACHINE\SOFTWARE\Favorite]
"regCode"="1677bf79d55d8432a06d90f4836cd033"
"regUser"="THANKYOU"
机器码为:0000000000000021
注册码为:o3jdljgdq534ssss8
机器码为:h0u09992126464a9g521
注册码为:vjkpgras90nllldapall0
----------------------------------------------------------------------------------------------
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
----------------------------------------------------------------------------------------------
文章写于2005-11-7 22:19:15 |
|