"С.П.Расторгуев, А.Е.Долгин "Как защитить информацию" (пособие по борьбе с хакерами)" - читать интересную книгу автора

следовательно, не будет дизассемблировать его.

... И В РЕЖИМЕ ОТЛАДКИ.
Опытный хакер, если ему не надоест разбираться с защитой, будет
неоднократно прогонять непонятые куски программы отладчиком. Некоторые
приемы борьбы с этим уже рассматривались.
Очень эффективное средство от пошагового выполнения программы -
назначение стека в ее тело. А если там находятся данные для работы, то
режим отладки усложняется. К тому же частое изменение местоположения
стека, поверьте на слово, измотает хакера окончательно.
Напомним, что при пошаговом режиме хакеру рекомендовалось обходить
участки, перехватывающие 1-е прерывание. Так вот, чтобы он не смог
воспользоваться этим советом, нужно поручить подпрограмме обработки
прерывания некоторую полезную функцию. Например, генерацию кодов или
дешифрацию.
Напомним также традиционные методы защиты [1].
Программа должна подсчитывать и проверять контрольные суммы своих
участков для определения "контрольных точек" или "точек останова",
расставленных хакером. Дело в том, что стандартное применение 3-го
прерывания предусматривает запись кода его вызова вместо байта
программы, а это меняет контрольную сумму. Периодическая же проверка
вовремя проинформирует программу о замене "родных" байт "чужими", то
есть о попытке исследования программы под отладчиком.
Известно, что выполнение программы в режиме трассировки
значительно уменьшает ее быстродействие. Поэтому по времени "прохода"
отдельных кусков защищаемого ПО можно определить работу под
отладчиком. По таймеру (например, запустив его 2-й канал) заранее
просчитывают скорость выполнения некоторого участка и сравнивают его
со значением, полученным в ходе работы программы. Если есть
существенное расхождение в полученных результатах, то можно сделать
вывод о выполнении данного участка под контролем. Из недостатков
метода отметим лишь разное быстродействие процессоров на разных ПЭВМ,
которое следует учитывать.
Интересный способ выматывания "исследователя" - применение
достаточно больших процедур, производящих некоторую сложную и, на
первый взгляд, важную работу, но на самом деле, не имеющих никакого
отношения к логике работы программы, так называемых "пустышек". Для
лучшей имитации их важности можно включать в них перехват 13h, 21h,
25h и 26h прерываний (обслуживающих ввод-вывод информации на внешние
устройства), что, безусловно, заинтересует хакера.
Оригинальный способ защиты ПО от исследования, примененный в
пакете COPYLOCK, использует конвейер шины данных микропроцессора. На
рис. 4.2 изображен его фрагмент. (Надеемся, что не навлечем на себя
гнев цивилизованных пользователей, афишируя некоторые тонкости
программы: все равно она безнадежно устарела, да и не вскрыта лишь
самыми ленивыми. А начинающим специалистам рекомендуем ознакомиться с
ее работой. Полный листинг опубликован в электронном журнале "НСК",
N1, 1992 г.). Фрагмент дан со значением смещений относительно кодового
сегмента, чтобы читатель смог увидеть, как команда REP STOSW в
подпрограмме SUBR затирает значением из регистра AX область ОЗУ, в