Виртуальная машина на страже порядка GPcH Хакер, номер #077, стр. 077-106-4 [принцип работы VM Protect] Думаю, тебе не лишним будет узнать, что делает VM Protect с exe-файлом после того, как ты жмешь на зеленый треугольник. Протектор имеет встроенный дизассемблер, позволяющий проанализировать код защищаемых функций, выявить константы, вызовы внешних процедур, а также используемые строковые данные и перевести все это дело в формат, понятный только интерпретатору VM Protect'а. После анализа в программе создаются две секции. Одна содержит движок виртуальной машины, который, кстати, всегда генерируется разный (соответствие функций командам p-кода выбирается случайно) и содержит интерпретатор кода, вторая секция содержит функции твоей программы, переведенные в p-код. А что же остается на том месте, где располагался оригинальный код защищенных функций? Туда размещается вызов интерпретатора, а остальное пространство попросту не используется (забивается нулями), поэтому не поленись после обработки программы сжать ее каким-нибудь упаковщиком. Если же ты все-таки поставил в опциях программы галочку "режим отладки", то на том месте, где была защищаемая функция будет гора команд INT 3. Это нужно для выявления внешних адресов, которые используются в основном только в Visual Basic программах. Вот, в общем, и вся идея защиты с помощью виртуальной машины. Пора начать воплощать идею в жизнь. [кодим свой интерпретатор] Чтобы лучше разобраться с принципом интерпретирования напишем простой скриптовый язык, обрабатывающий команды, понятные только ему и выполняющий их с помощью обычных инструкций процессора. Думаю, ты наверняка найдешь применение этому коду, так как сейчас авторы многих программ стремятся помочь пользователю подстроить программу под себя и нередко включают в свои программы для этих целей скриптовые языки, которые сами и придумывают. Рекомендую и тебе не пренебрегать в своих прогах использованием скриптов, так как если ты когда-нибудь забросишь программу - пользователи смогут самостоятельно повышать ее возможности за счет написания скриптов к ней. Как альтернативу скриптам многие используют плагины в программах, но плагины не дают такой свободы разработки, они требуют отдельной среды, компилятора и т.п. |