Посл.ответ |
Сообщение |
Ранг: 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
| Сообщение посчитали полезным: |