В данном случае, в программу помещается процедура проверки целостности самой программы, что позволяет определить была ли программа изменена (были ли внесены какие-то либо изменения в ее код). Если эта процедура обнаруживает, что в программу внесены изменения, она делает программу не функциональной .
Это позволяет защитить программный продукт, от изменений со стороны злоумышленника (применения им крэков). Работа этой процедуры должна быть неприметной для тех, кто будет работать с программой, это позволит сбить с толку неопытных взломщиков. Также ее программная реализация не должна, иметь вид "if (programm_code_original()) { i = 1} else { i = 0}", так как такую процедуру проверки будет легко обойти, например для этого достаточно будет определить место, где она вызывается, и изменить само условие проверки. Процедура проверки должна быть разбита на как можно большее количество этапов, которые будут выполняться в разное время работы самой программы. Если все этапы проверки будут успешно пройдены, тогда можно будет предположить, что программа оригинальна, и не содержит дефектов (изменений). Существуют такие пути проверки целостности программы: