В космосимах от 3000AD конфигурационные на файлы данных навешен хэш, модить не даёт. Можно конечно просто переход у экзешнике изменять но это требует наличия распакованого экзешника, а стандартно они зашифрованы safedisk или starforce, потому хочется понять как хэш считается. Я разобрал экзешник с помощью IDA + Desquirr Decompiler и нашёл нужные функции(в аттаче). Насколько я понял в основе лежит MD5, но что-то с ним ещё делается - результирующий хэш длиной 256 бит Уважаемые гуру, подскажите что там ещё делается-то и что за магическое слово "E$x&W*u#ztH0evrpe" там натыкано везде?
Ну мне по ассемблерному листингу проще А почему ты решил что это MD5 ? Ты нашел там "волшебные" константы : //Initialize variables: var int h0 := 0x67452301 var int h1 := 0xEFCDAB89 var int h2 := 0x98BADCFE var int h3 := 0x10325476
MD5 считается примерно так: md5_starts( &ctx ); md5_update( &ctx, (uint8 *) msg, strlen( msg ) ); md5_finish( &ctx, md5sum ); init и update у тебя есть - а finish я что-то не увидел.
Похоже finish я там обозвал функцией CalcNewHashValue, или по крайней мере она содержит код, который должен быть в финише. Ещё поковырявшись дебагером определил что хэш считается от данных полученых склеиванием того самого магического слова и содержимого файла а в остальном является совершенно обычным MD5, тач что разобрался :rolleyes: