吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6536|回复: 18
收起左侧

[原创] 【算法系列】MD5算法分析 2013.6.20

  [复制链接]
Ericky 发表于 2013-6-20 23:37
本帖最后由 PoJie_小雨 于 2013-6-20 23:56 编辑

【文章标题】:【算法系列】MD5算法分析 2013.6.20
【文章作者】: xiaoyu
【作者邮箱】: hy_xiaoyu@126.com
【保护方式】: none
【使用工具】: PEiD,OllyDbg
【编程语言】:Borland Delphi 6.0 - 7.0
【作者声明】: 主要记录自己的学习过程!欢迎交流学习
【编程语言】:Microsoft Visual C++ 6.0
【下载地址】: http://pan.baidu.com/share/link?shareid=1620370201&uk=892352529
--------------------------------------------------------------------------------
1.首先 查壳  发现无壳
接着我们用OD载入:
1.png
--------------------------------------------------------------------------------
由于是分析算法在函数GetDlgItemTextA下断点
PS:谢谢shark提醒 补充下:
这是一个常用的API函数GetDlgItemText  原型末尾没有A
它的作用是获取对话框文本  属于User32.DLL
而OD在反汇编中将这个函数反汇编成
GetDlgItemTextA或者
GetDlgItemTextW
GetDlgItemTextA 是ASCII版本
而GetDlgItemTextW 是Unicode的版本

运行起来,输入帐号xiaoyu  注册码:1234567890
2.png
点击“注册认证”
程序被断下来,我们F8单步走,马上来到
如图所示:
--------------------------------------------------------------------------------
3.png
继续单步走:
发现了兴奋点:
4.png
单步走:
004028F2   .  6A 00         push 0
004028F4   .  8D8C24 100100>lea ecx,dword ptr ss:[esp+110]
004028FB   .  50            push eax
004028FC   .  51            push ecx
PUSH这几句是保护现场
004028F4   .  8D8C24 100100>lea ecx,dword ptr ss:[esp+110]
这句是将name 存于ECX
走到004028FD的CALL
我们进去看一下
0040261B  |.  53            push ebx
0040261C  |.  55            push ebp
0040261D  |.  56            push esi
0040261E  |.  57            push edi                                 ;  保护现场
0040261F  |.  8D8C24 DC0000>lea ecx,dword ptr ss:[esp+DC]
00402626  |.  E8 15F2FFFF   call MD5Crack.00401840                   ;  MD5算法CALL
我们进去这个算法CALL
00401840  /$  8BC1          mov eax,ecx
00401842  |.  33C9          xor ecx,ecx
00401844  |.  8848 04       mov byte ptr ds:[eax+4],cl
00401847  |.  C700 F0B04000 mov dword ptr ds:[eax],MD5Crack.0040B0F0


0040184D  |.  C740 08 01234>mov dword ptr ds:[eax+8],67452301
00401854  |.  C740 0C 89ABC>mov dword ptr ds:[eax+C],EFCDAB89
0040185B  |.  C740 10 FEDCB>mov dword ptr ds:[eax+10],98BADCFE
00401862  |.  C740 14 76543>mov dword ptr ds:[eax+14],10325476
根据4个常数,很可能就是MD5的初始化,
继续单步走
5.png
有些CALL 大家可以自行分析
最后单步走来到这里:
6.png
进入这个CALL,比较:
将之前存的散列MD5值 与用户的serial相比较


感觉好乱。。。。。。。。。。
【总结算法】:MD5算法将用到4个常数
因此有个地方必须有这四个常数的初始化
本例子中 在之前的MD5初始化的call里出现了

大家可以尝试写个注册机!




【算法系列】MD5算法分析 2013.6.20.zip

159.21 KB, 下载次数: 40, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 4热心值 +4 收起 理由
三少爷的剑 + 1 我很赞同!
淡然出尘 + 1 我很赞同!
zhigaows + 1 我很赞同!
Shark恒 + 1 期待下一次分析!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
Shark恒 发表于 2013-6-20 23:45
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| Ericky 发表于 2013-6-20 23:55
Shark恒 发表于 2013-6-20 23:45
我抢个沙发先?

建议小雨写出GetDlgItemTextA下断的过程与原因。

这是一个常用的API函数GetDlgItemText  原型末尾没有A
它的作用是获取对话框文本  属于User32.DLL
而OD在反汇编中将这个函数反汇编成
GetDlgItemTextA或者
GetDlgItemTextW
GetDlgItemTextA 是ASCII版本
而GetDlgItemTextW 是Unicode的版本

点评

嗯 其实区分度不大..直接全部下端的说 O(∩_∩)O  发表于 2013-6-21 00:07
1354669803 发表于 2013-6-21 00:02
 楼主| Ericky 发表于 2013-6-21 00:03
1354669803 发表于 2013-6-21 00:02
为什么不是下getWindowtext断点呢

GetWindowText 是用来一个窗体的标题的,与你的name 以及serial 无直接联系
zhigaows 发表于 2013-6-21 00:05
学习了…………………………
淡然出尘 发表于 2013-6-21 00:06
膜拜大牛..{:1_931:}
 楼主| Ericky 发表于 2013-6-21 00:09
zhigaows 发表于 2013-6-21 00:05
学习了…………………………

~~~~~~~加油
 楼主| Ericky 发表于 2013-6-21 00:14
淡然出尘 发表于 2013-6-21 00:06
膜拜大牛..

。。。。。。。。别谦虚好吗?

LShang 发表于 2013-6-21 07:38
前来膜拜一下,MD5什么的,听起来就好牛逼。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-5 00:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表