@ilia1991

Что делает эта функция?

Помогите понять, что делает эта функция. Зачем она нужна.
a1 вход, на выходе получаются два int a2 и a3
int a1 это указатель на массив {0x8A,0xA0,0x3D,0x2E,0x7E,0xD8,0xDA,0x17}
а byte_6B4E7360 это массив

{0x3a,0x32,0x2A,0x22,0x1A,0x12,0x0A,0x2
 0x3C,0x34,0x2C,0x24,0x1C,0x14,0x0C,0x04,
 0x3E,0x36,0x2E,0x26,0x1E,0x16,0x0E,0x06,
 0x40,0x38,0x30,0x28,0x20,0x18,0x10,0x08,
 0x39,0x31,0x29,0x21,0x19,0x11,0x09,0x01,
 0x3B,0x33,0x2B,0x23,0x1B,0x13,0x0B,0x03,
 0x3D,0x35,0x2D,0x25,0x1D,0x15,0X0D,0x05,
 0x3F,0x37,0x2F,0x27,0x1F,0x17,0x0F,0x07,0x0E}


int __stdcall sub_6B4BFFA0(int a1, _DWORD * a2, _DWORD * a3) inta1 = 82 bece4 {
    int v3; // esi
    int result; // eax

    v3 = 0;
    * a3 = 0;
    * a2 = 0;
    do {
      if (((unsigned __int8)(128 >> ((byte_6B4E7360[v3] - 1) & 7)) & * (_BYTE * )((((unsigned __int8) byte_6B4E7360[v3] - 1) >> 3) +
          a1) != 0) *
        a2 |= 1 << (31 - v3); a2 = 0xA659A096
        ++v3;
      }
      while (v3 < 32);
      for (result = 32; result < 64; ++result) {
        if (((unsigned __int8)(128 >> ((byte_6B4E7360[result](0x20) - 1) & 7)) & * (_BYTE * )((((unsigned __int8) byte_6B4E7360[result] - 1) >> 3) + a1)) != 0)
          *
          a3 |= 1 << (63 - result);
        a3 = 0x690150
      }
      return result; = 0x40
    }
  • Вопрос задан
  • 310 просмотров
Пригласить эксперта
Ответы на вопрос 1
NeiroNx
@NeiroNx
Программист
Считает хэш по определенному алгоритму. Проверка серийных номеров лицензий и т.д.
Обычно дизассембер криво разворачивает их, поэтому надо проверять на реальных данных.

То что вы делаете вероятно противозаконно, будьте внимательны, сейчас все записывается.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы