论坛: 编程破解 标题: [转帖]简单的MD5入门算法 复制本贴地址    
作者: yongmin [yongmin]    论坛用户   登录
【破解日期】 2006年11月19日
【破解作者】 冷血书生
【作者邮箱】 meiyou
【作者主页】 hxxp://www.126sohu.com/
【使用工具】 OD
【破解平台】 Win9x/NT/2000/XP
【软件名称】
【下载地址】 本地
【软件大小】 44k
【加壳方式】 无
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】



CODE:[Copy to clipboard]00401BE8    8D4424 40          lea eax,dword ptr ss:[esp+40]        ; 用户名
00401BEC    8D50 01            lea edx,dword ptr ds:[eax+1]
00401BEF    90                  nop
00401BF0    8A08                mov cl,byte ptr ds:[eax]
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:[esp+10]
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:[esp+C]          ; 注册码
00401C0E    8D50 01            lea edx,dword ptr ds:[eax+1]
00401C11    8A08                mov cl,byte ptr ds:[eax]
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:[esp+ecx+C]        ; 检测注册码是不是在以下范围内
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:[esp+ecx+C],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:[esp+edx+B]        ; 取注册码最后一位
00401C63    304C04 40          xor byte ptr ss:[esp+eax+40],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:[esp+40]        ; 保存结果
00401C70    50                  push eax
00401C71    C64414 0F 00        mov byte ptr ss:[esp+edx+F],0
00401C76    E8 75FEFFFF        call sn2.00401AF0                        /// md5运算
00401C7B    83C4 04            add esp,4
00401C7E    8D4C24 0C          lea ecx,dword ptr ss:[esp+C]
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:[409740]
00401CA0    52                  push edx
00401CA1    FF15 DC704000      call dword ptr ds:[<&USER32.MessageBo>; USER32.MessageBoxA
00401CA7    5E                  pop esi


MD5(注册码最后一位分别XOR 用户名)与注册码去掉最后一位比较,相等则成功
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

地主 发表时间: 06-11-25 10:07

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号