Опа какую я темку откопал
Вобщем то я просто вспомнил и тут удостоверился ещё раз: удивительно да? уже на 15 ответе не найдя ни одного разумного начали писать что "льют воду" дааа... посмотрели бы в то время на знаменитое "эээээээ" в которой и на 7?? ответе по теме ничего не было. И это был один из сааамых дииинных топиков в истории 2003 кажись года.
Ну чтож, вернёмся к теме
Есь предложения как вгрызаться в екзешниеи без склеивания? (Ну это же типа криво
Ладно я её разрыл ещё и потому, что просто хотел ещё раз полюбоваться... (угадаете чем?) угу
Да, Morpheus, темка та ещё - прямо таки опешил, когда увидел, что народ то ещё интересуется написанием
полезных программ.
Итак, по порядку:
1. Алгоритм, что описан выше (применение FindFirst) уже давно используют множество
полезных программ. В качестве примера назову Win32.Parite
2. Нужно помнить, что если мы решили дорабатывать стандрартные exe файлы, то нам нужно сделать как минимум
две вещи: нужно найти точку входа (Функцию WinMain) и вставить секцию собственного кода, лучше всего который
написать на ассемблере, между адресом вызова и непосредственно функцией.
Но возникает сложность: подавляющее большинство программ используют либо компрессоры для защиты, либо шифрователи,
либо и то и другое в одном флаконе (по принципу отладчика).
Любое изменение файла ведёт к изменению контрольной суммы файла, что учитывается при запуске данного файла
его отладчиком. И файл как правило становиться неработоспособным. (Пример: ковырните Nero)
В теории, вариант, который бы брал исходник, снимал копию, удалял оригинал и писал новый файл, но уже
работающий по принципу отладчика (отладчик в отладчике - о как!) был бы проклятьем рода человеческого.
С высоты собственного опыта могу уверить - на сегодняшний момент вообще нет проблем работать с файлами, защищёнными
системными средствами NT, а о линейке 95/98/9x вообще молчу.
Нужно по сути только выполнить несколько операций:
1. Выдрать оригинальный ico и присвоить его новому приложению
2. На мой взгляд, нельзя быть такими кровожадными и давать процессу заражать другие файлы
более одного раза за запуск (ну максимум 2).
В момент запуска приложения, работа нашего "трудяги" не будет заметна, а вот если он будет в отдельном процессе
висеть и всю файловую систему пережевывать на предмет косточек (exe), то это будет явно не профессионально.
Если чего не так - поправляйте - могу где ошибиться - время 5 утра, а спать то хочется...
Да, кстати, я давно не пишу на VB. C++ и Asm - вот мои новые товарищи по работе.
Чуть не забыл! А куда примерчик то слить, чтобы не голословно то было всё?
Модераторы, народ ведь интересуется - дайте площадочку под проект, не пожалейте лишнего метра хоста...
Если всё таки так получится, что более или менее работоспособное решение будет найдено, то непосредственно само заражение можно производить следующим образом:
(алгоритм взят из до ужаса заразного вируса Stator) 1)регистрируем тип файла EXE!!! то есть екзешники будут открываться с помощью COM файла, который на самом деле тот же экзешник, только переименованый. (В вирусе Stator - loadpe.com)
2)создаём тот самый COM файл.
ок, теперь при запуске экзешника запускается com фалйл, который заражает открытый экзешник, предварительно проверив не является ли он заражённым и собственно запуская его сам выключается.
должен сказать что в вышеприведённом вирусе заражения вообще нет как такового, он ложит файл размером 61 кб и дурацкой иконкой вместо оригинального екзешника, а оригинал ложит тут же только с расширением WXD. не думаю что такой ерундой стоит заниматься как этот деильный вирус, ИМХО файлы легче склеять. А вот с точкой входа потруднее будет
Точка входа и функция WinMain - это разные вещи. Инфицирование EXE уже не котируется, современные вирусы должны паразитировать на системе в стелс-виде, службой или драйвером.
2 Morpheus: Это вариант, коненчно, но увы больно он уж заметен будет.
2 Sharp: Точка входа и функция WinMain разные вещи, но в плане заражения, мы можем рассчитывать только на функцию WinMain, и только рассматривая её как ТОЧКУ ВХОДА или отправную точку программы.
Что же касается службы - то это уже вообще муть полная - тогда проще рассылать бесплатные компашки по сети с надписью "Вирус" и бумажной инструкцией по эксплуатации (ну а то вдруг кто не поймёт, как пользоваться).
2 sne: совершенно верно. Но хочу уточнить ещё вот что: на каких "санях" мы будем делать это?
На С++ это будет одно решение, а на VB немного другое.
И я ещё поглядел, можно написать вирус только для файлов, компилированных на VB. А ведь это тоже неплохая тема... Как вы считаете?
2logout
да уж темка ещё та
на решение это конечно не тянет, просто пару моментов можно взять, в частноси заражаться будут файла и на флэшках и на флоппи итд. это будет типа часть размножения, хотя не вирус жеделам а в файла вгрызаемся
Мне собственно безразлично на чем будет пример (из перечисленного тобою, Си, VB, ассемблер), но раз пример на форуме по VB, думаю будет логичным писать его на VB... Хотя можно написать на чем-то одном и переписать под остальные варианты )
Собственно для заражения важен сам принцып, пожтому какие именно файлы заражать - это не столь важно, имхо, важено само начало, основа...
Ну, да, не могу не согласиться.
А прада, что если я прописываю свой кусок кода в нужном месте, то он (кусок) обязательно должен быть на асме?
или если всё таки должен, можно ли вставить кусок кода, то есть готовый к выполнению экзешник на VB в файл - жертву как ресурс и запускать его тем самым кодом, который мы внедрили в точку входа?
М... Готовым exe'шником на VB думаю ты не обойдешься... Хотя можно предложить способ что в секцию помимо асьмового кода записывается и некоторые типы что представляют из себя исполняемый модуль, пусть даже и на VB... Асьмовый код при передаче на него управления, распаковывал бы эти данные на диск/в память и там бы запускал... Но это криво, и на некоторых этапах сложновасто
2 sne 1: если говорить о VB, то единственный вариант, когда готовый екзешник будет зажиматься нашим ПО и добавляться как часть файла в новый екзешник.
2 Morpheus: с асмом несколько сложнее будет: существуют некоторые правила для запуска исполняемого файла (всего их 6 вроде, по памяти). Наш код по сути должен дополнять секцию кода в приложении, уже скомпилированном. Изменеие длинны секции кода будет иметь некоторые последствия, который будут иметь значимость в зависимости от типа компилятора, на котором был собран екзешник: смещение адресов процедур, изменение контрольной суммы, потеря выравнивания секций и блоков по параграфу.
Посему получается так, что нужно написать почти целый дизассемблер, для того, чтобы правильно организовать вставку чужеродного кода в приложение.
Работа трудная, но если её проделать до кнца, то такой код будет проклятьем рода человеческого.
В данном свете, по ходу придётся обойтись только примером на VB, который демонстировал бы терию заражения - или вгрызания в exe.
Жду ссылочки от модераторов куда лить файло.
2 sne 2: Нет, это явно сложно: таскать за собой какие-то модули, либы. Что мы, недавно с дерева что ли слезли?
Мы находим адрес, с которого по сути и начинается работа приложения (выполнение кода, имеющего практическое значение в жизни нашей жертвы-екзешника: ну например где-то перед GetCommandLineA). Нужно найти такое место, чтобы все регистры либо не использовались, либо не содержали информации важной. Далее можно просто: либо JMP, либо Call, при условии, что наш код не будет оставлять никаких флагов, никакой другой беды в регистрах. Хотя по мне лучше сделать сразу вставку кода, т.к. вылечить этот файл будет гораздо труднее.
Можно конечно развивать тему более конкретно, с примером, но это будет не интересно остальным.
Давайте лучше попросим модераторов о добром деле, и будем совершенствовать вместе.
Если модераторы не проявят добровольного желания, то придётся кодом флудить прямо в топик!Вот так!
Страшно?!
2logout:
а чё, можно и отдельный раздел форума сделаем
Ну ты меня напугал капеец, лучше я склеивать буду
А про проклятие это и правда. только не долго он проживёт, обязательно какой нить чудак касперу отошлёт как newvirus и обломаются все создатели вот вир будет настолько злым что весь инет за час сломает... на нафига такой нужен ?