![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
В одной конференции некогда мне встретился следующий диалог трех молодых людей (в просторечии ламеров).
SP> Аидстест поковыряй:)) Он такой извращенный, оказывается... Че-то там в SP> памяти елозит, расшифровывается... Боится, что его поганую рекламу SP> повыкидывают:))
AL> Гы, У нас преп на кафедре развлекается: патчит aidstest так, что у AL> того реклама вверх ногами переворачивается:))) 50> Чет сомневаюсь я, что он аидстест именно патчит. Скорей дописывает к нему S0> [цензура], которая графический экран с рекламой переворачивает. Это куда S0> проще.
На самом деле это действительно легко правится заменой всего двух команд в исполняемом файле. Логично, что реклама выводится построчно сверху вниз. Поэтому, указав новое "начало" вывода строк и изменив инкремент на декремент, мы сможем вывести изображение в обратном порядке. Т.е. "вверх ногами".
С последним проще (и DEC и INC — однобайтовые коды), а вот "начало" экрана передается процедуре как PUSH ES:[BP+xxx]. В отладчике трудно, не выходя из процедуры, найти код, который передает этот аргумент. Но можно не сходя с текущей позиции курсора, заменить пятибайтовую команду PUSH ES: [ВР+хххх] на трехбайтовую PUSH 0х150 (где 0х150 представляет приблизительное число строк экрана) и два оставшиеся байта заменить командами NOP.
Можно наслаждаться перевернутой рекламой. Неплохая первоапрельская шутка или приятный (точнее, неожиданный) сюрприз для пользователей. Интересно, сколько из них сочтут это проявлениями коварного вируса?
Пару слов об "извращенности" AIDSTESTa. Любопытно, но я надеюсь, что SP, говоря о защите рекламы (которая представляет собой обычный рсх-файл, дописанный к файлу, даже не зашифрованный и легко распознаваемый на глаз в дампе файла при минимальном опыте работы с графикой), не имел ввиду сжатие AidsTest'a обычным ехе-пакером.
Впрочем, по непонятной причине все выводимые антивирусом тексты слегка зашифрованы. Но настолько тривиально, что это не заслуживает упоминания. Криптор построен всего из двух команд — sub al,el/add с1,7, но шифротекст может быть раскрыт даже без знаний этого алгоритма ввиду его полной некрип-тостойкости.
Самое интересное, что на фоне всего этого верификация собственного кода напрочь отсутствует! Во всяком случае, я заменил тексты, перевернул рекламу, потом отключил ее, скорректировал контроль "старости", затем выкинул его напрочь и... никаких ругательств со стороны антивируса.
Плохо, очень плохо выпускать такие программы. Они не обеспечивают даже минимальной безопасности и легко могут быть видоизменены вирусом или злоумышленником в своих целях. Еще совсем недавно, когда отсутствовал Интернет (а вместе с ним быстрые и легальные каналы получения ПО), антивирусы распространялись (между прочим, незаконно) через сеть BBS. Нередки были случаи, когда "свежая" версия представляла собой старую с измененной "вручную" версией продукта, но зараженную новым вирусом. Так был широко распространен, например, вирус "Фантом". Помнится, что тогда Дмитрий Николаевич горько сетовал по поводу морали вирусописателей. Это все верно, конечно. Но не задумывался ли он (а вместе с ним и его клиенты), что очень нехорошо, когда массовая антивирусная система имеет такой потрясающе низкий уровень защиты? Небрежность разработчика в который раз стала причиной эпидемии. А вирусы... (точнее, их авторы) были единственными "козлами отпущения".
Однако я до сих пор не сказал, как найти эти самые команды в сотнях килобайт запутанного кода, которые следует исправить? Есть много путей. Один из них — найти саму рекламу непосредственно в памяти. Как уже отмечалось, это обычный рсх-файл. Остается только поставить точку останова на любой байт, принадлежащий этому фрагменту, и код, читающий ее, будет искомой функцией вывода картинки на экран. Отмечу, что не стоит ставить точку останова на диапазон памяти, так как это сильно замедлит выполнение программы, и будет ничуть не эффективнее всего одной точки.
Ничего интересного в AidsTest'e так и не наблюдалось...
Дата публикования: 2014-12-08; Прочитано: 221 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!