28
Изменение исполняемого файла не всегда может проводиться с
недобросовестными целями, а может быть мотивировано отключением
нежелательных действий со стороны программы (например, напоминания о
регистрации, исправление ошибок, сокращения функциональности программы и
т.д.). В этих случаях соответствующие команды процессору часто заменяются на
байты со значением 90h, что соответствует ассемблерной команде nop (no operation),
то есть «пустой команде», не выполняющей никаких действий.
Между тем, патч возможен, как правило, в том случае, когда исполняемый файл
программы не защищён специальными упаковщиками и шифраторами,
скрывающими реальный код исполняемого файла. Для последнего типа программ
зачастую используется самая интеллектуальная часть обратной разработки —
исследование кода программы при помощи отладчика и создание генератора ключей,
но возможны и другие решения [16]:
• использование загрузчика: способ обходить некоторые виды защиты
ПО, заключающиеся в использовании внешних систем защиты:
определенные фрагменты программы в оперативной памяти
заменяются сразу после загрузки в память и до непосредственным
запуском кода в точке входа
• применение патча (в том числе бинарного): способ, похожий на
«загрузчик», но модификация производится статически в файлах
программы. Является одним из самых простых и быстрых способов
взлома ПО.
• использование взломанной версии: способ заключается в подмене
оригинальных файлов программы файлами, которые уже взломаны.
• использование эмулятора ключа: способ используется для обмана
защит, построенных на использовании в качестве защиты