吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 16638|回复: 34
上一主题 下一主题
收起左侧

[原创] CrackMe005全破详解(逆向分析部分已补充完整)

  [复制链接]
跳转到指定楼层
楼主
葫芦娃很厉害 发表于 2019-1-17 21:55 回帖奖励
本帖最后由 葫芦娃很厉害 于 2019-2-2 09:47 编辑

【流程】
我这两天在搞新手教程,发现CrackMe005似乎都是半破状态,虽然这个CrackMe确实有点故意恶搞,但是还是接招吧!当作来吾爱破解的第一篇文章吧!
先说如何按照CrackMe作者的要求,完全通过逆向分析来注册成功的办法

【对原程序的改动说明】
1.脱了壳(手脱或peid脱,492K大小的那个版本,感觉脱的不好,很多内容稍微有点错位,有高人知道为啥的请指点)
2.用upx专用脱壳脱后,448K大小的版本,反汇编分析的比较准确
3.改动了要求的X盘盘符为C,为了方便
4.其他均为改动,均为作者原意

【注册成功动图】



【注册步骤】
1.复制目录下ok.txt,到C:\ajj.126.c0m\j\o\j\o\ok.txt,这里我给原版的X盘改成C盘了,不然就改分区。

2.这时就应该可以显示出Edit2文本框,但是是禁用状态。

3.右键点击5次注册按钮(注意是右键)。
4.左键双击图框区空白处(不能点着图),Edit2文本框禁用解除。

5.用户名输入ajj
6.Edit2文本框内输入1_345,78后左键双击Edit2输入框中任何位置。
7.在图片是“性相近”的时候,鼠标从软件框右下脚移入软件框内。

8.在图片是“性本善”的时候,鼠标从软件框左下角移入软件框内。
9.这时候应该label3显示出数字,是0,1,2,3这四个当中的其中一个。

10.将数字输入我写的注册机,点击生成最后一步的点击方案。

11.按照方案点击图案,注册成功


【说明】
破文,逆向过程有空了补发,先发方法和注册机和源码,喜欢的玩把
源码中,我求的是点击次数总和最小的方法,因为其实有很多组合,只求效率最高的方法,源码写的比较臃肿,为的是新手好读懂

【源码】

[C++] 纯文本查看 复制代码
void CCM005Dlg::OnOK() 
{
        // TODO: Add extra validation here
        
        //CDialog::OnOK();

        char szKey[1024]={0};
        int n = 0;
        GetDlgItemText(IDC_EDIT1,szKey,1024);
        if(!strlen(szKey))
        {

                MessageBox("请按照【前期步骤】获取正确数值后再生成方案!","友情提示");
                return;
        }
        n = GetDlgItemInt(IDC_EDIT1);
        

        switch(n){
    case 1  :
                n=0x3D;
                break; 
        case 2  :
                n=0x34;
                break; 
        case 3  :
                n=0xDF;
                break; 

        default : // 可选的
                n=0x41;
}

        //sprintf(szKey,"%d",n);
        //SetDlgItemText(IDC_EDIT2,szKey);


                struct  image
        {
                char szname[7];
                int nNumber ;
                int nLef;
                int nRight;
        };
        image aImage[4]={0};

        sprintf(aImage[0].szname,"人之初");
        aImage[0].nNumber = 1;
        aImage[0].nLef = 0x2;
        aImage[0].nRight = 0x11;
        
        sprintf(aImage[1].szname,"性本善");
        aImage[1].nNumber = 2;
        aImage[1].nLef = 0x3;
        aImage[1].nRight = 0x13;
        
        sprintf(aImage[2].szname,"性相近");
        aImage[2].nNumber = 3;
        aImage[2].nLef = 0x5;
        aImage[2].nRight = 0x17;
        
        sprintf(aImage[3].szname,"习相远");
        aImage[3].nNumber = 4;
        aImage[3].nLef = 0x7;
        aImage[3].nRight = 0x1B;
/************************************************************************/
/* 设计原则,选择出点击次数最少的方案
/* iR作为大数数组下标,iL作为小数数组下标,j大数商,k小数商,求i+j最小值                                                                
/************************************************************************/
    int nRes = 112;
        int nIL = 0;
        int nIR = 0;
        int nJ = 0;
        int nK =0 ;
        for (int iL=0;iL<4;iL++)
        {
                for (int iR=0;iR < 4;iR++)
                {
                
                for (int j=1;j<=14;j++)
                {
                        for (int k =0;k<=112;k++)
                        {
                                
                                if ((aImage[iR].nRight*j + aImage[iL].nLef*k == n) && (nRes> j+k))
                                {
                    nIL = iL;
                    nIR = iR;
                                        nJ = j;
                                        nK = k;
                                        nRes = j+k ;
                                }
                                
                        }
                }
                }

        }

        sprintf(szKey,"在“%s”图片时左键点击图片%d次\r\n\r\n在“%s”图片时右键点击图片%d次\r\n\r\n即可注册成功!",aImage[nIL].szname,nK,aImage[nIR].szname,nJ);
        SetDlgItemText(IDC_EDIT2,szKey);
}



【逆向分析过程】

一.DedeDark梳理事件、控件信息



二.动态分析1.根据字符串定位总判断位置字符串“注册了”,“厉害厉害真佩服”入手,定位发现是timer2事件函数,五个判断不停的判断,如图

可以看到判断跟6个值有关,分别是[ebx+304]、[ebx+308]、[ebx+310]、[ebx+318]、[ebx+314]、[ebx+31C],我们下文所有就对其简称做304、308、310、318、314、31C


2.逐个判断层层分析
我们从简单往复杂,并结合他们之间内在的逻辑先后顺序,去逐个分析,顺序分别是31C、304、308、310、314和318,其中最难的是310,方法是常量跟踪法,即在OD中点击 查找→所有常量 ,看看都那些地方对这些值有操作
31C

  • 总判断目标:31C值,不能等于0x3E7
  • 相关事件函数:Button1Click
  • 最终逆向分析结论:Buton1Click事件不能被触发,否则31C就会被赋值0x3E7,即不能点击注册按钮,这里需要注意click事件和mousedown事件,click必须是一个按下和抬起的全过程,而且鼠标位置都在按钮控件范围内,而mousedwon事件按下就是
  • 具体逆向分析过程如下
所有常量查找结果,如下

反汇编代码如下

呵呵就一行,确实简单吧

304

  • 总判断目标:304值,不能等于0xC34
  • 相关事件函数:FormCreat
  • 最终逆向分析结论:FormCreat生成表单的事件函数中,会对一个固定路径检查是否有合规内容的合规文件,有则,显示出隐藏的Edit2控件
  • 具体逆向分析过程如下
所有常量查找结果,如下

反汇编代码如下

注意:我这里已经把,CrackMe开发者要求的X盘符改为了C盘符,为的是方便

308

  • 总判断目标:308值,不能等于0x230D
  • 相关事件函数:Button1MouseDown、Panel1DblClick
  • 最终逆向分析结论:308初始值是由FormCreat函数初始化为0x28E,在Button1MouseDown事件中,右键一次则308值增加0x3,最终目标是0x29D,因为等于0x29D后,Panel1DblClick事件就可以解禁Edit2控件,则0x29D减去0x28E再除以0x3最后结果等于5,即右键点击注册按钮5次,再去双击panel1控件没有图的地方,就可以解禁Edit2控件
  • 具体逆向分析过程如下
所有常量查找结果,如下

反汇编代码如下


310 中嵌套 30C,最复杂的地方

  • 总判断目标:310值,必须等于0xF94
  • 相关事件函数:FormMouseMove、Edit2DblClick
  • 最终逆向分析结论:310的值要想最终被赋值0xF94,必须完成三重判断,第一个是当控件ID是0xE20时,即是image3"性相近"的时候,FormMouseMove捕捉的XY坐标都足够大,即右下脚,满足则310被赋值0x10,第二个是当控件ID是0x2DC时,即image2"性本善"的时候,FormMouseMove捕捉的X坐标足够小、Y坐标足够大,第三个是,30C不能等于初始值0x9, 30C被赋值的条件是Edit2中的字符串长度是8位,且第二位是"_",第6位是"," ,我们写1_345,78是符合要求的,同时要求用户名长度是3的整数倍,然后左键双击Edit2控件,即可给30C赋值,具体赋值结果又跟你的磁盘剩余空间有关。当上面这一系列嵌套判断都合规后,则完成310赋值0xF94,同时若是用户名是"ajj",则显示隐藏控件ID是0x2FC的Label3,显示值是30C
  • 具体逆向分析过程如下
310所有常量查找结果,如下

310反汇编代码如下

发现嵌套30C,那么继续常量查找30C,如下

30C反汇编代码如下


这里其实是这个crackme最难的地方了,其实逻辑并不复杂,需要耐性和记录给理清晰即可
314和318

  • 总判断目标:314的值等于318的值
  • 相关事件函数:image1~4MouseDown
  • 最终逆向分析结论:其实314的值在上一个流程中已经赋值完毕,314的值取决于30C的值,30C分别是0、1、2、3的时候,314分别是0x41、0x3D、0x34、0xDF,而318的值,则是点击1~4幅图片,区分左右键,分别自增不同的数值,具体如下方图片,最终要求318的值等于314的值
  • 具体逆向分析过程如下
所有常量314查找结果,如下

314反汇编代码如下

318所有常量查找结果,如图



至此,如下图timer2所有的总判断全部过关,所以timer2每次触发,都将走注册成功的流程,是不是感觉很刺激,跃跃欲试的,去网盘中下载,去折磨自己的吧

附件链接
链接: https://pan.baidu.com/s/19exdO4eGSQ6kD7yC8CjsUA 提取码: cf4q

免费评分

参与人数 8威望 +2 吾爱币 +17 热心值 +8 收起 理由
osboy + 1 + 1 我很赞同!
Housejar + 1 + 1 谢谢@Thanks!
WYWZ + 1 + 1 谢谢@Thanks!
pk8900 + 3 + 1 分析的很详细,这个Crackme够变态。支持!
Hmily + 2 + 8 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
抱书人人 + 1 + 1 谢谢@Thanks!
15237633705 + 1 + 1 我很赞同!
MochengXi + 1 + 1 我很赞同!

查看全部评分

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

推荐
地狱小痴 发表于 2019-1-18 14:20
大佬们小弟来取取经
推荐
 楼主| 葫芦娃很厉害 发表于 2019-1-18 14:37 |楼主
Hmily 发表于 2019-1-18 13:23
视频那个你处理下我给你恢复也行,不然实在是太多了。

我看看啊,视频您说的是开头的封面把,传了腾讯视频,要去了片头的封面就要重新编码一次,1G多再重新搞到腾讯视频上,特别麻烦,我起初没想那么多都加了封面……总之真是谢谢您,我回头仔细看看,不行就给视频链接不发就得了,哎您真热心啊 谢谢了 总之 弄的我都不好意思了

点评

不止封面,后面视频一直有一个贴上面,不然就不会光说大海说长了。。。  详情 回复 发表于 2019-1-18 15:02
沙发
Hmily 发表于 2019-1-18 10:49
第二次删除帖子的文中视频链接还是有之前的问题,请仔细看一下,推公众号关注目前归属于广告性质,所以请不要添加那么大那么长那么多的广告。

另外帖子编辑不容易,虽然帖子没审核通过,但帖子还在后台回收站可以恢复,把不符合规定的内容编辑下可以申请恢复。
3#
 楼主| 葫芦娃很厉害 发表于 2019-1-18 11:06 |楼主
Hmily 发表于 2019-1-18 10:49
第二次删除帖子的文中视频链接还是有之前的问题,请仔细看一下,推公众号关注目前归属于广告性质,所以请不 ...

那么大那么常那么多 哈哈 我真不是做广告 就是趁着审核 沟用一下 竟然没删……好耿直 不只是帅啊……我自己得删了啊,太难看了

点评

视频那个你处理下我给你恢复也行,不然实在是太多了。  详情 回复 发表于 2019-1-18 13:23
4#
A-new 发表于 2019-1-18 11:41
这个难道这是验证的新模式,不过软件如果用这种验证,授权用户可能会不答应的
5#
Hmily 发表于 2019-1-18 13:23
葫芦娃很厉害 发表于 2019-1-18 11:06
那么大那么常那么多 哈哈 我真不是做广告 就是趁着审核 沟用一下 竟然没删……好耿直 不只是帅 ...

视频那个你处理下我给你恢复也行,不然实在是太多了。
8#
Hmily 发表于 2019-1-18 15:02
葫芦娃很厉害 发表于 2019-1-18 14:37
我看看啊,视频您说的是开头的封面把,传了腾讯视频,要去了片头的封面就要重新编码一次,1G多再重新搞到 ...

不止封面,后面视频一直有一个贴上面,不然就不会光说大还说长了。。。
9#
 楼主| 葫芦娃很厉害 发表于 2019-1-18 15:14 |楼主
Hmily 发表于 2019-1-18 15:02
不止封面,后面视频一直有一个贴上面,不然就不会光说大还说长了。。。

嗯嗯 录的时候自动开的水印,想起来了…… 那是从头到尾确实长……看起来这种视频只能给腾讯旗下产品发,发哪哪屏蔽……现在门户之争好厉害,总之谢谢您了,作为管理员大佬可以这么善良

点评

或者给你恢复把视频先删除。  详情 回复 发表于 2019-1-18 17:05
10#
Hmily 发表于 2019-1-18 17:05
葫芦娃很厉害 发表于 2019-1-18 15:14
嗯嗯 录的时候自动开的水印,想起来了…… 那是从头到尾确实长……看起来这种视频只能给腾讯旗下产品发, ...

或者给你恢复把视频先删除。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-15 12:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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