Задача #3: Взломай Keygenme

DX0

Постоянный
Новичок
Сообщения
62
Реакции
4
Приветствую, дорогие мои крекеры, а также их инструменты!


Данный crackme я решил и ушло у меня на решение этого crackme примерно час, так что попробуй и ты, покажи свое мастерство. Я никого не принуждаю прям брать и ломать, но сроки я поставлю все равно, потому как так интересней ломать. Так что буду ждать Ваших результатов в комментариях. Хочу сказать вот что: Если вообще кто-то взломает этот crackme, да или вообще crackme-сы, которые я выложил в качестве задач, то ломая их Вы сразу даете о себе знать, что подобные программы для Вас это семечки.... Я не говорю, что если я выкладываю crackme-сы, то я гараст на все взломы - нет, потому как защиты бывают разные. Так что я всем буду рад, кто примет участие в решении таких задач! Если кто не решит данный crackme - я сразу выложу свое решение.

При успешном серийном ключе должна появится надпись "REGISTERED".

Дата окончания решения данного crackme: 19.09.2021

Задача: Сгенерировать верный серийный ключ.

Выкладываю свой кейген на С:
Код:
#include <stdio.h>
#include <math.h>
#include <time.h>

// Author: Vlados(DX0)

unsigned int rol(unsigned int a, unsigned int n) {
    return (a << (n % 32)) | (a >> (32 - (n % 32)));
}
unsigned int ror(unsigned int a, unsigned int n) {
    return (a >> (n % 32)) | (a << (32 - (n % 32)));
}

void main() {
    char buf_ser[32] = { 0 };
    unsigned int res, len, *sum_ptr, hash;
    unsigned char sum[4] = { 0 };
    unsigned char tmp_res[4] = { 0 };
    float f_res;
    char* alphabet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

    srand(time(0));

    do {
        f_res = 0.f;
        sum_ptr = (unsigned int*)sum;
        *sum_ptr = 0;


        len = 1 + (rand() % (sizeof(buf_ser) - 1));
        for (int i = 0; i < len; i++) {
            buf_ser[i] = alphabet[rand() % strlen(alphabet)];
            buf_ser[i + 1] = 0;
        }

        for (int i = 0; i < len; i++)
            sum[0] += (buf_ser[i] % 0x0B);
   
        for (int i = 0; i < len; i++) {
            res = (i + 1) & 0x80000001;
            if (res < 0)
                res = ((res - 1) | 0xFFFFFFFE) + (res + 1);
            if (!res)
                sum[2] += (buf_ser[i] % 0x21);
            else
                sum[2] += ((buf_ser[i] % 0x17) << 2);
        }
        res = (((len * len) & 0x0000FFFF) + 0x60) - 0x4B;
        res = (res & 0x000000FF) << 2;
        res += (res * 2);
        f_res = res;
        f_res = f_res / 11.f;
        f_res = round(f_res);
        res = f_res;
        sum[1] = res;
        res = sum[0] * sum[1] * sum[2];

        sum[3] = res;

        sum_ptr = (unsigned int*)sum;
        *sum_ptr = rol(*sum_ptr, 3);

        for (int i = 0; i < 5; i++) {
            tmp_res[0] = (((sum[0] + sum[3]) % 0xFE) + 1);
            tmp_res[1] = (((sum[0] + sum[1]) % 0xFC) + 3);
            tmp_res[2] = (((sum[1] + sum[2]) % 0xF0) + 0x0E);
            tmp_res[3] = (((sum[2] + sum[3]) % 0xE9) + 0x14);

            sum[0] = tmp_res[3];
            sum[1] = tmp_res[0];
            sum[2] = tmp_res[1];
            sum[3] = tmp_res[2];
        }
        sum[0] += 0x13;
        sum[1] += 0x0B;

        tmp_res[0] = sum[0] - sum[3];
        tmp_res[1] = tmp_res[0] + (sum[1] - sum[2]);
        tmp_res[2] = sum[3] - sum[2];
        tmp_res[3] = sum[3] - tmp_res[1];

        sum[0] = tmp_res[0];
        sum[1] = tmp_res[3];
        sum[2] = tmp_res[1];
        sum[3] = tmp_res[2];

        sum_ptr = (unsigned int*)sum;
        res = *sum_ptr * *sum_ptr;
        hash = res % 0xFCFDFEFA;

    } while (hash != 0xD46E1384);

    printf("Serial code: %s",buf_ser);

    getchar();

    return;
}
 

Прикрепленные файлы:

Последнее редактирование:

dosprog

Ветеран
Мудрец
Сообщения
189
Реакции
553
Одну тему создай и там резвись. Нечего засорять ленту.
 

DX0

Постоянный
Новичок
Сообщения
62
Реакции
4
Одну тему создай и там резвись. Нечего засорять ленту.
Как ты себе это представляешь создавать подобные задачи в одной ленте? Когда заходишь на подобную страницу - тема должна быть на первом плане, а не бегать по ленте искать где и чего я там выложил. Уж наверное мне виднее как лучше создавать тему. ;)
 

dosprog

Ветеран
Мудрец
Сообщения
189
Реакции
553
Виднее не тебе, а со стороны.
 

Artem N

Посетитель
Новичок
Сообщения
38
Реакции
10
Данный crackme я решил и ушло у меня на решение этого crackme примерно час, так что попробуй и ты, покажи свое мастерство. Я никого не принуждаю прям брать и ломать, но сроки я поставлю все равно, потому как так интересней ломать. Так что буду ждать Ваших результатов в комментариях. Хочу сказать вот что: Если вообще кто-то взломает этот crackme, да или вообще crackme-сы, которые я выложил в качестве задач, то ломая их Вы сразу даете о себе знать, что подобные программы для Вас это семечки.... Я не говорю, что если я выкладываю crackme-сы, то я гараст на все взломы - нет, потому как защиты бывают разные. Так что я всем буду рад, кто примет участие в решении таких задач! Если кто не решит данный crackme - я сразу выложу свое решение.
Я, я, я, я, я, я - головка от письки ты! Завезите уже дизлайки на форум, а?
 

Gideon Vi

Постоянный
Мудрец
Сообщения
89
Реакции
531
чувак, ты краклабовский диск распотрошил что ли )
 

BigIsi

Посетитель
Новичок
Сообщения
41
Реакции
54
Как ты себе это представляешь создавать подобные задачи в одной ленте? Когда заходишь на подобную страницу - тема должна быть на первом плане, а не бегать по ленте искать где и чего я там выложил.
Просто дополняй стартовый пост: последняя задача - первая сверху, а в ленте анонс делай и ход решения, нумерацию и даты проставляй дополнительно.

Дополнительно: перекрестные ссылки из стартового поста на начало обсуждения в теме.
 
Последнее редактирование:
  • Понравилось
Реакции: mak

DX0

Постоянный
Новичок
Сообщения
62
Реакции
4
Я, я, я, я, я, я - головка от письки ты! Завезите уже дизлайки на форум, а?
Че не получается решить задачу у тебя?:ROFLMAO::ROFLMAO::ROFLMAO: Стыдно должно быть тебе!:cool:
Сообщение объединено:

чувак, ты краклабовский диск распотрошил что ли )
И там тоже беру.
 

dosprog

Ветеран
Мудрец
Сообщения
189
Реакции
553
чувак, ты краклабовский диск распотрошил что ли )
) Даа, много зла бедгай наворотил. Будет теперь аукаться

Сейчас ведь что получается, - куда ни зайди, везде одни хакеры. Сплошь.
Аж неловко
 
  • Понравилось
Реакции: mak

_MBK_

Ветеран
Новичок
Сообщения
157
Реакции
30
А что, здесь разве нет отдельного раздела под крякмисы?
Недороботочка
А модератором назначить SDK :D
 
  • Понравилось
Реакции: mak

DX0

Постоянный
Новичок
Сообщения
62
Реакции
4
) Даа, много зла бедгай наворотил. Будет теперь аукаться

Сейчас ведь что получается, - куда ни зайди, везде одни хакеры. Сплошь.
Аж неловко
Это самозванцы так себя называют "я хакер", а на деле не могут ничего, кроме как писать негативные комментарии. Нормальный человек никогда не будет себя называть хакер, хотя умеет взламывать и все такое.
 

dosprog

Ветеран
Мудрец
Сообщения
189
Реакции
553
В общем, с этим надо что-то делать.
Иначе весь форум будет загажен темами про крякмиксы от бедгуя.

Это самозванцы так себя называют "я хакер"
) Это я вас так называю. Вы ж хакеры, реальные причём.
 
  • Понравилось
Реакции: DX0

DX0

Постоянный
Новичок
Сообщения
62
Реакции
4
В общем, с этим надо что-то делать.
Иначе весь форум будет загажен темами про крякмиксы от бедгуя.


) Это я вас так называю. Вы ж хакеры, реальные причём.
Я создам ленту, где будут только одни крекми, хорошо. Да, потому что плодить куча тем с крекмисами никаких ресурсов не хватит.
 

mak

Соломенные сандалии
Администратор
Сообщения
781
Реакции
543
Привет всем,

Я, я, я, я, я, я - головка от письки ты! Завезите уже дизлайки на форум, а?
Мы против хейтинга и кибербуллинга, приятно читать что-то по делу, по теме, с юмором, но не разборки. Форуму такой формат не нужен .. Альтернативно есть "Жалобы" или можно промолчать :)

Одну тему создай и там резвись. Нечего засорять ленту.
Дубликаты тем создавать удобно, если они имеют общее начало и разное направление, как зеркало в "Беседке" или обсуждение в запросах. А темы, да, расположены не в том разделе.

Просто дополняй стартовый пост: последняя задача - первая сверху, а в ленте анонс делай и ход решения, нумерацию и даты проставляй дополнительно.

Дополнительно: перекрестные ссылки из стартового поста на начало обсуждения в теме.
Есть тема в блоге, блог активен как авторский, т.е. автор может сам решить, какие посты он оставит в своём блоге, в простой теме уже не так, дополнительно в "Блоге" можно линковать конкретную тему.

Я создам ленту, где будут только одни крекми, хорошо. Да, потому что плодить куча тем с крекмисами никаких ресурсов не хватит.
Да хватит ресурсов, другое дело зачем? Крекми должен быть интересный, с описанием, как фильмах, читаешь сюжет, решаешь, хочу посмотреть, или уже посмотрел, хочешь рассказать и написать отзыв .. Такая лента уже есть, общая лента - CrackMe's, а отдельные темы могут быть для обсуждений. Такой гибкости по темам вполне достаточно ...

В общем, с этим надо что-то делать.
Иначе весь форум будет загажен темами про крякмиксы от бедгуя.
Самомодерация работает отлично, люди обсудили, всё выяснили, лишнее убрали когда остыли или обдумали иначе :giggle: (y)
 

DX0

Постоянный
Новичок
Сообщения
62
Реакции
4
Выкладываю сгенерированным моим кейгеном ключ: Xsz4DJ

Насчет моего исходника кейгена - я сниму видео и подробно расскажу там про кейген и про алгоритм
 

Mystery

Зарегистрированный
Сообщения
6
Реакции
1
Пока с нетерпением ждём видос. Поделюсь процедурой генерации получившейся на Delphi.

Код:
procedure generic (str:string);
type
   TByteRec = record B54, B55, B56, B57: Byte; end;
   TByteRec2 = record C54, C55, C56, C57: Byte; end;
 var
I,t,le:integer;
ch:char;
si,si1:float32;
W,W2: dWord;
 begin
 si:=11.0;
  le:=Length(str);
  W:=$00000000;
                                     //--------    54
  for i:=1 to le do
  begin
  ch:=str[i];
     TByteRec(W).B54:=TByteRec(W).B54+byte(ch) mod $B;
  end;
                                     //---------    56
  for i:=1 to le do
  begin
   ch:=str[i];
   t:=i;
   t:= i and $80000001;
    if (t=0) then begin
     ch:=str[i];
   TByteRec(W).B56:=TByteRec(W).B56+byte(ch) mod $21;
   end
       else
   begin
     ch:=str[i];
     t:=byte(ch) mod 23;
     t:= t shl 2;
    TByteRec(W).B56:=TByteRec(W).B56+byte(t);
   end;
  end;
                                     //---------    55
   t:=le*le+96-75;
  TByteRec(W).B55:=TByteRec(W).B55+byte(t);
   t:= t shl 2;
   t:=t+t*2;
   si1:=t;
   si1:= si1 / si;
   t:=round(si1);
  TByteRec(W).B55:=byte(t);
                                //--------      57
  TByteRec(W).B57:=TByteRec(W).B54*TByteRec(W).B55*TByteRec(W).B56;
                               //--------     54 55 56 57
    asm
     mov eax, dword ptr ds:[W]
     rol eax,3
     mov dword ptr ds:[W],eax
    end;
                               //--------     54 55 56 57
         for I := 1 to 5 do
      begin
       TByteRec2(W2).C55:=(TByteRec(W).B54+TByteRec(W).B57) mod $FE +$1 ;
         TByteRec2(W2).C56:=(TByteRec(W).B54+TByteRec(W).B55) mod $FC+$3;
           TByteRec2(W2).C57:=(TByteRec(W).B56+TByteRec(W).B55) mod $F0+$E;
             TByteRec2(W2).C54:=(TByteRec(W).B56+TByteRec(W).B57) mod $E9+$14;
          W:=W2;
      end;

    TByteRec(W).B54:=TByteRec(W).B54+$13;
      TByteRec(W).B55:=TByteRec(W).B55+$B;
       TByteRec2(W2).C54:=(TByteRec(W).B54-TByteRec(W).B57);
        TByteRec2(W2).C56:=TByteRec2(W2).C54+(TByteRec(W).B55-TByteRec(W).B56);
          TByteRec2(W2).C57:=TByteRec(W).B57-TByteRec(W).B56;
            TByteRec2(W2).C55:=TByteRec(W).B57-TByteRec2(W2).C56;
          W2:=W2*W2 mod $FCFDFEFA;
                                                  //----Сравнение ---//
         if W2=$D46E1384 then                           
         begin
         form1.Memo1.Lines.Add(str); 
         end;

end;
Собственно рабочий кейген по ссылке ссыль.
Примечание:
Используется отдельный поток, символы перебора от a до z.
Объект edit1 для просмотра на каком пароле остановили поиск.
При нажатии на кнопку старт перебор начинается сначала.
 

DX0

Постоянный
Новичок
Сообщения
62
Реакции
4
Я глянул твой кейген, но это скорей не кейген, а брутфорсер, так ты будешь ждать 300 лет пока он найдет. Это при том, что там не только от a..z, там еще верхнего регистры буквы должны быть плюс также цифры.
Я тебе покажу как за секунду мой кейген находит серийник.
 
Верх Низ