吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 10760|回复: 25
收起左侧

[原创] 新手--md5算法分析以及判断软件是否采用md5加密算法

  [复制链接]
肥头东 发表于 2016-11-11 17:10
最近几天才开始入门破解,昨天在研究md5算法,今天吾爱开放注册,于是注册了个账号,顺便分享一下昨天的一点心得(新人第一篇文章,如有错误请大神指教,勿喷)
首先,目标是一个叫做"皇帝取名"的软件,在吾爱的论坛中已经有了这个软件的破解分析了 http://www.52pojie.cn/thread-158898-1-1.html,自己昨天开始看md5的算法,也是缘于这篇文章,这篇文章的思路很清晰,但是就是一点不明白,作者是怎么知道这个软件用了md5算法的?反正我这菜鸟看不出来,根据文章来看,是在call 皇室取名.004A2F94 这里进行了md5加密的,于是我下了这个软件,通过断点也来到了这个位置,f7步入进行分析,但是看不懂这个call里面是怎么运算的,于是我就放弃了分析call的想法,直接上网去查md5的算法原理,得知md5算法的大致思路如下:


md5算法有四个固定的起始常量,它们被称为链接常量:
                 A=0x67452301
                 B=0xEFCDAB89
                 C=0x98BADCFE
                 D=0x10325476

在OD数据段中为:
01 23 45 67 89 AB CD EF FE DC BA 98 76 54 32 10

假设我们输入的明文为bla,这个bla的位数为8x

则md5的第一步,就是填充这个bla的长度,使得位数模512=448,比如bla="肥头东",字节数为6,那么位数为8x6=64位,则要填充的长度为448-64=384(位),这里有个特殊情况,就是如果一开始bla的长度模512就是448的话,不是不填充,而是填充512位,也就是说,填充的长度为1-512,不为0。

接下来,第二步,就是再填充一个64位,这样的话组成的bla的长度正好是512的倍数(因为后面主循环的处理是按512位为一个分组的),这个64位存放的值是我们起始的明文的长度(就是上面"肥头东"的长度,8x6=64)

这上面两步用易语言实现的代码就是:(渣代码轻喷hhh)
无标题3.png

然后,声明四个变量a,b,c,d,令:

          a = A  
          b = B  
          c = C  
          d = D

接着,就  是按512位作为一个分组,进行主循环,主循环有四轮,每一轮有16次,大致如下(限于篇幅,只列出部分,完整的请大家去搜md5算法,到处都是):

     第一轮:
        FF(a,b,c,d,mj0,7,ti1)
        FF(d,a,b,c,mj1,12,ti2)
        FF(c,d,a,b,mj2,17,ti3)
        FF(b,c,d,a,mj3,22,ti4)
        ...  共16次
     第二轮:
        GG(a,b,c,d,mj1,5,ti17)
        GG(d,a,b,c,mj6,9,ti18)
        GG(c,d,a,b,mj11,14,ti19)
        GG(b,c,d,a,mj0,20,ti20)
         ...  共16次
     第三轮:
        HH(a,b,c,d,mj5,4,ti33)
        HH(d,a,b,c,mj8,11,ti34)
        HH(c,d,a,b,mj11,16,ti35)
        HH(b,c,d,a,mj14,23,ti36)
         ...  共16次
     第四轮:
        II(a,b,c,d,mj0,6,ti49)
        II(d,a,b,c,mj7,10,ti50)
        II(c,d,a,b,mj14,15,ti51)
        II(b,c,d,a,mj5,21,ti52)
         ...  共16次

FF(a,b,c,d,mj,s,ti): a = b + (a + F(b,c,d) + mj + ti) <<<s
GG(a,b,c,d,mj,s,ti): a = b + (a + G(b,c,d) + mj + ti) <<<s
HH(a,b,c,d,mj,s,ti): a = b + (a + H(b,c,d) + mj + ti) <<<s
II(a,b,c,d,mj,s,ti): a = b + (a + I(b,c,d) + mj + ti) <<<s

其中:
F(b,c,d) = (b & c) | ((~b) & d)
G(b,c,d) = (b & d) | (c & (~d))
H(b,c,d) = b^c^d
I(b,c,d) = c^(b | (~d))

经过这四轮后,a+=A,b+=B,c+=C,d+=D,然后判断还有没有下一512位分组,如果有,继续进行主循环,最后将a,b,c,d加起来就是了(比如a=0x6ADB27E2,b=0x343D0A99,c=0x21F95127,d=0xAFC29BB6,那么最终的结果就是 E227DB6A + 990A3D34 + 2751F921 + B69BC2AF=E227DB6A990A3D342751F921B69BC2AF

把md5算法理清了,问题是,在破解过程(这里指的是用OD),怎么知道是否用了md5算法呢?回过头看上面的算法,得知如果使用这个md5算法,则肯定要给四个链接变量赋值,那么我们可以用特征码来找,于是我通过**ASMtoE**这款工具进行运算,得出下面的特征码:
    C7 00 01234567 mov [eax],0x67452301
    C7 40 89ABCDEF mov [eax+0x4],0xEFCDAB89
    C7 40 FEDCBA98 mov [eax+0x8],0x98BADCFE
    C7 40 76543210 mov [eax+0xC],0x10325476
或者
    C7 02 01234567 mov [edx],0x67452301
    C7 42 89ABCDEF mov [edx+0x4],0xEFCDAB89
    C7 42 FEDCBA98 mov [edx+0x8],0x98BADCFE
    C7 42 76543210 mov [edx+0xC],0x10325476

然后在上面那个软件ctrl+b查找试试:
无标题2.png

哈哈,果然,这样的话就可以判断是不是用了md5算法了。

总结:
在练习算法分析破解时,如果经过了某个call之后,产生了一个你不知道的新数,那么尝试进去这个call里面去分析,如果call一层又一层,我们可以尝试用特征码的方式判断加密方式,比如如果我们用上面的特征码一查,如果查到了,那么就知道用了md5算法,对接下来的破解很有帮助。这里顺便还用易语言做了个md5算法的软件。

地址: https://pan.baidu.com/s/1o81zb4Y  (用的易语言)

如果过程有错误,请各位纠正

免费评分

参与人数 1热心值 +1 收起 理由
Hmily + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

Hmily 发表于 2016-12-9 16:28
有类似成熟的算法扫描工具可以借鉴:

http://down.52pojie.cn/Tools/Crptography/

Hash & Crypto Detector v1.4.rar 和 Keygener Assistant v2.1.0.rar
GANDALF111 发表于 2018-9-18 14:42
楼主你好,感觉只有那四个作为特征值还是不够的,如果作者做了一些调整,估计还是搞不定。能再写一篇关于md5算法反汇编后的前后比对文章吗?
小悟空 发表于 2016-11-11 21:07
z236293824 发表于 2016-11-12 04:29 来自手机
谢谢了,但是有没有aes加密的特征码?
BME 发表于 2016-11-12 13:15
新手路过,给赞一个,支持一下
BabyCry 发表于 2016-11-12 13:23
同天注册 看样子楼主不是像我一样的小白 基础文章都是在哪读的?
203156 发表于 2016-11-12 13:23
谢谢分享,   不知道 有没有其他的教学呢
封印者 发表于 2016-11-12 13:29
研究下,谢谢楼主
 楼主| 肥头东 发表于 2016-11-12 18:43 来自手机
z236293824 发表于 2016-11-12 04:29
谢谢了,但是有没有aes加密的特征码?

现在还没研究aes,,如果有的话会写一篇的~
 楼主| 肥头东 发表于 2016-11-12 18:44 来自手机
BabyCry 发表于 2016-11-12 13:23
同天注册 看样子楼主不是像我一样的小白 基础文章都是在哪读的?

看雪的kssd文库有很多不错的内容~
卧哟 发表于 2016-11-12 18:55 来自手机
智商有限  目前没有能力。。。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-17 01:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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