Крис Касперски
Первое, что делает исследователь, взяв в руки программу: смотрит,
упакована она или нет, и тут же бежит искать подходящий распаковщик, ведь
большинство программ всетаки упакованы, а готовые распаковщики есть не для
всех. Предлагаем вам алгоритм универсального распаковщика, «снимающего» даже
сложные полиморфные протекторы.
Как хитро я вас обманул! Ни о генах, ни о хромосомах речь здесь не идет.
Искусственный интеллект отдыхает на задворках истории. Genetic – в переводе с
греческого «общий». Генетический распаковщик – универсальный распаковщик, общий
для всех упаковщиков/протекторов. Кстати говоря, «General Motors» – это
не «двигатели для генералов», а двигатели вообще. Почувствуйте разницу!
Так о чем же мы будем говорить? Все больше и
больше программ распространяется в упакованном виде, и совсем не
потому, что так они занимают меньше места или загружаются быстрее, как это
обещают разработчики упаковщиков (на самом деле упаковка приводит к значительному
перерасходу памяти и тормозит всю систему. Подробности – в статье «паковать или
не паковать», электронную копию которой можно бесплатно скачать с ftp://nezumi.org.ru).
Усложнить взлом, затруднить анализ – вот для чего
на самом деле используются упаковщики, в конечном счете превратившиеся в
протекторы.
Одно и то же оружие используется как против
хакеров, так и против легальных исследователей. Вирусы, черви, троянские кони
практически всегда обрабатываются самыми последними версиями полиморфных
протекторов, для которых распаковщики еще не написаны, и прежде чем
антивирус научится распознавать заразу, программистам приходится проделать
колоссальный объем работы. Существуют и другие мотивы, побуждающие распаковать
программу: многие протекторы отказываются работать в присутствии пассивных
отладчиков, не дружат с виртуальными машинами и эмуляторами…
Но не будем философствовать на моральные
темы, лучше поговорим о деле. А говорить мы будем преимущественно о PE-файлах
NT-подобных системах (включая 64-битные редакции оных), в UNIX-мире упаковщиков
намного меньше, но все-таки они есть (взять хотя бы Shiva ELFprotector). Если
не углубляться в «политические» тонкости разногласий между UNIX и Windows,
алгоритм распаковки – тот же самый, поэтому не будем на нем
останавливаться, а поскорее ринемся в бой!