Недавно столкнулся с новым для меня способом защиты программ от отладки. При старте программа считает md4 от своей секции .text, далее сумма обрабатывается нетривиальным образом, чтобы запутать и затруднить отслеживание того, что происходит только по дизассемблерному выхлопу. Таким образом отлаживать программу, чтобы отследить ход проверки нельзя, так как отладчик, ставя брейкпоинты, изменяет код и тем самым изменяет контрольную сумму.
Сложность взлома такой защиты соответствует сложности алгоритма запутывания, так как в конце все равно идет проверка на заранее известное значение.
Возник вопрос, а возможно-ли действуя по тому-же принципу (только проверка целостности секции .text, никаких противо-отладчиковых приемов, расчитанных на конкретные отладчики) создать более стойкую защиту? То-есть нужно как-то исключить сравнение в конце.
PS: защита только от отладки, не от копирования и распространения.