Сейчас на форуме: localhost1, vsv1, asfa, tyns777 (+5 невидимых)

 [email protected] —› Вопросы новичков —› Алгоритм генерации ключа по имени, как узнать?
Посл.ответ Сообщение

Ранг: -0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 08 апреля 2020 10:51 · Поправил: romoga
· Личное сообщение · #1

Привет всем.
Есть одна карточная игра Canasta --> http://wdfiles.ru/6qhl<--
. Игра требует регистрации. Методом трассировки в Oly смог найти вытащить ключи генерируемые программой по вводимому имени. Есть листинг "исходника" на асме, но там сам черт ногу сломит. Как только не пытался я найти зависимости, не смог. Там или шифрование или битовые сдвиги. Вот пример
Для вводимого имени
0 ключ 104160
00 ключ 119520
000 ключ 130368
Причем при трасировке алгоритм кажется переворачивает числа, т.е. в консоле вначале 061 и 401 потом превращаются в 104160. Вот исходник, как я предполагаю генерации
Code:
  1. char __usercall sub_403EB8<al>(int a1<eax>, signed int a2<edx>, int a3<ecx>)
  2. {
  3.   unsigned int v3; // [email protected]
  4.   int v4; // [email protected]
  5.   int v5; // [email protected]
  6.   signed int v6; // [email protected]
  7.   int v7; // [email protected]
  8.   int v8; // [email protected]
  9.   char result; // [email protected]
  10.   unsigned int v10; // [email protected]
  11.   char v11; // [email protected]
  12.   unsigned __int8 v12; // [email protected]
  13.   signed int v13; // [sp+16h] [bp-10h]@1
  14.   _BYTE v14[20]; // [sp+2h] [bp-24h]@2
  15.   _BYTE v15[3]; // [sp+1h] [bp-25h]@11
  16.  
  17.   v13 = a2;
  18.   v5 = a1;
  19.   v3 = abs(a1);
  20.   v4 = 0;
  21.   do
  22.   {
  23.     v10 = v3 % 0xA;
  24.     v3 /= 0xAu;
  25.     v11 = v10;
  26.     v14[v4++] = v11 + 48;
  27.   }
  28.   while ( v3 );
  29.   if ( v5 < 0 )
  30.     v14[v4++] = 45;
  31.   *(_BYTE *)a3 = v4;
  32.   v7 = a3 + 1;
  33.   v6 = v13;
  34.   if ( v13 > 255 )
  35.     v6 = 255;
  36.   v12 = __SETO__(v6, v4);
  37.   v8 = v6 - v4;
  38.   if ( !((unsigned __int8)(v8 < 0 ^ v12) | v8 == 0) )
  39.   {
  40.     *(_BYTE *)(v7 - 1) += v8;
  41.     while ( v8 )
  42.     {
  43.       *(_BYTE *)v7++ = 32;
  44.       --v8;
  45.     }
  46.   }
  47.   do
  48.   {
  49.     result = v15[v4];
  50.     *(_BYTE *)v7++ = result;
  51.     --v4;
  52.   }
  53.   while ( v4 );
  54.   return result;
  55.  
  56.  





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 08 апреля 2020 10:52
· Личное сообщение · #2

--> Link <--

-----
2 оттенка серого



 [email protected] —› Вопросы новичков —› Алгоритм генерации ключа по имени, как узнать?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати