冷血书生 发表于 2006-11-19 10:57:35

【原创】简单的MD5入门算法

【破解日期】 2006年11月19日
【破解作者】 冷血书生
【作者邮箱】 meiyou
【作者主页】 hxxp://www.126sohu.com/
【使用工具】 OD
【破解平台】 Win9x/NT/2000/XP
【软件名称】
【下载地址】 本地
【软件大小】 44k
【加壳方式】 无
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】


00401BE8   8D4424 40         lea eax,dword ptr ss:         ; 用户名
00401BEC   8D50 01             lea edx,dword ptr ds:
00401BEF   90                  nop
00401BF0   8A08                mov cl,byte ptr ds:
00401BF2   40                  inc eax
00401BF3   84C9                test cl,cl
00401BF5   ^ 75 F9               jnz short sn2.00401BF0
00401BF7   6A 32               push 32
00401BF9   8D4C24 10         lea ecx,dword ptr ss:
00401BFD   51                  push ecx
00401BFE   68 EC030000         push 3EC
00401C03   2BC2                sub eax,edx
00401C05   56                  push esi
00401C06   8BD8                mov ebx,eax
00401C08   FFD7                call edi
00401C0A   8D4424 0C         lea eax,dword ptr ss:          ; 注册码
00401C0E   8D50 01             lea edx,dword ptr ds:
00401C11   8A08                mov cl,byte ptr ds:
00401C13   40                  inc eax
00401C14   84C9                test cl,cl
00401C16   ^ 75 F9               jnz short sn2.00401C11
00401C18   2BC2                sub eax,edx
00401C1A   8BD0                mov edx,eax                           ; 注册码长度
00401C1C   0F84 C5000000       je sn2.00401CE7
00401C22   85DB                test ebx,ebx
00401C24   0F84 BD000000       je sn2.00401CE7
00401C2A   33C9                xor ecx,ecx
00401C2C   85D2                test edx,edx
00401C2E   7E 29               jle short sn2.00401C59
00401C30   8A440C 0C         mov al,byte ptr ss:      ; 检测注册码是不是在以下范围内
00401C34   3C 30               cmp al,30
00401C36   7C 04               jl short sn2.00401C3C
00401C38   3C 39               cmp al,39
00401C3A   7E 18               jle short sn2.00401C54
00401C3C   3C 41               cmp al,41
00401C3E   7C 0C               jl short sn2.00401C4C
00401C40   3C 47               cmp al,47
00401C42   7F 08               jg short sn2.00401C4C
00401C44   04 20               add al,20
00401C46   88440C 0C         mov byte ptr ss:,al
00401C4A   EB 08               jmp short sn2.00401C54
00401C4C   3C 61               cmp al,61
00401C4E   7C 65               jl short sn2.00401CB5
00401C50   3C 67               cmp al,67
00401C52   7F 61               jg short sn2.00401CB5
00401C54   41                  inc ecx
00401C55   3BCA                cmp ecx,edx
00401C57   ^ 7C D7               jl short sn2.00401C30
00401C59   33C0                xor eax,eax
00401C5B   85DB                test ebx,ebx
00401C5D   7E 0D               jle short sn2.00401C6C
00401C5F   8A4C14 0B         mov cl,byte ptr ss:      ; 取注册码最后一位
00401C63   304C04 40         xor byte ptr ss:,cl       ; 分别XOR 用户名
00401C67   40                  inc eax
00401C68   3BC3                cmp eax,ebx
00401C6A   ^ 7C F7               jl short sn2.00401C63
00401C6C   8D4424 40         lea eax,dword ptr ss:         ; 保存结果
00401C70   50                  push eax
00401C71   C64414 0F 00      mov byte ptr ss:,0
00401C76   E8 75FEFFFF         call sn2.00401AF0                        /// md5运算
00401C7B   83C4 04             add esp,4
00401C7E   8D4C24 0C         lea ecx,dword ptr ss:
00401C82   51                  push ecx                              ; 注册码-1位
00401C83   50                  push eax                              ; 上面计算结果的MD5值
00401C84   FF15 00704000       call dword ptr ds:[<&KERNEL32.lstrcmp>; kernel32.lstrcmpA      /// 相等就注册成功
00401C8A   85C0                test eax,eax
00401C8C   6A 00               push 0
00401C8E   75 33               jnz short sn2.00401CC3
00401C90   68 98714000         push sn2.00407198                     ; Succeed!
00401C95   68 88714000         push sn2.00407188                     ; Great,注册成功!
00401C9A   8B15 40974000       mov edx,dword ptr ds:
00401CA0   52                  push edx
00401CA1   FF15 DC704000       call dword ptr ds:[<&USER32.MessageBo>; USER32.MessageBoxA
00401CA7   5E                  pop esi


MD5(注册码最后一位分别XOR 用户名)与注册码去掉最后一位比较,相等则成功

--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

mswhy 发表于 2006-11-19 11:17:34

晕啦
先支持一下
再学习

xingbing 发表于 2006-11-19 20:16:01

学习,学习,再学习!

binbinbin 发表于 2006-11-19 23:19:41

纯属支持。辛苦了

快雪时晴 发表于 2006-11-20 10:58:37

路过,看过,赞过

ZHOU2X 发表于 2006-11-20 12:43:49

学习,收藏!!支持!!!!
页: [1]
查看完整版本: 【原创】简单的MD5入门算法