Показать сообщение отдельно
  #4  
Старый 20.07.2018, 11:34
firewex firewex вне форума
Прохожий
 
Регистрация: 13.02.2018
Сообщения: 8
Версия Delphi: Delphi XE7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
ЗЗЫ. Ну и еще всегда можно попробовать дизасемблировать программу и попробовать "выковырять" алгоритм из нее...

Решил пойти по этому пути, но наткнулся на одну не понятную для меня штуку:
Код:
movzx   eax, ds:ИМЯ_ИЗ_.rdata[edx*2]
в .rdata это выглядит вот так:
Код:
.rdata:10029678 ; __int16 ИМЯ[]
.rdata:10029678 ИМЯ      dw 0                    ; DATA XREF: адрес_вызова+46r
.rdata:1002967A              db  89h ; Й

Можете пояснить смысл данной манипуляции?

З.Ы. вот псевдокод который мне сгенерил HexRay:
Код:
__int16 __stdcall sub_1001B4C0(_BYTE *a1, int a2, __int16 a3)
{
  int v3; // ecx@2
  unsigned __int16 v4; // ST00_2@3 стартовое значение = 0 (не уверен)
  __int16 i; // [sp+0h] [bp-4h]@1

  for ( i = a3; ; i = ИМЯ[(unsigned __int8)v4] ^ ((signed int)v4 >> 8) )
  {
    v3 = a2--;
    if ( v3 <= 0 )
      break;
    v4 = *a1++ ^ i;
  }
  return i;
}
Ответить с цитированием