吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1642|回复: 0
收起左侧

[原创] 破解练习-CRACKME001

  [复制链接]
逸聆君 发表于 2023-1-13 22:32

001-注册算法分析

一、工具和调试环境

  • 动态调试工具:x64dbg
  • 系统环境:win10 1909

二、分析Serial/name的算法

由于Serial里面就是一个字符串比较,没有啥算法,这里就不详细说了,大概就是通过搜索字符串Failed,就能定位到关键位置,Serial直接可以在栈中观察到,为:Hello Dude!。所以我们主要分析Serial/name的注册算法。

直接使用提示字符串验证,得到错误提示如下

001-01.png

那么我们直接搜索字符串Sorry,得知有两个地方使用该字符串,都设置上断点,然后重新验证,成功断在0x0042F826处,先分析这个,另一个后面再说

001-02.png

断下之后向上定位到关键算法如下

0042FA87     | 8B45 F0          | mov eax,dword ptr ss:[ebp-10]      | [ebp-10]:"Please enter your name !" ; 获取name首地址
0042FA8A     | 0FB600           | movzx eax,byte ptr ds:[eax]        | ; eax = name[0] 取出name的第一个字符存放在eax中
0042FA8D     | F72D 50174300     | imul dword ptr ds:[431750]         | 00431750:L")"  ; ")" aiscii码为 0x29  eax = name[0] * 0x29
0042FA93     | A3 50174300       | mov dword ptr ds:[431750],eax      | ; key = name[0] * 0x29
0042FA98     | A1 50174300       | mov eax,dword ptr ds:[431750]      | ; 
0042FA9D     | 0105 50174300     | add dword ptr ds:[431750],eax      | ; key = name[0] * 0x29 * 2

通过算法key = name[0] * 0x29 * 2算出key后,紧接着拼接得到Serial,格式为:CW-key-CRACKED

三、算法核心代码模拟

char* GetSerial(char* szName)
{
    static char szSerial[60] = {};
    if (strlen(szName) < 4)
    {
        MessageBox(NULL, "Name至少需要4位", "温馨提示", MB_OK);
        return nullptr;
    }

    int key = szName[0] * 0x29 * 2;

    sprintf(szSerial, "CW-%d-CRACKED", key);
    return szSerial;
}

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

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

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

本版积分规则

返回列表

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

GMT+8, 2024-12-23 23:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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