Сейчас на форуме: Rio, ==DJ==[ZLO], Dart Raiden, Alf (+6 невидимых)

 eXeL@B —› Основной форум —› Преобразование функций
Посл.ответ Сообщение

Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 04 октября 2004 06:22
· Личное сообщение · #1

Преобразование функций



Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 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.070
Статус: Участник

Создано: 04 октября 2004 09:17
· Личное сообщение · #4

в каком контексте используется функция ? Это очень похоже не обычный PRNG.



Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 05 октября 2004 00:12
· Личное сообщение · #5

Этот модуль генерит пароль. Входные параметры - код компа (в цикле грузятся его части типа 1В) и константа (si) типа AB2C.
А что такое PRNG и причем здесь контекст? Генерилку пароля я уже состряпал на дельфях. Но ведь авторы наверняка же заюзали какую-нить стандартную ф-цию. Логарифм, например.




Ранг: 266.8 (наставник), 5thx
Активность: 0.220.03
Статус: Участник
very WELL :)

Создано: 05 октября 2004 00:50
· Личное сообщение · #6

LESHIK пишет:
Но ведь авторы наверняка же заюзали какую-нить стандартную ф-цию

Это почему наверняка-то?



Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 05 октября 2004 01:19
· Личное сообщение · #7

Ты думаешь, им не лень было сочинять эти константы CE6Dh и 58BFh? И это в DELPHI-то?




Ранг: 266.8 (наставник), 5thx
Активность: 0.220.03
Статус: Участник
very WELL :)

Создано: 05 октября 2004 01:47
· Личное сообщение · #8

Ну х.з. =) МОжет от балды взяли числа. Думали типа крутой алгоритм получится =)



Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 05 октября 2004 02:14
· Личное сообщение · #9

Дык я это и выясняю. Можеть енти консты наслуху у кого-нить. И он, увидев знакомые дигиты, скажет: "-Чувак, это же экспонента!" Но пока выходит только по-твоему.



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
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.010
Статус: Участник

Создано: 05 октября 2004 03:16
· Личное сообщение · #11

Оченно спасибочки!!!!!!!! Поглядим.



Ранг: 103.0 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 05 октября 2004 04:16
· Личное сообщение · #12

В Дельфи константы 3C6h, 3E8h, 08088405h



Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 05 октября 2004 04:46
· Личное сообщение · #13

А почему три? Может напишете, подобно SSX'у, как это в дельфях выглядит?



Ранг: 174.2 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 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.010
Статус: Участник

Создано: 06 октября 2004 06:55
· Личное сообщение · #15

Во-первых, у меня D3. Во-вторых, где же в этом random'е вышеуказанные числа? И вообще, где вы такую докум-цию раскопали? (в HELP'e этого нет. На delphikingdom.ru аналогично) Я тоже хочу. И желательно по-русски.



Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 06 октября 2004 08:20
· Личное сообщение · #16

http://www.exelab.ru/art/action=read&id=135



Ранг: 1.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 06 октября 2004 08:27
· Личное сообщение · #17

СУПЕР!!!!



Ранг: 174.2 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 06 октября 2004 12:24
· Личное сообщение · #18

Во-первых, функция эта и на D7, и на D5 одинаковая - сам проверял (про D3 не знаю). Во-вторых про числа не я говорил. И вообще, нигде я такой документации не раскапывал, а просто посмотрел, какой код Delphi создает (функция Random прошита в модуль System.dcu)
P.S. А про статью Bad_guy'я я и забыл . Ну все равно, там только описание Randomize.



Ранг: 103.0 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 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


 eXeL@B —› Основной форум —› Преобразование функций
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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