currwin 发表于 2014-10-31 00:21

【吾爱破解2014CrackMe大赛】【第十组】

       算法很简单,不过我手头上没有DES的算法库,或者说,我手头上的DES库算出的结果与源程序不一致,所以就只能算了。这里大致说一下算法吧。 代码开始验证部分都在:00402FB8,很容易就会找到的了。
       首先,程序会取当前的时间,运算得到一个DWORD的数字a
       然后,读入用户名,与a一起运算得到另一个DWORD的数字b
       对这个b进行base64加密,得到8位的字符串 #key
       然后用这个key作为des的秘钥,加密 {01, 00, 00, 00, 31, 00, 00, 00}。得到key2
       最后利用key2DES解码Pass,得到的Pass为一个字符串。到底内容是什么就没有继续研究了。
       所以实际上算法可能会有点差异,就不说了。

       因为跑到这里关键的地方就已经出现了。

00403F63 >    8B45 F8       MOV   EAX, DWORD PTR SS:                   ;loc_403F63,Get bool

00403F66|.A2 8F534600   MOV   BYTE PTR DS:[<byte_46538F>], AL               ;Set Flag, 设置成功或失败标志

      前面的call返回一个bool类型的数据,然后根据这个数组设置全局byte变量,,这里就是设置bSuccess了,所以就在这里下手,赋值为1就OK了。


00403F63 >    33C0          XOR   EAX, EAX                                    ;loc_403F63
00403F65      40            INC   EAX
00403F66      A2 8F539090   MOV   BYTE PTR DS:, AL                  ;Set Flag, 设置成功或失败标志

      恰好空间足够,3个字节足以爆破了。


currwin 发表于 2014-10-31 00:23

前面代码复制的时候出现了错误,实际上修改的代码就只有00403F63一句。最终的修改结果为:

00403F63 >    33C0          XOR   EAX, EAX                                    ;loc_403F63
00403F65      40            INC   EAX
00403F66      A2 8F534600   MOV   BYTE PTR DS:[<byte_46538F>], AL               ;Set Flag, 设置成功或失败标志

currwin 发表于 2014-10-31 22:49

       补上一个keygen。算法挺简单的,程序里面虽然用了DES算法,但是keygen本身并不需要DES算法的。看一下我的记录就知道了。
       大概算法如下:
fabs((年+月+日+时+分+秒)*520)-->= a(转INT 64)取int 32
(a+NameLen) --> (INT 64) = b
(b * 520 + 1314) --> (INT 64) = c
BASE64(c) = key   (DES)

key2 = DESEncode("1", key);
Check = DESDecode(key2, Pass);   -->>Pass = key
if(Check == 1)
    Success


      值得注意的是 ,注册码一秒一变,所以输入需要非常大的手速,不要紧,反正手速什么的,早就练到登峰造极了。。。哈哈,开个玩笑。
   程序获取时间的位置在:
004030BE|.E8 4DA70300   CALL    CrackMe.0043D810               ;分
004030DE|.E8 7DA70300   CALL    CrackMe.0043D860               ; 秒
    对应的改一下就可以了。



Kido 发表于 2014-11-5 12:57

本帖最后由 Kido 于 2014-11-5 13:21 编辑

最后成绩:256分
评委评价:攻击成功。
谢谢参与,请继续加油。

mi426878 发表于 2016-3-6 21:55

学习,支持啊

hewap 发表于 2016-4-16 13:16

学习了!楼主棒棒的

o6o7o5 发表于 2016-5-1 10:54

学习了!楼主棒棒的!!!!!!!

侧耳聆听 发表于 2016-5-3 15:42

膜拜楼主啊。

yarnam 发表于 2016-5-4 20:17

学习了!楼主棒棒的

szac29964 发表于 2016-5-9 20:06

错了非常的66666
页: [1] 2
查看完整版本: 【吾爱破解2014CrackMe大赛】【第十组】