: Константы, говорящие сами за себя
Какой криптографический алгоритм лучше использовать— "стандартный" или "самопальный"? Большинство разработчиков склоняются в пользу первого, вызывая у хакеров бурное ликование.
Рассмотрим защитный механизм, контролирующий свою целостность с помощью надежного и хорошо апробированного CRC32. Как найти процедуру проверки среди десятков мегабайт постороннего кода? Очень просто — по стандартному полиному. Там, где есть CRC32, всегда присутствует и константа EDB88320h. Контекстный поиск обнаруживает стандартный полином за считанные секунды, ну а дальше по перекрестным ссылкам нетрудно найти саму процедуру проверки и тот код, что ее вызывает.
Существует множество готовых программ, распознающих стандартные криптографические алгоритмы. Вот только одна из них: http://www.hexblog.com/2006/01/findcrypt.html. Это плагин для IDA Pro распространяющийся в исходных текстах на бесплатной основе.
Рисунок 6 плагин к IDA Pro, распознающий стандартные криптографические алгоритмы
Используя стандартные алгоритмы, необходимо тщательно скрыть все легко узнаваемые полиномы и предвычисленные таблицы, по которым они могут быть легко локализованы в теле программы.