| Посл.ответ | 
Сообщение | 
 Ранг: 1.0 (гость) Активность: 0.01↘0 Статус: Участник 
 
 | 
Создано: 04 октября 2004 06:22   · Личное сообщение ·  #1 
Преобразование функций
   | Сообщение посчитали полезным:  | 
 | 
 Ранг: 1.0 (гость) Активность: 0.01↘0 Статус: Участник 
 
 | 
Создано: 04 октября 2004 06:26   · Личное сообщение ·  #2 
Люди. Есть ли среди вас крутые математики. Требо понять, что за стандартная функция скрывается за вот таким кодом: 0001B40E                 xor     dl, cl
 0001B410                 mov     [eax+edi-1], dl
 0001B414                 xor     eax, eax
 0001B416                 mov     al, [ebp+edi-1]
 0001B41A                 add     si, ax
 0001B41D                 imul    ax, si, 0CE6Dh
 0001B422                 add     ax, 58BFh
 0001B426                 mov     esi, eax
   | Сообщение посчитали полезным:  | 
 Ранг: 0.0 (гость) Активность: 0=0 Статус: Участник 
 
 | 
Создано: 04 октября 2004 09:12   · Личное сообщение ·  #3 
Похоже на обычную прямую.
 f(x)=0CE60h*x + 58BFh
 где x находится:
 eax:=0
 al:=dl xor cl
 x:=si + ax
   | Сообщение посчитали полезным:  | 
 Ранг: 160.1 (ветеран) Активность: 0.07↘0 Статус: Участник 
 
 | 
Создано: 04 октября 2004 09:17   · Личное сообщение ·  #4 
в каком контексте используется функция ? Это очень похоже не обычный PRNG.
   | Сообщение посчитали полезным:  | 
 Ранг: 1.0 (гость) Активность: 0.01↘0 Статус: Участник 
 
 | 
Создано: 05 октября 2004 00:12   · Личное сообщение ·  #5 
Этот модуль генерит пароль. Входные параметры - код компа (в цикле грузятся его части типа 1В) и константа (si) типа AB2C.
 А что такое PRNG и причем здесь контекст? Генерилку пароля я уже состряпал на дельфях. Но ведь авторы наверняка же заюзали какую-нить стандартную ф-цию. Логарифм, например.
   | Сообщение посчитали полезным:  | 
  Ранг: 266.8 (наставник), 5thx Активность: 0.22↘0.03 Статус: Участник very WELL :) 
 
 | 
Создано: 05 октября 2004 00:50   · Личное сообщение ·  #6 
LESHIK пишет:
 Но ведь авторы наверняка же заюзали какую-нить стандартную ф-цию
Это почему наверняка-то?
   | Сообщение посчитали полезным:   | 
 Ранг: 1.0 (гость) Активность: 0.01↘0 Статус: Участник 
 
 | 
Создано: 05 октября 2004 01:19   · Личное сообщение ·  #7 
Ты думаешь, им не лень было сочинять эти константы CE6Dh и 58BFh? И это в DELPHI-то?
   | Сообщение посчитали полезным:  | 
  Ранг: 266.8 (наставник), 5thx Активность: 0.22↘0.03 Статус: Участник very WELL :) 
 
 | 
Создано: 05 октября 2004 01:47   · Личное сообщение ·  #8 
Ну х.з. =) МОжет от балды взяли числа. Думали типа крутой алгоритм получится =)
   | Сообщение посчитали полезным:  | 
 Ранг: 1.0 (гость) Активность: 0.01↘0 Статус: Участник 
 
 | 
Создано: 05 октября 2004 02:14   · Личное сообщение ·  #9 
Дык я это и выясняю. Можеть енти консты наслуху у кого-нить. И он, увидев знакомые дигиты, скажет: "-Чувак, это же экспонента!" Но пока выходит только по-твоему.
   | Сообщение посчитали полезным:  | 
 Ранг: 352.4 (мудрец), 4thx Активность: 0.15↘0 Статус: Участник retired 
 
 | 
Создано: 05 октября 2004 03:08   · Личное сообщение ·  #10 
PRNG - генератор случайных чисел. псевдослучайных.
 я не знаю, какие константы используются в дельфовском rtl, посмотрел в VC - там другие.
 int __cdecl rand (void)
 {
  return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
 }
 holdrand по умолчанию == 1, инициализируется ф-ей srand()
   | Сообщение посчитали полезным:  | 
 Ранг: 1.0 (гость) Активность: 0.01↘0 Статус: Участник 
 
 | 
Создано: 05 октября 2004 03:16   · Личное сообщение ·  #11 
Оченно спасибочки!!!!!!!! Поглядим.
   | Сообщение посчитали полезным:  | 
 Ранг: 103.0 (ветеран) Активность: 0.03↘0 Статус: Участник 
 
 | 
Создано: 05 октября 2004 04:16   · Личное сообщение ·  #12 
В Дельфи константы 3C6h, 3E8h, 08088405h
   | Сообщение посчитали полезным:  | 
 Ранг: 1.0 (гость) Активность: 0.01↘0 Статус: Участник 
 
 | 
Создано: 05 октября 2004 04:46   · Личное сообщение ·  #13 
А почему три? Может напишете, подобно SSX'у, как это в дельфях выглядит?
   | Сообщение посчитали полезным:  | 
 Ранг: 174.2 (ветеран) Активность: 0.07↘0 Статус: Участник 
 
 | 
Создано: 05 октября 2004 08:48   · Личное сообщение ·  #14 
В Delphi 7, например, функция Random(Range: Integer) примерно так работает:
 function Random(Range: Integer): Integer;
 begin
  RandSeed := RandSeed*$08088405 + 1;
  Result := Int64(RandSeed)*Range shr 32;
 end;
   | Сообщение посчитали полезным:  | 
 Ранг: 1.0 (гость) Активность: 0.01↘0 Статус: Участник 
 
 | 
Создано: 06 октября 2004 06:55   · Личное сообщение ·  #15 
Во-первых, у меня D3. Во-вторых, где же в этом random'е вышеуказанные числа? И вообще, где вы такую докум-цию раскопали? (в HELP'e этого нет. На delphikingdom.ru аналогично) Я тоже хочу. И желательно по-русски.
   | Сообщение посчитали полезным:  | 
 Ранг: 0.0 (гость) Активность: 0.25↘0 Статус: Участник 
 
 | 
Создано: 06 октября 2004 08:20   · Личное сообщение ·  #16  | 
 Ранг: 1.0 (гость) Активность: 0.01↘0 Статус: Участник 
 
 | 
Создано: 06 октября 2004 08:27   · Личное сообщение ·  #17 
СУПЕР!!!!
   | Сообщение посчитали полезным:  | 
 Ранг: 174.2 (ветеран) Активность: 0.07↘0 Статус: Участник 
 
 | 
Создано: 06 октября 2004 12:24   · Личное сообщение ·  #18 
Во-первых, функция эта и на D7, и на D5 одинаковая - сам проверял (про D3 не знаю). Во-вторых про числа не я говорил. И вообще, нигде я такой документации не раскапывал, а просто посмотрел, какой код Delphi создает (функция Random прошита в модуль System.dcu)
 P.S. А про статью Bad_guy'я я и забыл   . Ну все равно, там только описание Randomize.
   | Сообщение посчитали полезным:  | 
 Ранг: 103.0 (ветеран) Активность: 0.03↘0 Статус: Участник 
 
 | 
Создано: 06 октября 2004 17:57   · Личное сообщение ·  #19 
Вот я из дельфи как-то для кейгена вырезал...
 Randomize proc
  push ebp
  mov ebp, esp
  sub esp, 18h
  lea eax, [ebp-18h]
  push eax
  call GetSystemTime
  db 0Fh, 0B7h, 45h, 0F0h ; movzx eax, [ebp-10h]
  imul eax, eax, 3ch
  add eax, [ebp-0eh]
  imul eax, eax, 3ch
  xor edx, edx
  mov dx, [ebp-0ch]
  add eax, edx
  imul eax, eax, 3e8h
  mov dx, [ebp-0ah]
  add eax, edx
  mov RandSeed, eax
  mov esp, ebp
  pop ebp
  ret
 Randomize endp
 RandInt proc
  push ebx
  xor ebx, ebx
  imul edx, RandSeed, 08088405h
  inc edx
  mov RandSeed, edx
  mul edx
  mov eax, edx
  pop ebx
  ret
 RandInt endp
   | Сообщение посчитали полезным:  |