Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #57, АВГУСТ 2005 г.

Жизнь после компиляции

Bagie (bagie@bk.ru)

Спецвыпуск: Хакер, номер #057, стр. 057-074-1


Все о протекторах и упаковщиках

После компиляции нужно защищать свои программы всеми возможными способами. Один из самых популярных способов – использование протекторов. Соответственно, возникает вопрос: а какой протектор использовать, и стоит ли вообще делать это? Об этом и многом другом поговорим в этой статье.

Немного теории

В наше передовое время существует множество различных методов защиты приложений от посягательства со стороны других лиц. Давным-давно, когда о навесных методах защиты и не подозревали, жизнь программиста была намного сложнее, так как он должен был заботиться обо всем самостоятельно. С приходом первых упаковщиков исполняемых файлов все кардинально изменилось. Только появившись на свет, пакеры стали выполнять помимо своей основной функции, сокращения размера исполняемых модулей, еще и функцию защиты, так как после упаковки нельзя непосредственно редактировать файлы: для этого нужно распаковать файл, отредактировать его должным образом, а затем, по надобности, еще и упаковать. Конечно, сейчас мало кого удивишь таким "очень оригинальным методом защиты", поэтому становится популярной другая разновидность упаковщиков - протекторы. Протектор - это программа, которая помимо функции упаковки (хотя в некоторых протекторах упаковки нет) еще и модифицирует исполняемые файлы таким образом, что распаковать их после этого становится намного сложнее, чем при использовании любого другого пакера.

Те, кто не знает, что такое упаковщик исполняемых файлов, должно быть, думают, что все это бред. Мол, возьми архиватор, упакуй программу, а затем, когда понадобится, распакуй и пользуйся. На самом деле пакеры работают немного не так: во-первых, они не распаковывают программу на диск и затем не запускают ее. Декомпрессия происходит непосредственно в памяти программы, так что дополнительных дисковых ресурсов не потребуется. Во-вторых, алгоритмы сжатия, применяемые в пакерах, не столь требовательны к ресурсам системы, как алгоритмы сжатия, используемые в современных архиваторах. И, в-третьих, нам нужно защитить программу от посягательств с недоброжелательной к нам стороны. Как же защититься, если программа будет упакована WinRAR'ом, например? Можно, конечно, установить пароль на архив, но тогда что это такое получится :).

В реале простой упаковщик не обеспечивает должную защиту программам, так как распаковать такие упаковщики, которые не используют никаких защитных приемов, дело нескольких секунд. Для этих целей и были придуманы протекторы - они и упакуют, и закриптуют код программы каким-нибудь особым способом. Испортят таблицу импортов в файле. Будут использовать защиту против отладки. Будут проверять контрольную сумму, а некоторые - даже хэш-сумму запакованного файла, дабы исключить возможность подредактирования программы. Будут дико приставать с окошками, содержащими информацию о том, что программа не зарегистрирована или что срок действия демо-версии истек. И еще много чего будут. И действительно, набор функций для различных протекторов разный. Отличаются и уровни защиты, которые обеспечивают протекторы. И снова возникает вопрос: а какой протектор использовать, и стоит ли вообще делать это?

Содержание  Вперед на стр. 057-074-2