Даже не проводя анализа машинного кода или некоторых внешних признаков (например, сообщений программы о CRC32 ошибке), первые предположения об используемом алгоритме можно сделать, основываясь на количестве байт кэш-величины. Наиболее известный алгоритм подсчета контрольной суммы CRC32 вычисляет 32-битовую (четырехбайтовую) величину. Этот алгоритм подсчета контрольной суммы используется в ряде сетевых технологий. Примеры его программной реализации могут быть найдены повсеместно, только запустите поиск в Интернете. Например, подходящий пример может быть найден по адресу www.faqs.org/faqs/compression-faq/part1/section-26.html.
Алгоритмы MD4 и MD5 (MD – сокращения от Message Digest – профиль сообщения. Профиль сообщения – это короткая цифровая строка фиксированной длины, формируемая из более длинного сообщения с использованием специального алгоритма) генерируют 128-битовую (16-байтовую) величину, а алгоритм SHA (SHA – Secure Hash Algorithm – алгоритм аутентификации и проверки целостности информации) – 160-битовую (20-байтовую) величину.
Примечание
Возможны любые изменения описанных в этой секции методов, если разработчик захочет усложнить жизнь хакеру. В худшем для хакера случае он сможет определить алгоритм, просмотрев выполнение программы в отладчике. Пример использования отладчика может быть найден в главах 4 и 8 книги.
Проблемы сжатия и шифрования
Эта тема схожа с предыдущей, но с небольшим дополнением. Если файл сжат или зашифрован, то нельзя определить, где именно надо модифицировать файл, пока не будет выяснен механизм шифрования или сжатия.
Если проанализировать различия между исходным и сжатым или зашифрованным файлом (если используется качественный алгоритм преобразования файлов), то можно обнаружить изменение большого количества данных в файле. В начале главы автор приводил пример применения метода поиска различий для игры Heroes of Might and Magic II, хотя в то время уже продавалась игра Heroes of Might and Magic III. Дело в том, что, как кажется автору, в последней игре файлы сжимаются. Автор делает подобное предположение по следующим причинам. Во-первых, файл неразборчив (при просмотре файла не видно английских слов). Во-вторых, при сохранении игры каждый раз изменяется почти весь файл целиком, даже если между сохранением игры ничего не делается. В-третьих, с течением времени размер файла слегка изменяется. Поскольку размер сжатого файла зависит от его содержания, а размер зашифрованного файла имеет тенденцию оставаться постоянным при шифровании одинакового числа байт, то автор предполагает, что в данном случае используется сжатие вместо шифрования.