吾愛破解 - LCG - LSG |安卓破解|病毒分析|破解軟件|www.ycnqhj.icu

 找回密碼
 注冊[Register]

QQ登錄

只需一步,快速開始

搜索
查看: 963|回復: 15
上一主題 下一主題

[CrackMe] 非常簡單的CM程序,歡迎分析

[復制鏈接]
跳轉到指定樓層
樓主
玖公子 發表于 2019-10-5 09:58 回帖獎勵
CM是什么?Crackme是什么?這是什么東西?樓主發的什么?
他們都是一些公開給別人嘗試破解的小程序,制作 Crackme 的人可能是程序員,想測試一下自己的軟件保護技術,也可能是一位 Cracker,想挑戰一下其它 Cracker 的破解實力,也可能是一些正在學習破解的人,自己編一些小程序給自己破解,KeyGenMe是要求別人做出它的 keygen (序號產生器), ReverseMe 要求別人把它的算法做出逆向分析, UnpackMe 是要求別人把它成功脫殼,本版塊禁止回復非技術無關水貼。

新手們,快來嘗試這個簡單的程序,給自己的學習增加一份自信吧!
程序介紹:
使用C語言編寫的VS2010控制臺程序,三無程序,可搜索字符串!
輸入用戶名,對用戶名進行加減運算,然后和用戶輸入的密碼做比較,成功則會輸出正確壓縮包密碼,如下圖


破解成功后,控制臺上的那一串就是源碼壓縮包密碼!
歡迎大家留下破解思路,如果能留下算法分析過程就更好了,謝謝!

PS:不要嫌棄我水平低,只會加減乘除,字符串不知道怎么藏,只好做了幾個一樣的干擾字符串!
程序和源碼鏈接地址:https://www.lanzous.com/b00n4kgod 密碼:8str
因樓主初學C語言,水平有限,程序BUG較多,自行摸索哈!

免費評分

參與人數 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';
        }
}

附圖

免費評分

參與人數 3吾愛幣 +5 熱心值 +3 收起 理由
CrazyNut + 3 + 1 用心討論,共獲提升!
ABKing + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
玖公子 + 1 + 1 歡迎分析討論交流,吾愛破解論壇有你更精彩!

查看全部評分

沙發
hezimu 發表于 2019-10-5 10:10
3#
 樓主| 玖公子 發表于 2019-10-5 10:15 <
hezimu 發表于 2019-10-5 10:10
你變了     !

四個干擾字符串,四個MessageBox就找出來那哪個是真的,不行你單步都能找到答案。
就是一個個找會花點時間,應該不難!
4#
xiaosay 發表于 2019-10-5 10:17
秀,你變的那么窈窕了
5#
夏南離 發表于 2019-10-5 10:18
tui,我還以為貼的是我帖子的鏈接
6#
 樓主| 玖公子 發表于 2019-10-5 10:19 <
xiaosay 發表于 2019-10-5 10:17
秀,你變的那么窈窕了

呃,什么鬼?沒聽明白
7#
 樓主| 玖公子 發表于 2019-10-5 10:19 <
夏南離 發表于 2019-10-5 10:18
tui,我還以為貼的是我帖子的鏈接

來了,就順便瞧一瞧嘛
8#
xiaosay 發表于 2019-10-5 10:26
玖公子 發表于 2019-10-5 10:19
呃,什么鬼?沒聽明白

網絡名詞,找度娘問問,估計度娘會喜歡上你的
9#
yuehanoo 發表于 2019-10-5 10:37
謝謝分享,支持支持。
10#
旻娢 發表于 2019-10-5 11:12
我還以為是水區
您需要登錄后才可以回帖 登錄 | 注冊[Register]

本版積分規則 警告:禁止回復非技術或與主題無關水貼,違者重罰!

快速回復 收藏帖子 返回列表 搜索

RSS訂閱|小黑屋|聯系我們|吾愛破解 - LCG - LSG ( 京ICP備16042023號 | 京公網安備 11010502030087號 )

GMT+8, 2019-10-12 11:57

Powered by Discuz!

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表
新疆时时开奖历史记录