Крис Касперски
Большинство UNIX-программ распространяются в исходных текстах, но
количество коммерческих продуктов с закрытым кодом неуклонно растет. Зачастую
они распространяются в упакованном виде, что не только препятствует анализу, но
снижает производительность и ухудшает совместимость с UNIX-клонами. Покажем на
примере ELFCrypt, UPX, Burneye и Shiva, как можно освободиться от упаковщиков.
В Windows упаковщики исполняемых файлов получили очень большое распространение
и сформировали обширную рыночную нишу, переваривающую огромные деньги, питающие
целые фирмы и привлекающие высококвалифицированных специалистов, создающих
нехилые защитные механизмы, борьба с которыми требует консолидации всего
хакерского сообщества.
Под UNIX ситуация обстоит приблизительно так:
потребность в упаковщиках уже есть (и многие коммерческие фирмы хотели бы
выпустить закрытые порты своих продуктов под UNIX, основательно их защитив), но
рынок протекторов еще не успел сформироваться, а потому разработкой упаковщиков
занимается от силы десяток энтузиастов, повторяющих трюки времен ранней
молодости MS-DOS, и только Shiva попытался предпринять качественный рывок
вперед, вплотную приблизившись к протектору Software Passport (бывший Armadillo),
однако, это его и погубило. На всех Linux/BSD-системах, до которых я только
смог дотянуться, Shiva падает с сообщением «Segmentation fault». Какое же это
счастье Windows-программистам иметь одну, ну пусть две (с учетом 9x) ОС,
практически полностью совместимые между собой даже на уровне
недокументированных возможностей!
Создание надежной защиты, запускающейся более чем
на одной версии Linux, – практически безнадежное дело, а если вспомнить про BSD
и экспериментальные ядра типа Hurd, то к программированию можно даже не
приступать. В то же время, слабость защитных механизмов компенсируется
отсутствием достойного хакерского инструментария, поэтому даже простейшая
защита представляет собой большую проблему, превращая распаковку программ в
довольно нетривиальную задачу! Но мы ее решим! Начиная с самых простых
упаковщиков и приобретая в сражении тактические навыки и необходимый
инструментарий, в конечном счете, мы сможем сразиться с кем угодно!