吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3189|回复: 5
收起左侧

[第六题] 【挑战】【吾爱破解2014CrackMe大赛】【第六组】-- RedAngel

[复制链接]
a070458 发表于 2014-10-28 00:10
本帖最后由 L4Nce 于 2014-10-29 22:28 编辑

搞到头晕了`~
附上KEYGEN ~ 这次应该可以了吧

keygen.rar (249.95 KB, 下载次数: 21)

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

 楼主| a070458 发表于 2014-10-28 00:11
貌似没有设置权限 请管理员设置设置
ximo 发表于 2014-10-28 10:23
 楼主| a070458 发表于 2014-10-28 13:08
昨天太困了 搞完就跑去睡觉了 先补上分析~
CM一开始通过DLL 的导出函数 null 进行MD5算法
大概就是 KEY1=MD5(用户名+年+日)
按钮事件跟进后
00401E7C   .  E8 7F010000   call CrackMe.00402000                    ;  此call获取null函数地址然后跳进去DLL指向MD5算法


然后就是此call
00401EAC   .  E8 5F020000   call CrackMe.00402110                    ;  ?????
简单对注册码进行 加法运算然后后面对字符串success 比较   (其实这里应该是迷惑的,不过从中可以看出解出来的key应该满足0-9  A-F  还有个分割字符用的"|")

然后就是ShowWindow
然后就是到这里了 00403FA0  /.  55            push ebp
要留意大概是这里
[C++] 纯文本查看 复制代码
004040A8  |.  50            push eax
004040A9  |.  51            push ecx
004040AA  |.  6A 7C         push 0x7C
004040AC  |.  68 70765B00   push CrackMe.005B7670
004040B1  |.  8D4D E4       lea ecx,[local.7]
004040B4  |.  C745 E8 00000>mov [local.6],0x0
004040BB  |.  E8 A0EFFFFF   call CrackMe.00403060       
004040C0  |.  50            push eax                                 ;                                           //通过"|"分割文本
004040C1  |.  FF75 E8       push [local.6]                           ;                    //  eax==数组长度,local.6=&str
004040C4  |.  E8 17000000   call CrackMe.004040E0                    ;           //重要call

然后就是004040C4 |. E8 17000000 call CrackMe.004040E0
里面大概就是通过0040340D  |.  FF15 E8745500 call dword ptr ds:[<&SHLWAPI.StrToIntExA>; \StrToIntExA
将str 转为int  然后
然后通过00404175  |.  E8 E6040000   |call CrackMe.00404660                   ;       //生成一个buf[0x50]
001ACFF0  00 08 00 08 00 08 00 08 00 00 00 00 00 00 00 00  ............
001AD000  08 00 08 00 08 6A 08 42 08 00 00 00 00 00 00 00  ..jB.......
001AD010  00 00 4D 00 4E 00 08 43 08 00 00 00 00 00 00 00  ..M.N.C.......
001AD020  08 00 08 00 08 00 08 50 00 00 00 00 00 00 00 00  ...P........
001AD030  00 08 00 08 00 08 00 00 00 00 00 00 00 00 00 00  .............

后面大概是这样
1+2位 == 0|8|42|4d|4e|6a|43|50     要在buf里出现的
1位==42|4d|        分支跳转
3位==1|2|3      在分支42时第三位控制(在buf寻找到的1+2位)进行上移(-0x10),左移(-1)右移(+1) ,4D时控制进行特定跳动

还有一个50分支没有进去看过,还有其他一些限制
然后就是
00404246  |> \56            |push esi
00404247  |.  E8 14040000   |call CrackMe.00404660      
0040424C  |.  56            |push esi
0040424D  |.  E8 6E060000   |call CrackMe.004048C0                   ;  //关键call
00404252  |.  84C0          |test al,al

然后就是0040424D  |.  E8 6E060000   |call CrackMe.004048C0
里面大概就是控制6A的移动和比较6A是否是正确位置,如果是就跳向成功
通过前面他对注册码字符串的判断,貌似步数不能多于4步~~~~
这里我用笨方法, 写个脚本 把0x6a放在buf的位置中一次次尝试,
发现buf[4|6]  =====OK  (貌似还有其他的办法)
然后再尝试逆推出路线,
最后得出“420E0244|4D1D0144”
所以前面通过注册码解除的key 应该是“420E0244|4D1D0144”
有了它  注册机就好办了


附上源码
复件 2.rar (108.3 KB, 下载次数: 10)

L4Nce 发表于 2014-10-29 22:23
注册机有效
最后得分:338
干的不错。
〇〇木一 发表于 2014-10-29 22:42
支持支持,看了你的分析,发现我自己想的也有问题。
不过这里的 M是马,P是炮,B是兵,j是将啊。我也是看了半天才领会

免费评分

参与人数 1热心值 +1 收起 理由
a070458 + 1 原来如此~~~~~

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-22 05:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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