吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3166|回复: 18
收起左侧

[CrackMe] 非常简单的CM程序,欢迎分析

[复制链接]
玖公子 发表于 2019-10-5 09:58
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。

新手们,快来尝试这个简单的程序,给自己的学习增加一份自信吧!
程序介绍:
使用C语言编写的VS2010控制台程序,三无程序,可搜索字符串!
输入用户名,对用户名进行加减运算,然后和用户输入的密码做比较,成功则会输出正确压缩包密码,如下图


破解成功后,控制台上的那一串就是源码压缩包密码!
欢迎大家留下破解思路,如果能留下算法分析过程就更好了,谢谢!

PS:不要嫌弃我水平低,只会加减乘除,字符串不知道怎么藏,只好做了几个一样的干扰字符串!
程序和源码链接地址:https://www.lanzouj.com/b00n4kgod 密码:8str
因楼主初学C语言,水平有限,程序BUG较多,自行摸索哈!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

免费评分

参与人数 2吾爱币 +7 热心值 +2 收起 理由
CrazyNut + 6 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
moguxican + 1 + 1 我很赞同!

查看全部评分

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

梦游枪手 发表于 2019-10-5 12:46
本帖最后由 梦游枪手 于 2019-10-5 12:47 编辑

IDA载入,一进来就是main函数
[C] 纯文本查看 复制代码
signed int wmain()
{
  void *username; // [esp+Ch] [ebp-8h]
  void *password; // [esp+10h] [ebp-4h]

  username = malloc(0x64u);
  password = malloc(0x64u);
  printf("请输入用户名:", username);
  scanf("%s", username);
  sub_401140();
  printf("请输入登录密码:", password);
  scanf("%s", password);
  sub_401140();
  if ( check((const char **)&username, (const char **)&password) )// check返回1则成功
    MessageBoxW(0, L"恭喜你,快使用密码打开我的压缩包查看源码吧!", L"玖公子", 0);
  else
    MessageBoxW(0, L"你是密码错了还是改了本公子的程序???", L"玖公子", 0);
  system("pause");
  return 1;
}

查看check函数
[C] 纯文本查看 复制代码
signed int __cdecl check(const char **username, const char **password)
{
  char *v2; // edx
  const char *v3; // edi
  _BYTE *v4; // ecx
  const char *v5; // esi
  int v6; // ebx
  unsigned int v7; // eax
  signed int result; // eax
  void *passwordbak; // [esp+10h] [ebp-8h]
  const char *v10; // [esp+14h] [ebp-4h]

  v2 = (char *)malloc(0x64u);
  v3 = *password;
  passwordbak = v2;
  v10 = *password;
  if ( &(*password)[strlen(*password) + 1] != *password + 1 )// 复制password,可以不管
  {
    v4 = v2 + 1;
    v5 = *password;
    v6 = -1 - (_DWORD)v2;
    do
    {
      *(v4 - 1) = *v5;
      *v4 = 0;
      ++v5;
      ++v4;
      v7 = strlen(v3);
      v3 = v10;
    }
    while ( (unsigned int)&v4[v6] < v7 );
  }
  *username;
  if ( strlen(*username) < 6 || (*username, strlen(*username) > 0x10) )// username长度应为6位到16位
  {
    if ( !strcmp(*username, v3) )
      printf("com");
    else
      printf("om");
    MessageBoxW(0, L"成功了,压缩包密码看命令行窗口!", L"玖公子", 0);
    printf(".52p");
    result = 0;
  }
  else
  {
    printf("go");
    *password;
    if ( strlen(*password) == 16 )
    {
      printf("ng");
      encrypt(username);                        // 加密username
      if ( !strcmp((const char *)passwordbak, *password) )// 比较备份的password和原本的password是否一致
      {
        printf("ebx");
        str_cmp(password, username);            // 此时username为真密码
        free(passwordbak);
        result = 1;                             // 返回1,说明是正确流程
      }
      else
      {
        printf("eax");
        sub_401460(password, username);
        result = 0;
      }
    }
    else
    {
      if ( !strcmp(*username, *password) )
        printf("com");
      else
        printf("om");
      MessageBoxW(0, L"成功了,压缩包密码看命令行窗口!", L"玖公子", 0);
      printf("ojie");
      result = 0;
    }
  }
  return result;
}

可以在str_cmp处看到真密码,破解到这里就结束了。算法方面,encrypt函数将username补齐16位后再将奇数位字符减1,偶数位字符加1。补齐的代码如下。
[C] 纯文本查看 复制代码
for(int i = 0; i<16; i++)
{
        if( i>= strlen(username)) 
        {
                username[i]='H'+i;
                username[i+1]='\0';
        }
}

附图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

免费评分

参与人数 3吾爱币 +5 热心值 +3 收起 理由
CrazyNut + 3 + 1 用心讨论,共获提升!
ABKing + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
玖公子 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

hezimu 发表于 2019-10-5 10:10
 楼主| 玖公子 发表于 2019-10-5 10:15
hezimu 发表于 2019-10-5 10:10
你变了     !

四个干扰字符串,四个MessageBox就找出来那哪个是真的,不行你单步都能找到答案。
就是一个个找会花点时间,应该不难!
iflower 发表于 2019-10-5 10:17
秀,你变的那么窈窕了
头像被屏蔽
夏南离 发表于 2019-10-5 10:18
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 玖公子 发表于 2019-10-5 10:19
xiaosay 发表于 2019-10-5 10:17
秀,你变的那么窈窕了

呃,什么鬼?没听明白
 楼主| 玖公子 发表于 2019-10-5 10:19
夏南离 发表于 2019-10-5 10:18
tui,我还以为貼的是我帖子的链接

来了,就顺便瞧一瞧嘛
iflower 发表于 2019-10-5 10:26
玖公子 发表于 2019-10-5 10:19
呃,什么鬼?没听明白

网络名词,找度娘问问,估计度娘会喜欢上你的
yuehanoo 发表于 2019-10-5 10:37
谢谢分享,支持支持。
旻娢 发表于 2019-10-5 11:12
我还以为是水区
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 14:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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