Навесная защита Bit-hack (bit-hack@mail.ru) Спецвыпуск: Хакер, номер #057, стр. 057-088-2 А для тех упаковщиков, которые не содержат в себе распаковщиков, пишутся (естественно, другими авторами, обычно реверс-инженерами) автораспаковщики, которые исполняют свои обязанности пусть и хуже, чем распаковщики от авторов (например, недавно мной был написан распаковщик для UPX), но распаковывают файлы, после чего можно начать исследовать код с целью его "заимствования" или просто взлома программы. Опытные люди распаковывают файлы "руками", берется отладчик, дампер процессов и программа для восстановления импорта, после чего все "смешивается в нужных пропорциях". При ручной распаковке во время запуска любое приложение оказывается распакованным (когда этот код уже распакован и способен нормально работать, отслеживается передача управления из кода протектора/упаковщика в код оригинальной программы, после чего весь файл скидывается из памяти на жесткий диск и правится). Для тех, кто может Люди, имеющие деньги, защищают свои программы с помощью другого подкласса упаковщиков – протекторов. Эти защитные системы специализируются на защите, а не на упаковке (хотя тоже упаковывают). Многие программисты считают, что защитные механизмы, написанные реверс-инженерами (пусть даже бывшими) принесут только зло и что реверс-инженеры будут их ломать сами… Это большая ошибка: тот, кто занимался или занимается реверсингом, лучше всех знают про всевозможные уловки, секреты и многое другое, что помогает создать действительно надежные защитные системы. А взлом программ, упакованных своим же протектором – неблагодарное дело, из-за которого популярность протектора может упасть навсегда. Надеюсь, эта статья развеет такие заблуждения. Какие же защитные системы распространены шире и популярнее остальных? 1. AsProtect – протектор, написанный отечественным программистом – Алексеем Солодовниковым (когда-то занимался взломом). Он создал действительно мощную систему защиты. Основные преимущества этого протектора: 1.1. Защита кода программы с помощью очень стойких криптоалгоритмов. 1.2. Защита таблицы импорта (в последних версиях протектора защита позаимствована из Obsidium). 1.3. Предоставление служебных функций для проверки регистрационных ключей и для многого другого. 1.4. Использование виртуальной машины, при помощи которой защищается главная ветвь кода программы. 1.5. Упаковка файла. 1.6. Хорошая техническая поддержка. 1.7. Сильная интеграция в код программы, очень серьезно мешающая при распаковке – приходится изощряться любыми способами и восстанавливать недостающий код. 2. Armadillo – довольно старый протектор, содержащий некоторые революционные технологии. Его основные преимущества: 2.1. Защита кода программы с применением очень стойких криптоалгоритмов. 2.2. Защита таблицы импорта. 2.3. Предоставление служебных функций для проверки регистрационных ключей (в данном протекторе используется плохой алгоритм - были найдены "дыры", а после этого были "закейгенены" приложения, защищенные Armadillo и использующие функции проверки регистрационных ключей) и многих других. |