selph
selph
发布于 2022-08-17 / 184 阅读
0
0

新160个CrackMe练习:045-CyTom-crackme

算法难度:⭐⭐

爆破难度:⭐

信息收集

运行情况:

image

查壳与脱壳:

image

调试分析

虽然上面写的Delphi程序,然而IDR并不能识别,使用DD去反编译倒是成功了,可能版本Delphi太低吧

找到按钮函数:

逻辑很简单:获取Serial,获取Name,对Serial计算一个值,对Name计算一个值,然后进行比对

image

对Serial的计算:

首先判断第一个字符是否合法,不合法就跳转

然后是一个循环,分析发现,又分析了一遍_atoi函数

这个计算的本质就是把Serial字符串转换成数字

image

对Name的计算:

依然很简单,累乘每一个字节,得到最后的累乘值

image

注册机

注册码生成算法:

#include <iostream>

int main()
{
    char name[100] = { 0 };
    char serial[100] = { 0 };
    int checknum = 1;

    // Name计算出校验值
    std::cin >> name;
    for (int i = 0; i < strlen(name);i++) {
        checknum *= name[i];
    }
    checknum &= 0x0FFFFFFF;

    // 校验值反推Serial
    printf("%d",checknum);

}


效果:

image


评论