吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 7198|回复: 26

[CrackMe] 【代发】三分钟内写的CM,求追码

[复制链接]
枭晓岚 发表于 2017-1-15 11:52 | 显示全部楼层 |阅读模式

60HB
本帖最后由 枭晓岚 于 2017-1-15 12:26 编辑

发一个CM,没有调用任何不可解的算法, 就采用了几句加减乘除,全部加起来不超过十句代码 ,爆破不算
QQ图片20170115114808.gif 另外:@三千亿少女的梦 大菜比师傅,你HD的本地DLL外链失效了~
楼下有作者补的链接

点评

三千亿少女的梦”点评说:
https://share.weiyun.com/70f0605e7ae96ba39832b0ea82f75fce  发表于 2017-1-15 16:23

评分

参与人数 1HB +1 收起 理由
禽大师 + 1

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
我是一只小白 发表于 2017-1-15 12:14 | 显示全部楼层

补一波链接

新版cm.rar

296.02 KB, 下载次数: 716, 下载积分: HB -3

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
爱阴湿毯 发表于 2017-1-15 14:25 | 显示全部楼层

密码1234  鉴定完毕
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Icc 发表于 2017-1-15 16:20 | 显示全部楼层

[ZVY{CLE2Z)UK)4%A$SUH(D.png

本菜能力有限
只能爆破了。。。
话说回来
爆破点挺多的233

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
李沉舟 发表于 2017-1-15 16:57 | 显示全部楼层

大致搞明白了,程序输入注册码,加上0040112A这个函数的返回值,然后减去[0x4A45B0]的值,结果(绝对值)要等于0,否则失败。

那个0040112A函数我逆向出来了,不过[0x4A4580]的生成算法还有待逆向。

目前成功了一次。
1.png

那个0040112A函数:
unsigned int func1(int a1, int a2) //这个函数里面居然有VMP保护标记,但是没有加壳,也是醉了
{
    unsigned int result;
    unsigned long int v3;
    unsigned long int *p = &v3;
    if ( a2 >= a1 )
    {
        _asm
        {
            pushad
            mov esi,p
            rdtsc
            mov dword ptr[esi],eax
            mov dword ptr[esi + 4],edx
            popad
        } //__rdstc,取纳秒数

        result = a1 + (23 * (signed int)v3 + 7) % (unsigned int)(a2 - a1 + 1);
    }
    else
    {
        result = 0;
    }
    return result;
}

2.png
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Sky__Mo 发表于 2017-1-15 17:32 | 显示全部楼层

注册码输入的时候 会依次进行不同的变换 第一位数 31  二位 63  三位 96  依次 输入 依次会不同
把注册码转换为 16进制  压入十进制  9999    压入1   
运算   最后与 十进制 65进行比较

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
李沉舟 发表于 2017-1-15 17:40 | 显示全部楼层

我还以为是很复杂的算法,只能怪易语言的浮点运算啊。唉先贴上两个函数,我还原出来的。

大概验证就是这个流程,首先,编辑框有一个OnKeyDown事件,每当按下一个键的时候,就把键代码和原有的一个全局变量的值相加,这个是浮点运算,搞得我分析半天,汗……然后就是比较,会调用一个函数,得到系统启动的纳秒数,然后进行一系列运算,详情看我贴出的func1函数(C++描述),再把编辑框里输入的注册码转换成双精度小数型(double),所得到的值和那个func1的返回值相加,结果再减去全局变量的值。如果相等,则注册成功,否则注册失败。

所以,综上所述,我觉得注册机是没戏的……

unsigned int func1(int a1, int a2) //这个函数里面居然有VMP保护标记,但是没有加壳,也是醉了
{
    unsigned int result;
    unsigned long int v3;
    unsigned long int *p = &v3;
    if ( a2 >= a1 )
    {
        _asm
        {
            pushad
            mov esi,p
            rdtsc
            mov dword ptr[esi],eax
            mov dword ptr[esi + 4],edx
            popad
        } //__rdstc,取纳秒数
        result = a1 + (23 * (signed int)v3 + 7) % (unsigned int)(a2 - a1 + 1);
    }
    else
    {
        result = 0;
    }
    return result;
}

long int turn(int a1, int dword_4A45B0) //应该是编辑框的OnKeyDown事件,每当有键按下时,就把键值和原有的[4A45B0]数据相加
{
  long int result;
  result = long int((double)dword_4A45B0 + (double)a1);
  dword_4A45B0 = result;
  return result;
}

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
李沉舟 发表于 2017-1-15 17:42 | 显示全部楼层

本帖最后由 镜中神无 于 2017-1-15 17:44 编辑

我还以为是很复杂的算法,只能怪易语言的浮点运算啊。唉先贴上两个函数,我还原出来的。
不好意思,网络卡了,发了两次,汗……
大概验证就是这个流程,首先,编辑框有一个OnKeyDown事件,每当按下一个键的时候,就把键代码和原有的一个全局变量的值相加,把结果保存到全局变量,这个是浮点运算,搞得我分析半天,汗……然后就是比较,会调用一个函数,得到系统启动的纳秒数,然后进行一系列运算,详情看我贴出的func1函数(C++描述),再把编辑框里输入的注册码转换成双精度小数型(double),所得到的值和那个func1的返回值相加,结果再减去全局变量的值。如果相等,则注册成功,否则注册失败。

所以,综上所述,我觉得注册机是没戏的……那个追码什么的也感觉没戏啊,我特么总感觉这个CM是不可能注册成功的。

unsigned int func1(int a1, int a2) //这个函数里面居然有VMP保护标记,但是没有加壳,也是醉了
{
    unsigned int result;
    unsigned long int v3;
    unsigned long int *p = &v3;
    if ( a2 >= a1 )
    {
        _asm
        {
            pushad
            mov esi,p
            rdtsc
            mov dword ptr[esi],eax
            mov dword ptr[esi + 4],edx
            popad
        } //__rdstc,取纳秒数
        result = a1 + (23 * (signed int)v3 + 7) % (unsigned int)(a2 - a1 + 1);
    }
    else
    {
        result = 0;
    }
    return result;
}

long int turn(int a1, int dword_4A45B0) //应该是编辑框的OnKeyDown事件,每当有键按下时,就把键值和原有的[4A45B0]数据相加
{
  long int result;
  result = long int((double)dword_4A45B0 + (double)a1);
  dword_4A45B0 = result;
  return result;
}

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
我是一只小白 发表于 2017-1-15 17:44 | 显示全部楼层

Sky__Mo 发表于 2017-1-15 17:32
注册码输入的时候 会依次进行不同的变换 第一位数 31  二位 63  三位 96  依次 输入 依次会不同
把注册码 ...

分析的不对,test指令和cmp指令是不一样的。别的你再试试就能看出一些问题
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
李沉舟 发表于 2017-1-15 17:48 | 显示全部楼层

我是一只小白 发表于 2017-1-15 17:44
分析的不对,test指令和cmp指令是不一样的。别的你再试试就能看出一些问题

兄弟,看看我分析的对吗。我缺HB啊,想买改名卡
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

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