zbnysjwsnd8 发表于 2017-10-14 15:23

已破解 发一个CrackMe

本帖最后由 zbnysjwsnd8 于 2017-10-14 20:14 编辑

这个CrackMe还是挺简单的,成功输出Success



注册码:692659380\礱a癴fXJFLXJFLXJFLXJFLXJ

SeriousSnow 发表于 2017-10-14 18:58

看了半天,,表示不知道怎么搞。。。。。。int __cdecl main(int argc, const char **argv, const char **envp)
{
char str_key; //
char v5; //
char v6; //
char v7; //
char v8; //
char v9; //
char v10; //
char v11; //
char v12; //
unsigned int long_key; //
BOOL v14; //
unsigned int k; //
unsigned int i; //
unsigned int j; //

v14 = IsDebuggerPresent();
v6 = 0;
v7 = 0;
v8 = 0;
v9 = 0;
v10 = 0;
v11 = 0;
v12 = 0;
printf("Key:");
scanf("%s", str_key);                         // 输入key
if ( v14 )                                    // 如果是调试 ??????
{
    long_key = strtolong(str_key);
    srand(long_key);                            // 置随机数种子
    for ( i = 0; i < 0xC; ++i )
    {
      if ( rand() % 26 != byte_412000 )      // 产生伪随机数据 判断...呃好像和输出结果没啥关系
      goto LABEL_15;                        // 输出失败
    }
    for ( j = 0; j < 7; ++j )
    {
      srand((unsigned __int8)v5);            // 用 v5 数组的数字 置随机数种子
      *(&v6 + j) = rand();                      // 给数组V6依次赋值为第一个伪随机数
    }
    for ( k = 0; k < 7; ++k )                   // 输出v6数组前七个字符 估计是Success
      printf("%c", *(&v6 + k));
    puts(byte_40D1AD);                        // puts{0,0,0}
}
else if ( !strcmp("{N0rMa1}", str_key) )
{
    puts("Success.");
}
else
{
LABEL_15:
    puts("Fail.");
}
system("pause");
return 0;
}

SeriousSnow 发表于 2017-10-14 19:40

本帖最后由 SeriousSnow 于 2017-10-14 19:48 编辑

然后跑出来要符合
srand(long_key);                            // 置随机数种子
    for ( i = 0; i < 0xC; ++i )
    {
      if ( rand() % 26 != byte_412000 )      // 产生伪随机数据 判断...呃好像和输出结果没啥关系
      goto LABEL_15;                        // 输出失败
    }
值是692659380
实际调试。。应为 直接运行或者吾爱OD IsDebuggerPresent这玩意返回值都是0 就去判断 输入是不是 {N0rMa1} 是就是假成功不是就是失败。。。。。
修改跳转。。输出的值也是乱码。。想去改V5发现。。获取是字节获取的,,最大255.。。(─.─||| 真的无力了

736148001 发表于 2017-10-14 16:22

明码的- -

zbnysjwsnd8 发表于 2017-10-14 16:24

736148001 发表于 2017-10-14 16:22
明码的- -

提示信息不对

736148001 发表于 2017-10-14 16:25

成功不是Success那个吗?

zbnysjwsnd8 发表于 2017-10-14 16:25

736148001 发表于 2017-10-14 16:25
成功不是Success那个吗?

仔细对比一下吧 有不一样的地方

736148001 发表于 2017-10-14 16:28

小个点 知道了

带色的小马甲 发表于 2017-10-14 16:29

打开系统好卡

SeriousSnow 发表于 2017-10-14 19:20

就能知道v5的值,,,但是貌似和输入没啥关系啊。。。。。。int main(int argc, char ** argv)
{
        unsigned long v5[] = { 10048,20093,10053,10053,20088,10058,10058 };
        int i;
        for (i = 0; i < 7; i++)
        {
                srand(v5);
                printf_s("%c", rand());
        }
       
        return 0;
}
页: [1] 2 3
查看完整版本: 已破解 发一个CrackMe