Как засечь в коде генерацию случайных чисел ? Типа random(10)

Тема в разделе "WASM.WIN32", создана пользователем Darkcloud, 29 авг 2006.

  1. Darkcloud

    Darkcloud New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2006
    Сообщения:
    8
    Т.е. на C написано что то вроде
    Код (Text):
    1. int a = random(10);
    Вопрос, а как это будет на асме ? Есть какие то прямые или косвенные признаки ?
     
  2. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Будет вызов функции с кодом типа этого:

    Код (Text):
    1.     mov     edx, 214013
    2.     mul      edx
    3.     add     eax, 2531011
    p.s. Числа десятичные
     
  3. ssx

    ssx Member

    Публикаций:
    0
    Регистрация:
    19 авг 2003
    Сообщения:
    336
    prng разные бывают, константы могут быть другие. выясни точно что за компилятор использовался. примеры prng были когда-то на reversing.net, не уверен что сейчас это там осталось
     
  4. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Обращай внимание на куски кода, в которых присутствуют mul, div, xor, rcl и константы
     
  5. ssx

    ssx Member

    Публикаций:
    0
    Регистрация:
    19 авг 2003
    Сообщения:
    336
    хм. а если файл большой? :)
     
  6. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Причём тут размер файла? Спрашивались признаки получения рандома, а не как со 100% вероятностью сразу ткнуть в этот кусок кода.
     
  7. gazlan

    gazlan Member

    Публикаций:
    0
    Регистрация:
    22 май 2005
    Сообщения:
    414
    Найди CC (CryptoChecker) - он знает стандартные M$VC & Delphi PRNG + несколько других и несколько сот простых чисел (часто используются в PRNG). Кроме того распознает ряд хэшей и криптоалгоритмов, которые также могут быть использованы для построения PRNG. В любом случае, универсального ответа НЕ существует.
     
  8. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    если простой PRNG, то чаще всего это обычный линейный конгруэнтный датчик ПСЧ -- характерная линейная функция от прошлого значения, с коэффициентами-константами. Если такой функции в качестве seed'a подается что-нть типа GetTickCount да от возвращаемого значения остаток от деления берется, то можно с некоторой долей вероятности утверждать, что это PRNG. ;)