网游难民 发表于 2006-7-31 10:22:34

IE收藏夹管理小精灵算法分析/*MD5*/

来源于:http://bbs.pediy.com/showthread. ... E%CA%D5%B2%D8%BC%D0
【破文作者】   YuanQiao[]

【文章题目】   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:
004EB0D8|.64:8920       MOV DWORD PTR FS:,ESP
004EB0DB|.8D45 F8       LEA EAX,DWORD PTR SS:
004EB0DE|.E8 592BFFFF   CALL Favorite.004DDC3C      ;计算机器码(如有兴趣可以进去看一看)
004EB0E3|.8B45 F8       MOV EAX,DWORD PTR SS:
004EB0E6|.8D55 FC       LEA EDX,DWORD PTR SS:
004EB0E9|.E8 AE33FFFF   CALL Favorite.004DE49C    ;计算真注册码的MD5值
004EB0EE|.8B45 FC       MOV EAX,DWORD PTR SS:;把真注册码的MD5值给EAX
004EB0F1|.50            PUSH EAX
004EB0F2|.8D55 F0       LEA EDX,DWORD PTR SS:
004EB0F5|.B8 48B14E00   MOV EAX,Favorite.004EB148      ;ASCII "regCode"
004EB0FA|.E8 D131FFFF   CALL Favorite.004DE2D0   ;计算假注册码的MD5值
004EB0FF|.8B45 F0       MOV EAX,DWORD PTR SS:;把假注册码的MD5值给EAX
004EB102|.8D55 F4       LEA EDX,DWORD PTR SS:
004EB105|.E8 D6E0F1FF   CALL Favorite.004091E0
004EB10A|.8B55 F4       MOV EDX,DWORD PTR SS:
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:,EDX
004EB122|.68 3CB14E00   PUSH Favorite.004EB13C
004EB127|>8D45 F0       LEA EAX,DWORD PTR SS:
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:
004DDC56|.64:8920       MOV DWORD PTR FS:,ESP
004DDC59|.8D45 FC       LEA EAX,DWORD PTR SS:
004DDC5C|.E8 FF000000   CALL Favorite.004DDD60         ;取硬盘物理序列号
004DDC61|.8D55 EC       LEA EDX,DWORD PTR SS:
004DDC64|.8B45 FC       MOV EAX,DWORD PTR SS:
004DDC67|.E8 74B5F2FF   CALL Favorite.004091E0
004DDC6C|.837D EC 00    CMP DWORD PTR SS:,0   ;判断是否取到硬盘物理序列号
004DDC70|.75 08         JNZ SHORT Favorite.004DDC7A
004DDC72|.8D45 FC       LEA EAX,DWORD PTR SS:
004DDC75|.E8 16030000   CALL Favorite.004DDF90          ;取C盘逻辑序列号
004DDC7A|>8D55 E8       LEA EDX,DWORD PTR SS:
004DDC7D|.8B45 FC       MOV EAX,DWORD PTR SS:
004DDC80|.E8 5BB5F2FF   CALL Favorite.004091E0
004DDC85|.837D E8 00    CMP DWORD PTR SS:,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:,EAX
004DDC95|.8955 F4       MOV DWORD PTR SS:,EDX
004DDC98|.68 08DD4D00   PUSH Favorite.004DDD08         ;ASCII "h0u0"
004DDC9D|.FF75 F4       PUSH DWORD PTR SS:      ; /Arg2
004DDCA0|.FF75 F0       PUSH DWORD PTR SS:       ; |Arg1
004DDCA3|.8D45 E4       LEA EAX,DWORD PTR SS:    ; |
004DDCA6|.E8 11BAF2FF   CALL Favorite.004096BC         ; \Favorite.004096BC
004DDCAB|.FF75 E4       PUSH DWORD PTR SS:
004DDCAE|.68 18DD4D00   PUSH Favorite.004DDD18         ;ASCII "a9g5"
004DDCB3|.8D45 FC       LEA EAX,DWORD PTR SS:
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:
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:,EDX
004DDCD7|.68 F9DC4D00   PUSH Favorite.004DDCF9
004DDCDC|>8D45 E4       LEA EAX,DWORD PTR SS:
004DDCDF|.BA 03000000   MOV EDX,3
004DDCE4|.E8 5F6BF2FF   CALL Favorite.00404848
004DDCE9|.8D45 FC       LEA EAX,DWORD PTR SS:
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:,ECX
004DE4AA|.894D CC       MOV DWORD PTR SS:,ECX
004DE4AD|.894D D0       MOV DWORD PTR SS:,ECX
004DE4B0|.894D F4       MOV DWORD PTR SS:,ECX
004DE4B3|.894D F0       MOV DWORD PTR SS:,ECX
004DE4B6|.894D D8       MOV DWORD PTR SS:,ECX
004DE4B9|.8955 F8       MOV DWORD PTR SS:,EDX
004DE4BC|.8945 FC       MOV DWORD PTR SS:,EAX
004DE4BF|.8B45 FC       MOV EAX,DWORD PTR SS:
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:
004DE4D2|.64:8920       MOV DWORD PTR FS:,ESP
004DE4D5|.8D45 F4       LEA EAX,DWORD PTR SS:
004DE4D8|.8B15 74ED4E00 MOV EDX,DWORD PTR DS:   ;取一固定字符串
004DE4DE|.E8 D963F2FF   CALL Favorite.004048BC
004DE4E3|.8D55 D0       LEA EDX,DWORD PTR SS:
004DE4E6|.8B45 FC       MOV EAX,DWORD PTR SS:    ;取机器码
004DE4E9|.E8 CAAAF2FF   CALL Favorite.00408FB8          ;大写字母转换为小写字母
004DE4EE|.8B55 D0       MOV EDX,DWORD PTR SS:
004DE4F1|.8D45 FC       LEA EAX,DWORD PTR SS:
004DE4F4|.E8 C363F2FF   CALL Favorite.004048BC
004DE4F9|.8D45 F0       LEA EAX,DWORD PTR SS:
004DE4FC|.E8 2363F2FF   CALL Favorite.00404824
004DE501|.8B45 FC       MOV EAX,DWORD PTR SS:
004DE504|.E8 DB65F2FF   CALL Favorite.00404AE4         ;计算机器码位数
004DE509|.8945 E0       MOV DWORD PTR SS:,EAX    ;机器码位数给
004DE50C|.8B45 F4       MOV EAX,DWORD PTR SS:
004DE50F|.E8 D065F2FF   CALL Favorite.00404AE4         ;计算固定字符串位数
004DE514|.8945 DC       MOV DWORD PTR SS:,EAX    ;固定字符串位数给
004DE517|.8B45 E0       MOV EAX,DWORD PTR SS:
004DE51A|.85C0          TEST EAX,EAX
004DE51C|.0F8E F5000000 JLE Favorite.004DE617            ;判断机器位数是否为空
004DE522|.8945 D4       MOV DWORD PTR SS:,EAX
004DE525|.BB 01000000   MOV EBX,1
004DE52A|>33F6          /XOR ESI,ESI
004DE52C|.33C0          |XOR EAX,EAX
004DE52E|.8945 E4       |MOV DWORD PTR SS:,EAX
004DE531|.83FB 01       |CMP EBX,1
004DE534|.75 05         |JNZ SHORT Favorite.004DE53B
004DE536|.8B75 E0       |MOV ESI,DWORD PTR SS:
004DE539|.EB 01         |JMP SHORT Favorite.004DE53C
004DE53B|>4E            |DEC ESI
004DE53C|>3B5D E0       |CMP EBX,DWORD PTR SS:
004DE53F|.75 09         |JNZ SHORT Favorite.004DE54A
004DE541|.C745 E4 01000>|MOV DWORD PTR SS:,1
004DE548|.EB 03         |JMP SHORT Favorite.004DE54D
004DE54A|>FF45 E4       |INC DWORD PTR SS:
004DE54D|>8B45 FC       |MOV EAX,DWORD PTR SS:
004DE550|.8A4418 FF   |MOV AL,BYTE PTR DS:   ;顺序取机器码位数的ASCII值
004DE554|.E8 EFF9FFFF   |CALL Favorite.004DDF48
004DE559|.8BF8          |MOV EDI,EAX
004DE55B|.8B45 FC       |MOV EAX,DWORD PTR SS:
004DE55E|.8A4430 FF   |MOV AL,BYTE PTR DS:
004DE562|.E8 E1F9FFFF   |CALL Favorite.004DDF48
004DE567|.8945 EC       |MOV DWORD PTR SS:,EAX
004DE56A|.8B45 FC       |MOV EAX,DWORD PTR SS:
004DE56D|.8B55 E4       |MOV EDX,DWORD PTR SS:
004DE570|.8A4410 FF   |MOV AL,BYTE PTR DS:
004DE574|.E8 CFF9FFFF   |CALL Favorite.004DDF48
004DE579|.8945 E8       |MOV DWORD PTR SS:,EAX
004DE57C|.8B45 EC       |MOV EAX,DWORD PTR SS:
004DE57F|.03C7          |ADD EAX,EDI
004DE581|.0345 E8       |ADD EAX,DWORD PTR SS:
004DE584|.99            |CDQ
004DE585|.F77D E0       |IDIV DWORD PTR SS:
004DE588|.8BF2          |MOV ESI,EDX
004DE58A|.8B45 EC       |MOV EAX,DWORD PTR SS:
004DE58D|.03C7          |ADD EAX,EDI
004DE58F|.0345 E8       |ADD EAX,DWORD PTR SS:
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:;比较是否小于0X55
004DE5AC|.7E 14         |JLE SHORT Favorite.004DE5C2    ;小于则跳
004DE5AE|.8B45 EC       |MOV EAX,DWORD PTR SS:
004DE5B1|.03C7          |ADD EAX,EDI
004DE5B3|.0345 E8       |ADD EAX,DWORD PTR SS:
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:
004DE5C9|.03C7          |ADD EAX,EDI
004DE5CB|.0345 E8       |ADD EAX,DWORD PTR SS:
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:;比较是否小于0X55
004DE5DE|.7E 13         |JLE SHORT Favorite.004DE5F3    ;小于则跳
004DE5E0|.8B45 EC       |MOV EAX,DWORD PTR SS:
004DE5E3|.03C7          |ADD EAX,EDI
004DE5E5|.0345 E8       |ADD EAX,DWORD PTR SS:
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:
004DE5F6|.8B55 F4       |MOV EDX,DWORD PTR SS:
004DE5F9|.8A5432 FF   |MOV DL,BYTE PTR DS:;取固定字符串对应位的值(取完之后的字符串就是真注册码的一半)
004DE5FD|.E8 0A64F2FF   |CALL Favorite.00404A0C
004DE602|.8B55 CC       |MOV EDX,DWORD PTR SS:
004DE605|.8D45 F0       |LEA EAX,DWORD PTR SS:
004DE608|.E8 DF64F2FF   |CALL Favorite.00404AEC
004DE60D|.43            |INC EBX
004DE60E|.FF4D D4       |DEC DWORD PTR SS:
004DE611|.^ 0F85 13FFFFFF \JNZ Favorite.004DE52A
004DE617|>8D55 BC       LEA EDX,DWORD PTR SS:
004DE61A|.A1 78ED4E00   MOV EAX,DWORD PTR DS:
004DE61F|.E8 F8F4FFFF   CALL Favorite.004DDB1C         ;计算字符串的MD5值
004DE624|.8D45 BC       LEA EAX,DWORD PTR SS:
004DE627|.8D55 D8       LEA EDX,DWORD PTR SS:
004DE62A|.E8 61F5FFFF   CALL Favorite.004DDB90
004DE62F|.837D E0 02    CMP DWORD PTR SS:,2      ;判断机器码位数是否小于等于2
004DE633|.7E 1F         JLE SHORT Favorite.004DE654      ;小于等于2,则以05补充。
004DE635|.8D45 D8       LEA EAX,DWORD PTR SS:
004DE638|.50            PUSH EAX
004DE639|.8B45 E0       MOV EAX,DWORD PTR SS:
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:   ;把上面计算的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:
004DE657|.BA DCE64D00   MOV EDX,Favorite.004DE6DC         ;ASCII "05"
004DE65C|.E8 5B62F2FF   CALL Favorite.004048BC
004DE661|>8D45 B8       LEA EAX,DWORD PTR SS:
004DE664|.8B4D D8       MOV ECX,DWORD PTR SS:
004DE667|.8B55 F0       MOV EDX,DWORD PTR SS:
004DE66A|.E8 C164F2FF   CALL Favorite.00404B30
004DE66F|.8B45 B8       MOV EAX,DWORD PTR SS:
004DE672|.8D55 BC       LEA EDX,DWORD PTR SS:
004DE675|.E8 A2F4FFFF   CALL Favorite.004DDB1C            ;这里显示真注册码。(把它进行MD5计算)
004DE67A|.8D45 BC       LEA EAX,DWORD PTR SS:
004DE67D|.8B55 F8       MOV EDX,DWORD PTR SS:
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:,EDX
004DE68D|.68 CCE64D00   PUSH Favorite.004DE6CC
004DE692|>8D45 B8       LEA EAX,DWORD PTR SS:
004DE695|.E8 8A61F2FF   CALL Favorite.00404824
004DE69A|.8D45 CC       LEA EAX,DWORD PTR SS:
004DE69D|.BA 02000000   MOV EDX,2
004DE6A2|.E8 A161F2FF   CALL Favorite.00404848
004DE6A7|.8D45 D8       LEA EAX,DWORD PTR SS:
004DE6AA|.E8 7561F2FF   CALL Favorite.00404824
004DE6AF|.8D45 F0       LEA EAX,DWORD PTR SS:
004DE6B2|.BA 02000000   MOV EDX,2
004DE6B7|.E8 8C61F2FF   CALL Favorite.00404848
004DE6BC|.8D45 FC       LEA EAX,DWORD PTR SS:
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:,EAX
004DDB28|.8B45 FC       MOV EAX,DWORD PTR SS:
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:
004DDB3B|.64:8920       MOV DWORD PTR FS:,ESP
004DDB3E|.8D45 A4       LEA EAX,DWORD PTR SS:
004DDB41|.E8 AEFEFFFF   CALL Favorite.004DD9F4            ;初始MD5值
004DDB46|.8B45 FC       MOV EAX,DWORD PTR SS:      ;取MD5要计算的字符串到EAX
004DDB49|.E8 966FF2FF   CALL Favorite.00404AE4
004DDB4E|.50            PUSH EAX
004DDB4F|.8B45 FC       MOV EAX,DWORD PTR SS:
004DDB52|.E8 8D71F2FF   CALL Favorite.00404CE4
004DDB57|.8BD0          MOV EDX,EAX
004DDB59|.8D45 A4       LEA EAX,DWORD PTR SS:
004DDB5C|.59            POP ECX
004DDB5D|.E8 C6FEFFFF   CALL Favorite.004DDA28
004DDB62|.8BD3          MOV EDX,EBX
004DDB64|.8D45 A4       LEA EAX,DWORD PTR SS:
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:,EDX
004DDB74|.68 89DB4D00   PUSH Favorite.004DDB89
004DDB79|>8D45 FC       LEA EAX,DWORD PTR SS:
004DDB7C|.E8 A36CF2FF   CALL Favorite.00404824
004DDB81\.C3            RETN

初始MD5值
------004DDB41|.E8 AEFEFFFF   CALL Favorite.004DD9F4----------
004DD9F4/$C700 01234567 MOV DWORD PTR DS:,67452301    ;跟进来到这里!看到下面的常数,标准的MD5算法
004DD9FA|.C740 04 89ABC>MOV DWORD PTR DS:,EFCDAB89
004DDA01|.C740 08 FEDCB>MOV DWORD PTR DS:,98BADCFE
004DDA08|.C740 0C 76543>MOV DWORD PTR DS:,10325476
004DDA0F|.33D2          XOR EDX,EDX
004DDA11|.8950 10       MOV DWORD PTR DS:,EDX
004DDA14|.33D2          XOR EDX,EDX
004DDA16|.8950 14       MOV DWORD PTR DS:,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;
static char char4[]={"askdfjk2asd3fjlasdp43lmkoijnh32ubgyvftr3dcxzsaewq10928374653940348023klnlx34cn834efkn"};
long char3,char5;
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>=0x30&&char2<=0x39)
            char3=(char2-0x30+0x1a)+0x1b+(char2-0x30+0x1a);
            if (char2>=0x61&&char2<=0x7a)
               char3=(char2-0x30+0x1a)+0x1b+(char2-0x30);
          }
       else
          {if (char2>=0x30&&char2<=0x39)
            char3=(char2-0x30+0x1a)+(char2-0x30+0x1a);
            if (char2>=0x61&&char2<=0x7a)
               char3=(char2-0x30+0x1a)+(char2-0x30);
          }
       }
    if (char2>=0x61&&char2<=0x7a)
      {if (i==0)
         {if (char2>=0x30&&char2<=0x39)
            {char3=(char2-0x30)+0x1b+(char2-0x30+0x1a);
            }
            if (char2>=0x61&&char2<=0x7a)
               {char3=(char2-0x30)+0x1b+(char2-0x30);
               }
          }
      else
          {if (char2>=0x30&&char2<=0x39)
            char3=(char2-0x30)+(char2-0x30+0x1a);
            if (char2>=0x61&&char2<=0x7a)
               char3=(char2-0x30)+(char2-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);
   }
printf("%c",char1);
getch();
return 0;
}

由于刚刚学习编程,设计不好,还请指教。
注册信息在注册表中

"regCode"="1677bf79d55d8432a06d90f4836cd033"
"regUser"="THANKYOU"

机器码为:0000000000000021
注册码为:o3jdljgdq534ssss8
机器码为:h0u09992126464a9g521
注册码为:vjkpgras90nllldapall0

----------------------------------------------------------------------------------------------
【破解声明】   我是一只小菜鸟,偶得一点心得,愿与大家分享

【版权声明】   本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
----------------------------------------------------------------------------------------------
                                                                                 文章写于2005-11-7 22:19:15

haiyun 发表于 2006-7-31 13:07:37

学习了,可惜看不懂~~呵呵~~

野猫III 发表于 2006-7-31 13:50:19

原帖由 haiyun 于 2006-7-31 13:07 发表
学习了,可惜看不懂~~呵呵~~

动手学习呀~如果难以看懂的话,动手就知道了。

谢谢阿民转来这么好的学习帖~

[ 本帖最后由 野猫III 于 2006-7-31 13:51 编辑 ]

caterpilla 发表于 2006-7-31 15:05:44

学习。。。。。

hbqjxhw 发表于 2006-7-31 18:43:33

“1楼 2005-11-08,00:28【原创】IE收藏夹管理小精灵算法分析”

怎么把2005年的帖都搞来了。


++++++++++++++++++++++++++++++==
偶感觉值得学习就弄来拉~/:D

                                             by:网游难民

[ 本帖最后由 网游难民 于 2006-7-31 20:22 编辑 ]
页: [1]
查看完整版本: IE收藏夹管理小精灵算法分析/*MD5*/