Определить алгоритм хеширования

Тема в разделе "WASM.RESEARCH", создана пользователем Pyromancer, 31 авг 2007.

  1. Pyromancer

    Pyromancer New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2007
    Сообщения:
    3
    В космосимах от 3000AD конфигурационные на файлы данных навешен хэш, модить не даёт. Можно конечно просто переход у экзешнике изменять но это требует наличия распакованого экзешника, а стандартно они зашифрованы safedisk или starforce, потому хочется понять как хэш считается.
    Я разобрал экзешник с помощью IDA + Desquirr Decompiler и нашёл нужные функции(в аттаче).
    Насколько я понял в основе лежит MD5, но что-то с ним ещё делается - результирующий хэш длиной 256 бит
    Уважаемые гуру, подскажите что там ещё делается-то и что за магическое слово "E$x&W*u#ztH0evrpe" там натыкано везде?
     
  2. INM7RIPE

    INM7RIPE New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2004
    Сообщения:
    11
    Адрес:
    Ukraine
    Ну мне по ассемблерному листингу проще :) А почему ты решил что это MD5 ?
    Ты нашел там "волшебные" константы :
    //Initialize variables:
    var int h0 := 0x67452301
    var int h1 := 0xEFCDAB89
    var int h2 := 0x98BADCFE
    var int h3 := 0x10325476
     
  3. Pyromancer

    Pyromancer New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2007
    Сообщения:
    3
    И эти есть, и все константы для шага MD5, вот и ассемблерный листинг
     
  4. INM7RIPE

    INM7RIPE New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2004
    Сообщения:
    11
    Адрес:
    Ukraine
    MD5 считается примерно так:
    md5_starts( &ctx );
    md5_update( &ctx, (uint8 *) msg, strlen( msg ) );
    md5_finish( &ctx, md5sum );
    init и update у тебя есть - а finish я что-то не увидел.
     
  5. Pyromancer

    Pyromancer New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2007
    Сообщения:
    3

    Похоже finish я там обозвал функцией CalcNewHashValue, или по крайней мере она содержит код, который должен быть в финише.
    Ещё поковырявшись дебагером определил что хэш считается от данных полученых склеиванием того самого магического слова и содержимого файла а в остальном является совершенно обычным MD5, тач что разобрался :rolleyes: