Мой старый crackme :)

Discussion in 'Реверсинг' started by drmist, 2 Aug 2007.

  1. drmist

    drmist Member

    Joined:
    8 Oct 2005
    Messages:
    307
    Likes Received:
    94
    Reputations:
    80
    Уже не помню, в честь чего и как давно писал, где выкладывал. Даже сорсов не сохранились.
    В общем программка лежит здесь:
    http://www.stnc.ru/ftpdrmist/other/crackme0.exe

    Расчитана на нубов, подсказок нет. Задача - подобрать ключ для своего ника. Кто первым закейгенит получит +10.
     
    1 person likes this.
  2. dmnt

    dmnt Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    89
    Likes Received:
    36
    Reputations:
    15
    ну здравствуй, отравитель :)
    во первых строках письма шлю тебе превед. у меня упорно не желает выделять память по адресу 0400000h, поэтому пришлось его малость переделать под себя
    должно подойти:
    dMNt
    AdMNtdMNtdMN0d0N4d8N01214161810B
     
    1 person likes this.
  3. SHAG

    SHAG Elder - Старейшина

    Joined:
    14 Jul 2007
    Messages:
    57
    Likes Received:
    17
    Reputations:
    2
    Name:SHAG
    Serial:SErIaL_is_VaLId_cracker_by.Shag"
    Вот такой серийник у меня получился :D
     
    1 person likes this.
  4. drmist

    drmist Member

    Joined:
    8 Oct 2005
    Messages:
    307
    Likes Received:
    94
    Reputations:
    80
    dmnt
    Вы ведь, каэцо, уже как-то его ломали? ))
    SHAG
    lol )
     
  5. dmnt

    dmnt Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    89
    Likes Received:
    36
    Reputations:
    15
    ага, чего бы хорошую вещь по второму разу не сломать? :)
     
  6. drmist

    drmist Member

    Joined:
    8 Oct 2005
    Messages:
    307
    Likes Received:
    94
    Reputations:
    80
    Лучшеб кто-нить ее закейгенил %) Я думал, интузиазма будет больше =/
     
  7. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    Ну подобрать так подобрать.

    0xc0de
    abcdea789012345678i0a2c4u6080_U0

    В win xp память по этому адресу не выделяецц0.. Пришлось под виртуальной 2000 ломать. Ибо переделывать лень)
     
  8. EB_FE

    EB_FE New Member

    Joined:
    10 Aug 2007
    Messages:
    12
    Likes Received:
    4
    Reputations:
    5
    Подскажите как под win2000 файл открыть?
    что там не так с VirtualAlloc?
     
  9. Gen1rus

    Gen1rus Elder - Старейшина

    Joined:
    13 Jun 2007
    Messages:
    97
    Likes Received:
    166
    Reputations:
    20
    Что именно не так? В чем проблема?
     
  10. EB_FE

    EB_FE New Member

    Joined:
    10 Aug 2007
    Messages:
    12
    Likes Received:
    4
    Reputations:
    5
    Gen1rus
    В свойствах выбери эмуляцию под вин2000 и увидишь в чем
     
    1 person likes this.
  11. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    хоть вариантов строки подходящей под значение хеш-функции уйма, но делать нормальный перебор значений мне показалось все-таки не тривиально; плюс ко всему можно использовать только печатаемые символы.
    Code:
    #include <stdio.h>
    #include <string.h>
    //
    //super xek keygen by ZaCo for drmist crackme :)
    //
    int main(int argc, char* argv[])
     {
      char nickname[]="ZaCo";
      char charset[]="ABCDEFGHIJKLMNOP";
      int cs_len=strlen(charset);
    
      char key[0x20];
      char BL=0,DL=0,BH,DH;
      //
      int i=0, len=strlen(nickname);
      for(;;)
       {
        BL+=nickname[i++];
        if(i>len) break;
        DL+=nickname[i++];
        if(i>len) break;
       }
    
      BL--;
      memset(key,charset[0],0x20);
      //ïîäñòðàèâàåì key ïîä BL
    
      DH=charset[0]*0x10;
    
      unsigned char temp=BL-DH;
      i=1;
      while(temp>cs_len-1)
       {
        temp-=cs_len-1;
        key[i]=charset[cs_len-1];
        i+=2;
       }
      key[i]=charset[temp];
      DH=BL;
    
      //ïîëó÷àåì íóæíûé BH
      BH=((0xB1-DH)^DL)-BL;
    
      //ïîäñòðàèâàåì key ïîä BH
    
      temp=BH-charset[0]*0x10;
      i=0;
      while(temp>cs_len-1)
       {
        temp-=cs_len-1;
        key[i]=charset[cs_len-1];
        i+=2;
       }
      key[i]=charset[temp];
      //
      printf("%20s",key);
      return 0;
     }
    //---------------------------------------------------------------------------
    
    идея в том, что используется !отрезок! печатаемых байт размером не меньше 16, для того чтобы можно было их суммой заполнить промежуток 0..255 и по любому никнейму можно было бы сгенерировать ключ.
     
    1 person likes this.