С чем склеить вирус

Обновлено: 19.04.2024

на компе подруги очень много вирусов(о чем я не знала). после этого все папки стали файлами с расширениями EXE. в этих папках была очень важная информация, без которой завтра не обойтись. что делать?

это вирус malwer-gen,dorkbot файлы просто скрытые расказываю как сделать их видимыми нажимаем сервис свойства папки вид убираем галку с скрывать защищеные системные файлы комп скажет типа это опасно нажимает тупо да скрытые файлы и папки галку ставим на показывать скрытые файлы и папки жмём применить окей всё дело вшляпе если хр конечно если 7 то не чем помоч не могу

Чистим флешку
Далее от вас требуется только внимание, внимание, и еще раз внимание! ! Никаких спец навыков и знаний!
1) Присоединяем флешки к компьютеру, которые как Вы думаете могут быть заражены
2) Открываем флешку привычным нам способом через "Мой компьютер"
Для того что б вам было удобнее чистить флешку необходимо, когда Вы зашли на флеш, сделать в ней вид папки "таблицей"
3) Ищем полупрозрачный (скрытый) файл с названием Recycled расширением ".exe" и иконкой папки, удаляем через Shift+Del
4) Далее Ищем все полупрозрачные папки (скрытые) Записываем их название на бумажку. Как понять что это папка а не файл? Просто! Присмотритесь внимательно, напротив нее написано "Папка с файлами" :)
5) Дальше ищем файлы с иконкой папки, расширением .exe и названием тех полупрозрачных папок (скрытых) название которых Вы записали на бумагу. Нашли? удаляем их через Shift+Del Боитесь что удаляете ваши папки с информацией? Присмотритесь в конце названия "папки" идет ".exe" и надпись напротив нее "Приложение" это исполнительный файл трояна, а не папка, удаляем!
Вот так в общем то без антивирусных утилит мы с вами почистили систему и флешку от трояна. Если переживаете все таки, что возможно Вы что то пропустили, скачайте Dr.Web Cureit! и просканируйте полностью систему (если Вы с флешки удалили вирус, а он снова там появляется, то это значит что вирус находится в системе т. е. в вашем компьютере) со всеми флешками

В хакерской практике достаточно часто возникает потребность
внедрить в готовый exe-файл свой код (необязательно вредоносный) так, чтобы он получал управление первым, не вызывал ругательств со стороны антивирусов и вообще по возможности вел себя максимально скрытно, не бросаясь в глаза. Как это сделать? Мы знаем, как, и сейчас обстоятельно тебе это объясним.

Правильные хакеры так себя не ведут и склеивают программы самостоятельно. И это совсем нетрудно! Нужны лишь верный друг hiew и минимальные навыки программирования на Си. Но прежде чем брать быка за рога, сделаем одно важное уточнение. Внедряемый код не обязательно должен быть вирусом, червем, руткитом или любой другой вредоносной заразой, поэтому, во избежание недоразумений, условимся называть его X-кодом.

Как мы будем действовать

Всякий exe-файл импортирует одну или несколько динамических библиотек (Dynamic Link Library, или сокращенно DLL), прописанных в таблице импорта. При запуске exe-файла системный загрузчик анализирует таблицу импорта, загружает все перечисленные в ней динамические библиотеки, вызывая функцию DllMain для инициализации каждой DLL, и только после этого передает управление на оригинальную точку входа (Original Entry Point, или сокращенно OEP) запускаемого exe-файла.

Подготовка к экспериментам

$inject.exe
I'm nezumi

Берем в свои загребущие лапы hiew, открываем файл inject.exe, переходим в hex-режим по , давим для отображения PE-заголовка, нажимаем (Dir) и среди прочих элементов IMAGE_DATA_DIRECTORY выбираем секцию импорта (Import), расположенную в нашем случае по RVA-адресу, равному 5484h и раскинувшуюся в ширину на целых 28h байт (смотри рисунок 1).

Клавиша переносит нас к структуре Import Directory Table, о которой мы поговорим чуть позже. А пока обсудим, как найти указатель на Import Directory Table при отсутствии hiew'а.

Двойное слово, лежащее по смещению 80h от начала PE-заголовка (легко опознаваемого визуально по сигнатуре PE), и есть RVA-адрес, указывающий на Import Directory Table, а следующее двойное слово хранит ее размер. Так что для поиска таблицы
импорта hiew совсем необязателен.

Таблица импорта представляет собой достаточно сложное сооружение иерархического типа. Вершину иерархии занимает структура Import Directory Table, фактически являющаяся массивом подчиненных структур типа IMAGE_IMPORT_DESCRIPTOR, каждая из которых содержит RVA-указатель на имя загружаемой динамической библиотеки, ссылки на OriginalFirstThunk и FirstThunk с именами/ординалами импортируемых функций (причем поле OriginalFirstThunk не является обязательным и может быть равно нулю). Два других поля — TimeDateStamp (временная отметка) и ForwarderChain (форвардинг) - также необязательны, и потому для подключения своей собственной DLL нам необходимо заполнить всего лишь два поля структуры IMAGE_IMPORT_DESCRIPTOR: Name и FirstThunk, а также создать таблицу Import Address Table (сокращено IAT), импортирующую по меньшей мере одно имя (в данном случае
dummy).

Если вместо стройной иерархии структур в нашей голове образовалась каша, не стоит волноваться — это нормально! Постепенно она утрясется и все структуры встанут на свои места, так что оставим их дозревать, а сами сосредоточимся на текущих проблемах. Чтобы внедрить X-DLL в Import Directory Table, необходимо добавить еще один экземпляр структуры IMAGE_IMPORT_DESCRIPTOR. Но просто так сделать это не получится, поскольку сразу же за концом Import Directory Table начинается IAT первой динамической библиотеки, и нам просто некуда втиснуться, если, конечно, не перенести Import Directory Table в какое-нибудь другое место! А что?! И перенесем!

Теперь, прокручивая файл, клацаем до тех пор, пока не выйдем на оперативный простор свободного места, оккупированного длинной вереницей нулей. В нашем случае это место располагается по адресу 405810h, непосредственно за концом таблицы импорта.

Далее нам необходимо скопировать оригинальную Import Directory Table на новое место, не забыв при этом зарезервировать место для одного элемента структуры типа IMAGE_IMPORT_DESCRIPTOR, в который мы чуть позже поместим нашу динамическую библиотеку. Она будет проинициализирована самой первой, что очень полезно для борьбы с антивирусами, иммунизирующими exe-файлы путем прививки им специальной dll-вакцины, выполняющей проверку целостности содержимого образа исполняемого файла.

Поскольку, как нетрудно подсчитать, размер структуры IMAGE_IMPORT_DESCRIPTOR составляет 14h байт, а незанятая область начинается с адреса 405810h, мы должны передвинуть курсор по адресу 405824h, нажать , выделить 28h байт (размер оригинальной Import Directory Table) и нажать еще раз, а потом обязательно переместить курсор в начало выделенного блока. Далее жмем (Get Block), вводим имя файла, в который мы только что сохранили блок, - idt-org и считываем его с диска.

Теперь возвращаемся в начало файла и корректируем RVA-адрес таблицы импорта, который в данном случае составит 5824h. У тебя может возникнуть вопрос: почему 5824h, а не 405824h?! Да потому что RVA-адреса получаются путем вычитания базового адреса (прописанного в заголовке PE-файла и в нашем случае равного 400000h) из виртуального адреса (равного 405824h). Причем, с учетом порядка старшинства байт, принятого на процессорах x86 (младшие биты располагаются по меньшим адресам), мы должны записать 24 58, а не 58 24, как делают многие начинающие хакеры, удивляясь потом, почему оно не работает.

Значит, открываем файл inject.exe в hiew'e, находим PE-сигнатуру, опускаем курсор вниз на 80h байт, видим там 84 54 (смотри рисунок 1), нажимаем для разрешения редактирования, меняем адрес на 24 58, сохраняем изменения по и выходим… за пивом. Пиво для хакеров — это святое!

Проверяем работоспособность файла — а вдруг она пострадала?! Запускаем inject.exe и (если все операции были проделаны правильно) на экране появится триумфальное приветствие. В противном же случае система откажется загружать файл или выбросит исключение.

Смочив пересохшее горло, приступаем к самой сложной и самой ответственной части — заполнению структуры IMAGE_IMPORT_DESCRIPTOR. Начнем с того, что переместим курсор в конец Import Directory Table, подогнав его к адресу 405850h, и запишем имя функции-пустышки (dummy), оканчивающееся нулем и предваренное двумя нулями, а следом за ним – имя внедряемой динамической библиотеки injected_dll.dll. Впрочем, порядок их расположения может быть и другим, системному загрузчику на такие мелочи уже давно положить.

Сделав это, перемещаемся на первый байт, ранее зарезервированный нами для структуры IMAGE_IMPORT_DESCRIPTOR, и начинаем колдовать. Первое двойное слово оставляем равным нулю. За ним идут 4 байта, отведенные для TimeDataStamp, и мы, желая слегка поизвращаться, занесем сюда IAT, то есть двойное слово, содержащее RVA-адрес импортируемой функции. В нашем случае эта функция зовется dummy, а ее имя (предваренное двумя нулями!) начинается с RVA-адреса 5850h. Учитывая обратный порядок байт на x86, пишем: 50 58. Пропустив следующее двойное слово (Forwarder Chain), в поле Name записываем RVA-адрес имени внедряемой динамической библиотеки injected_dll.dll, в нашем случае равный 5858h. Остается заполнить последнее поле — Import Address Table, содержащее RVA-адрес таблицы IAT, размещенной нами поверх поля TimeDateStamp с RVA-адресом, равным 5814h.

Вот, собственно говоря, и все… После добавления новой структуры IMAGE_IMPORT_DESCRIPTOR в массив Import Directory Table, последний будет выглядеть так:

Остается сущая мелочь. Надо вернуться в начало файла, отсчитать от PE-заголовка 80h байт, исправив указатель на таблицу импорта с 5824h на 5810h и увеличив ее размер до 3Сh. Сохраняем проделанные изменения и, набрав побольше воздуха в грудь, запускаем файл
inject.exe:

$inject.exe
hello,world!
I'm nezumi
good-bye,world!

Копирование X-DLL в NTFS-stream

Теперь запускаем файл inject.exe и убеждаемся, что его работоспособность в результате последних манипуляций ничуть не пострадала.

Переход от теории к практике

Внедрение своей собственной динамической библиотеки - это, конечно, очень хорошо, но на практике гораздо чаще приходится сталкиваться с тем, что требуется
внедрить чужой исполняемый файл. Что делать?! Преобразовывать его в DLL?! Конечно же нет! Достаточно просто слегка доработать нашу X-DLL, научив ее запускать exe-файлы посредством API-функции CreateFile, при этом сами исполняемые файлы можно (и нужно) поместить в именованные NTFS-потоки, число которых фактически неограниченно. Причем, если внедряемый exe тащит за собой динамические библиотеки или другие компоненты, они также могут быть внедрены в NTFS-потоки (естественно, в текущем каталоге их уже не окажется, и потому исполняемый файл придется подвергнуть правке на предмет изменения всех путей). Если же этот файл упакован (а большинство боевых утилит типа систем удаленного администрирования редко поставляются в открытом виде), наша X-DLL может перехватить API-функции CreateFile/LoadLibrary, автоматически отслеживая обращения к отсутствующим файлам и подсовывая вместо них соответствующие им именованные NTFS-потоки.

Другой немаловажный момент. Отправляя exe-файл с внедренной в него X-DLL по почте, записывая его на лазерный диск или любой другой не-NTFS-носитель, мы теряем все именованные потоки, и программа тут же отказывает в работе, ругаясь на то, что не может найти dll.

Повторяем процедуру пересылки файла по электронной почте еще раз, распаковываем полученный архив, запускаем inject.exe, и… о чудо! Он работает!

Заметай за собой следы (для грамотных парней)

Некоторые файлы (особенно упакованные протекторами) скрупулезно следят за своей целостностью и на попытку внедрения реагируют, прямо скажем, не совсем адекватно. Однако поскольку X-DLL получает управление вперед остальных, она может восстановить таблицу импорта в памяти, как будто все так и было, словно к ней никто и не прикасался. Для этого достаточно вызывать API-функцию
VirtualProtect, присвоив соответствующим регионами памяти атрибут
PAGE_READWRITE, восстановить таблицу импорта (оригинал которой легко сохранить в
X-DLL), а затем заново установить атрибут PAGE_READONLY с помощью все той же
VirtualProtect. Более того, X-DLL может выделить блок памяти из кучи с помощью API-функции VirtualAlloc и скопировать туда свое тело, которое, естественно, должно быть полностью перемещаемо, то есть сохранять работоспособность независимо от базового адреса загрузки. Далее остается только выгрузить ставшую ненужной X-DLL вызовом FreeLibrary (на тот случай, если какой-то хитрый механизм проверки целостности решит перечислить список загруженных модулей).
Маленький технический нюанс: на процессорах с поддержкой битов
NX/XD, запрещающий исполнение кода в страницах памяти, не имеющих соответствующих атрибутов, выделяемому блоку памяти следует присвоить атрибут
PAGE_EXECUTE_READWRITE. В противном случае, если у пользователя задействован аппаратный DEP для всех приложений (а не только для системных компонентов, как это происходит по умолчанию), вместо выполнения машинного кода система выбросит исключение, и выполнение троянизированной программы завершится в аварийном режиме.

В заголовке PE-файла имеется специальное поле, содержащее контрольную сумму. В подавляющем большинстве случаев оно равно нулю, но если это не так, то после вмешательства в таблицу импорта контрольную сумму необходимо пересчитать. Этим занимается утилита
EDITBIT.EXE, запущенная с ключом ‘/RELEASE’. Она входит как в штатную поставку компилятора Microsoft Visual
Studio, так и в Platform SDK, так что проблем с ее поиском возникнуть не должно.

Заключение

Технологии внедрения в исполняемые файлы не стоят на месте и развиваются вместе с защитными механизмами и операционными системами. Извечная проблема меча и щита — кто усовершенствуется первым. Использование готовых утилит, работающих в полностью автоматическом режиме, во-первых, непрестижно, а во-вторых, слишком ненадежно. Разработчики антивирусов даром свой хлеб не едят! Чтобы не погореть на мелочах, весь X-код следует писать самостоятельно. До тех пор пока он существует в единственном экземпляре, у защитных систем не остается никакого шанса предотвратить атаку!



Полную версию статьи
читай в майском номере
Хакера! Кроме того, в видеоинструкции на диске мы наглядно показываем, как
надо склеивать файлы. Рекомендую посмотреть видео сразу после прочтения статьи, чтобы разрешить все возникшие вопросы.
И конечно: на диске тебя ждут все упомянутые инструменты, примеры, компилятор Си для сборки приведенного кода, а также подборка
готовых джойнеров.

Вирусы стали неотъемлемой частью нашей компьютерной (и не только) жизни. На написание данной статьи меня подтолкнуло то, что, на мой взгляд, в Сети маловато информации, наиболее полно раскрывающей весь процесс написания вируса. Совсем недавно мне необходимо было написать простую самораспространяющуюсю программу, которая не производила бы каких-либо вредных для системы действий, но в то же время использовала бы вирусные механизмы распространения. Скажу, что все-таки в Интернете есть информация на эту тему. И даже встречаются исходники подобных программ. Но во всем приходится долго и упорно разбираться, если хочешь сделать что-то сам. Итак, в чем-то более-менее разобравшись, я хочу поделиться с вами - читателями - информацией.

В данной статье будет рассмотрен процесс написания простого вируса, заражающего исполняемые файлы формата PE (Portable Executable) EXE. Также напишем программу-доктора, которая ищет в указанной директории и во всех поддиректориях файлы, зараженные нашим вирусом.

Данная самораспространяющаяся программа не содержит в себе никакого вредоносного кода, но ее с легкостью можно дописать до вполне боевого вируса. Поэтому хочу заметить, что
ВСЕ ПРИВЕДЕННОЕ В ЭТОЙ СТАТЬЕ МОЖЕТ БЫТЬ ИСПОЛЬЗОВАНО ТОЛЬКО В УЧЕБНО-ПОЗНАВАТЕЛЬНЫХ ЦЕЛЯХ. Автор не несет никакой ответственности за любой ущерб, нанесенный применением полученных знаний.

Если вы с этим не согласны, то, пожалуйста, прекратите чтение этой статьи и удалите ее со всех имеющихся у вас носителей информации.

Кратко о формате PE

Поскольку наш вирус будет заражать именно PE-файлы, мы, естественно, должны иметь представление об этом формате. Это формат исполняемых в операционной системе Windows файлов. Кстати, раз уж мы заговорили об ОС, то заметим, что наш вирус должен нормально исполняться на как можно большем числе ОС данного семейства. Программа тестировалась на работоспособность в Win
9x\Me\NT\2000\XP\2K3.

Итак, если заглянуть внутрь типичного исполняемого файла, мы увидим следующую структуру в упрощенном виде:


PE-файл в самом своем начале (MZ-заголовок) содержит программу для ОС DOS. Эта программа называется stub и нужна для совместимости со старыми ОС. Если мы запускаем PE-файл под ОС DOS или OS/2, она выводит на экран консоли текстовую строку, которая информирует пользователя, что данная программа не совместима с данной версией ОС. Программист при линковке может указать любую программу DOS, любого размера. После этой DOS-программы идет структура, которая называется IMAGE_NT_HEADERS (PE-заголовок). Эта структура описывается следующим образом:

Первый элемент IMAGE_NT_HEADERS – сигнатура PE-файла. Для PE-файлов она должна иметь значение "PE\0\0". Далее идет структура, которая называется файловым заголовком и определенная как IMAGE_FILE_HEADER. Файловый заголовок содержит наиболее общие свойства для данного PE-файла. После файлового заголовка идет опциональный заголовок - IMAGE_OPTIONAL_HEADER32. Он содержит специфические параметры данного PE-файла. После опционального заголовка начинается таблица секций (Object Table). В ней содержится информация о каждой секции. После таблицы секций идут исходные данные для секций. В конец PE-файла можно записать любую информацию и от этого функционирование программы не изменится (если там не присутствует проверка контрольной суммы или что-то подобное).

Способы заражения PE

До сих пор мы ничего не сказали о том, каким способом будем заражать файл, ведь их несколько:

  • Внедрение в PE-заголовок
  • Расширение последней секции
  • Добавление новой секции

Для нашего учебного вируса подойдет наиболее простой метод расширения последней секции. Сразу скажу, что большими недостатками последних двух методов является то, что размер файла-жертвы заметно увеличивается при заражении, т.к. мы дописываем код вируса в конец файла. Хотя оговорюсь, что при втором методе возможно извратиться так, чтобы можно было записываться в пустой оверлей в конце последней секции, поэтому размер файла может измениться незначительно, либо не измениться вообще. При первом же методе размер файла не изменяется, но недостаток такого метода - не всегда можно найти такой EXE, чтобы в его заголовке хватило места для кода нашего вируса. Приходится либо заражать очень малое количество программ, либо сильно ограничивать возможности нашего вируса, т.к. это уменьшает размер его кода. Метод добавления новой секции немного сложнее, поэтому его рассматривать не будем. Скажу только, что файл с какой-нибудь новой секцией будет выглядеть более подозрительно.

Нам для написания нашего вируса достаточно знать, что при заражении файла мы должны
изменить некоторые значения (какие - прочитаем ниже) в PE-заголовке, изменить дескриптор последней секции, добавить код нашего вируса в конец последней секции, а также изменить точку входа программы так, чтобы управление при ее запуске передавалось сначала нашему вирусу, а уж затем - самой программе. На следующем рисунке красным цветом отмечены те части файла, которые будут изменены при заражении:


Вычисляем дельта-смещение

Итак, мы приняли решение дописываться в конец исполняемого файла. Прежде, чем приводить код, отмечу, что для начала нам нужно найти адреса необходимых API-функций. Разберемся сейчас с наиболее важными понятиями: Virtual Address (VA) и Relative Virtual Address
(RVA).

VA - это адрес чего-нибудь в оперативной памяти. RVA - это смещение на что-то относительно того места, куда проецирован файл. А если просто сказать, то VA = RVA + база.

Чтобы наш вирус работал, он должен быть написан в базонезависимом коде. В связи с этим появляется еще одно понятие - дельта-смещение.

Что это такое? Все очень просто. Когда вирус находится в чистом виде (так называемое первое поколение), т.е. не записан еще ни в какой файл, когда он работает, он обращается к переменным как есть относительно прописанного в его заголовке адреса, куда файл проецирован системой. Теперь представим, что наш вирус заразил программу. И там начинает работать. Но теперь он работает не там, куда его загрузил загрузчик, а из того места, где находится загруженная зараженная программа. Получается, что переменные теперь указывают на абсолютно другое место. Поэтому обратившись к своим данным по заданным адресам, вирус прочитает совсем не те данные, которые ему необходимы. Для того, чтобы решить эту проблему, вычисляется
дельта-смещение. Это смещение относительно начала вируса, а не той программы, которая была им заражена.

Как видим, при входе в вирусный код мы вызываем call. Но call после вызова помещает в стек адрес возврата. Вычитаем из него адрес метки VirDelta и получаем нужное нам смещение относительно начала файла. Далее сохраняем дельта-смещение для дальнейшего использования (прибавляя его к адресам переменных, последние принимают корректные значения).

Ищем адреса API-функций

Следующая проблема состоит в поиске этих самых адресов. Но для начала нужно найти адрес библиотеки kernel32.dll в памяти, т.к. самые необходимые функции находятся именно в ней. Если нам потребуется использовать функции из других библиотек, мы просто используем LoadLibrary и GetProcAddress, которые находятся в kernel32.dll.

Существует множество методов поиска базы kernel32, один из которых - использование механизма структурной обработки исключений SEH (Structured Exception
Handling).

SEH представляет собой цепочку обработчиков - ячейки памяти, в которых содержатся адреса на процедуры обработки исключений. Эта цепочка начинается с fs:0000 и заканчивается последним обработчиком, который содержит значение 0FFFFFFFFh. Ну и что это нам дает? А то, что адрес последнего обработчика - это и есть адрес kernel32.dll в памяти.

Итак, дельта-смещение мы определили. Приведем теперь код поиска базы kernel32:

Здесь мы сканируем память (с того адреса, который мы только что получили) на наличие сигнатуры MZ (4D5Ah). Если она присутствует, значит, все сделано верно. Далее по смещению 3Ch находится смещение начала PE-заголовка. Сравниваем значение 2х байтов по этому смещению на сигнатуру PE (5045h) (на случай, если мы чисто случайно попали на ту область памяти, где нам встретились символы MZ). Если значение этих байт равно PE, то kernel32.dll несомненно найдена.

Теперь рассмотрим некоторые поля PE-заголовка, необходимые нам:


Чтобы найти адрес необходимой нам API-функции в kernel32, нам нужно добраться до секции экспорта этой библиотеки. По смещению 78h от начала PE-заголовка находится RVA адрес этой секции. Но не забудем, что нам нужен не RVA, а VA. Для этого нужно сложить этот RVA со значением Image Base (адрес в области памяти, куда файл проецирован системой). Тогда мы получим реальный адрес секции экспорта.

Наверняка при просмотре таблицы может возникнуть вопрос: а что это за поле Win32VersionValue? Это поле загрузчиком не используется вообще, поэтому мы можем считать его резервным и записывать какую-то информацию. В дальнейшем будем использовать данное резервное поле для записи сигнатуры нашего вируса, чтобы не заражать уже зараженные нашим вирусом программы.

Теперь нам нужно получить адрес таблицы экспорта из секции экспорта. Рассмотрим некоторые интересные нам поля секции экспорта:


Первое поле содержит базу ординалов функций. Второе поле содержит число указателей на имена. Третье поле содержит RVA таблицы экспорта. Эта таблица содержит адреса экспортируемых функций (их точки входа) или данных в формате DWORD RVA (по 4 байта на элемент). Четвертое поле - RVA таблицы указателей на имена. Последнее поле - RVA на таблицу ординалов. Для доступа к данным используется ординал функции с коррекцией на базу ординалов (Ordinal
Base).

Итак, теперь мы знаем адрес таблицы имен и адрес таблицы адресов всех функций библиотеки kernel32.dll. Чтобы найти адрес конкретной функции, мы должны сравнить ее имя с каждым именем в таблице имен экспортируемых функций, и если очередное сравниваемое имя совпало с искомым, мы смотрим в таблицу ординалов по соответствующему индексу и извлекаем таким образом адрес функции. Далее нам этот адрес остается где-то сохранить (в нашем случае – в стеке) для дальнейшего использования и перейти к поиску адреса другой нужной нам функции и так далее.

Чтобы не хранить в коде вируса имена функций (ведь они бывают иногда длинные), нам достаточно хранить 4-байтовые хеш-значения имен. Заодно и при просмотре тела вируса в HEX-редакторе не бросаются в глаза имена функций, содержащиеся в коде вируса:

А при поиске нужной нам функции мы будем сравнивать не имена, а хеш-значения имен (подсчитав предварительно это значение для каждой нужной нам функции). Т.е., допустим, что мы нашли какое-то имя в таблице имен kernel32. Вычисляем хеш-значение этого имени и сравниваем это значение с искомым из нашей таблицы хешей HashTable. Если совпадают – значит, нашли. Если нет – ищем
дальше:

Но как нам вычислить заранее хеш-значение определенного имени? Для этого я написал небольшую программку на Visual C++ с ассемблерной вставкой, ссылку на которую можно найти в конце статьи (с исходником).

После выполнения приведенного кода адреса всех функций будут находиться в стеке:

Общая структура вирусного кода

Все вышесказанное было лишь прелюдией в процессе написания нашего вируса. Теперь начнется самое интересное. Будем писать вирус на MASM. Почему я отдаю предпочтение этому пакету? Просто он мне нравится.

Напишем общий файл main.asm, который будет включать отдельные части кода:

В файле start_code.inc содержится весь приведенный ранее код по определению дельта-смещения, поиску базы kernel и адресов функций. Содержимое остальных файлов будет ясно из дальнейшего изложения. Но в любом случае в конце статьи есть ссылки с полностью рабочими примерами и исходниками.

Смотря на этот код, можно задать как минимум два вопроса:

  • зачем нам макрос szText?
  • зачем подключать библиотеку kernel32.lib и вызывать функцию ExitProcess перед начальной меткой?

Хитрый макрос позволяет нам не хранить текст в переменной, а сразу заталкивать его адрес в стек перед вызовом какой-либо функции, имеющей одним из своих параметров текстовую строку. Например, в функцию
LoadLibrary:

Что же касается вызова функции ExitProcess, то здесь проблема кроется в системах старше Windows XP (Win9x\Me\NT\2000). При попытке запустить код без такого вызова программа попросту не запускалась в перечисленых системах. Причем молча. Скорее всего, это связано с тем, что в данных системах загрузчик не хочет загружать программы без секций импорта. Не будем отвлекаться от нашей темы, поскольку исследование данного вопроса выходит за рамки этой статьи.

Здравствуйте! В этом посте (первом) я покажу, как создавать вирус шутку через блокнот. Сразу прошу не бомбить и не писать гневные комменты типа: "Да такого миллион!", "Да что ты знаешь!", "Да пошел ты в жопу!" и т.д. Да, я знаю, что эти "вирусы" создавали давно. Но я к примеру открыл для себя это совсем недавно. Месяца 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

VBA макрос еще бы присобачил в виде екселя, что бы кошмарил тупыми вопросами!

сохранить как .bat

можно в конце команду shutdown -s -t nponиcatь

также можно сделать чтобы он не закрывался

а если уже не шутка то можно оффнуть диспетчер задач команда

REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /f /v "DisableTaskMgr" /t REG_DWORD /d 0

Да куйня какая-то. Особенно для тех кто юзал ХП без еще сервис пака, когда на клик по банеру открывалось 100500 окон с голыми бабами и флаерами " ПАПА иьет ДОЧКУ. ", или "МАМА отсосала у СЫНА. "

Друзья, напишите то, как я объяснял. Понятно или нет.

Школьник добрался до учебников? Похвально, но баян.


Справедливости быть

Более 6 лет назад Эмбер Херд дразнила Джонни Деппа в его попытке рассказать миру и присяжным, что он стал жертвой домашнего насилия и посмотреть, кто ему поверит. Сегодня она сидит на суде и смотрит, как он делает именно это, опровергая всю её ложь.

Справедливости быть Джонни Депп, Эмбер Хёрд, Актеры и актрисы, Знаменитости, Из сети, Суд


Все мы так живем

Все мы так живем Скриншот, Вежливость, Комплимент, Джентльмены, Мужчины, Девушки, Комментарии на Пикабу

Маленькие неудачи

Где-то в Красноярске летает гелиевый шар с 40 тысячами рублей внутри.


Дорогое государство, какого х. рена?

хотелось бы узнать, какого хрена (то есть какая в этом есть объективная причина), любой несознательный гражданин, паркующийся на газонах может прийти ко мне домой и задавать мне какие-то вопросы по поводу того, зачем я сообщил в государственные органы о совершенном им правонарушении?

а ну как попадётся неадекват, который молча мне финку в бок сунет в тёмном подъезде?

алё, государство! я не пойму, ты хочешь, чтобы я цивилизованными методами с нарушителями боролся, или тупо по еблу им давал на месте и без квитанции? так я не каждому могу по еблу дать. а ну как мне? это получается, кто по еблу смог надавать - тот и прав? а как же закон, все дела. эт что за нахер вообще?

нахрена мне такое гибдд, которое меня же неадекватным быдланам сливает? (сказал чувак, который пишет, как заправский быдлан :)))

но, шутки в сторону!

моя "активная гражданская позиция" нужна вообще кому-нибудь в этом обществе, или мы хуй забъём и обратно в девяностые скатимся?

Версия бабушки с красным флагом от китайского художника

Версия бабушки с красным флагом от китайского художника Бабушка с флагом, Художник, Политика, Декоммунизация, Украина, Арт

Помогите пожалуйста с рисунком

Здравствуйте, пикабушники! Мой сын с тех пор, как научился разговаривать, всегда говорил, что он Тигр. Сейчас ему 3 года. Недавно мы узнали, что сын болен онкологией ( нефробластома)и теперь он проходит химиотерапию. Находясь в больнице, я рассказываю ему о том, что он храбрый тигр и борется с монстром (раком).
Может быть кто-то из Вас хорошо рисует и сможет нарисовать для него рисунок, на котором мальчик в костюме тигра борется с монстром? Сама я отвратительно рисую. Заранее благодарна за помощь.

Почему мальчики живут меньше девочек

Молдованка обратилась к премьер министрэ Украины

Хорошие дети

Ушёл на радугу Гриня.Upd: Спасибо вам за слова поддержки. За стихи особенно.

Ушёл на радугу Гриня.Upd: Спасибо вам за слова поддержки. За стихи особенно.

Twitter

Twitter

Яблоко, окрашенное Musou Black — краской, поглощающей 99,4% видимого света


На каждую хитрую, надётся свой с левой резьбой. Когда был студентом поехал по программе WorknTravel в США. Работал там как раз в парке аттракционов. Кроме самих собственно атракционов там были и подобные игры. Прицеп-трейлер где висят призы и сама игра, то колечки кидать, то из водяных пистолетов стрелять, то дротики бросать. Вот как раз такой и расположился тогда напротив моей карусели. Суть игры, что на стенде висят воздушные шарики, в каждом записка с призом, шарики разных цветов. Белые пустышки, жёлтые с мелочёвкой всякой, синие со средними призами и три штуки красных с самыми основными призами и зманухами. Бросаешь дротик, если попал и шарик лопнул, то получаешь приз согласно записки. Как обычно атракцион с подвохом, дротики лёгкие, тупые, со сбитым балансом ещё и неровно обрезанным оперением. Прямо они не летят никак, при этом если их слабо бросить они могут шарик и не лопнуть вообще, можно попробовать кинуть навесом, но все синие и красные шарики под потолком их так тоже не лопнуть. Призы в этом вагончике были хороши. Американские куклы Southern belle, все красивые детализованные, с платьями в кружавчиках. Стоят такие куклы от 60 до 200 долларов.

На девочек действует как взгляд Каа на бандерлогов. Тем обиднее, что выиграть такую почти невозможно. За два бакса - дротик уж точно.

Но в этот раз делягам не повезло. Маленькая девочка которая выглядела почти как одна из кукол, блондинка с кудряшками и похожемм платье, просто прикипела к своей маленкой копии. Мама не смогла ей отказать, да и сама запала на куклу. И дочка пробовала и мама, но попасть по красному шарику так и не смогли, при этом спустили долларов 50. Даже попытались договорится просто купить эту куклу, но разводила не согласился. Расстроенные дамы ушли, но не надолго и вскоре вернулись с ПАПОЙ. Папа внушал. Роста он был не сильно высокого, где-то 180, может даже меньше, однако я не знаю как он качался и где работал, но он имел очень внушительные плечи и руки. Ему не составило бы проблем носорога обнять и задушить на фиг. Он сначала тоже пытался договорится просто о покупке, но не договорился. Со вздохом купил десяток дротиков и начал доказывать, что аэродинамику придумали те, кто не умел строить двигатели.

Обычно дротики все кидают взяв их перед собой и целясь на глаз.

ПАПА, использовал совершенно другую технику, он взял дротик, отвёл руку назад как питчер в бейсболе и бросил этот дротик с разворота.

От удара вздрогнул весь прицеп. Я даже не уверен, что дротик вошёл в доску остриём, но шарик такого не перенёс и лопнул. К сожалению в красный он не попал, дротик прошёл ниже и лопнул синий, но у ПАПЫ было ещё девять дротиков. Приноровившись он начал бросать по новой. Каждый из бросков был как выстрел из пушки, я был бы не удивлён, узнав, что дротики звуковой барьер преодолоели. Мужик вбивал дротики как пневмопистолет гвозди, в итоге пробив все три красных и ещё тройку синих. Причём один из синих пробил рикошетом после поажения красного.

Дело не обошлось без малого скандала. Разводила пытался выкрутится, типа так бросать нельзя, да и закрытся пытался, а когда все три красных были выбиты, то там не оказалоь записки с главным призом. Куклы были, но попроще, не основная. Шанс, что выбьют всетри был исчезающе мал, а отдвать куклу за 200 баксов не хотелось, вот и засовывали туда записки на кукол попроще, типа вот эта кукла в другом шарике. Тут этоне прокатило и ему пригрозили полицией и штрафом от Комиссии азартных игр (Gaming сomission). Не смотря на размер предприятия, все эти игры должны подчинятся закону, и выставлять приз который нельзя выиграть это нелегально, как и закрываться посредине игры. Учитывая, что вокруг такого шоу народу собралось уже достаточно и свидетелей было много, разводила решил, что главные призы за 600 баксов всё же дешевле штрафа в пару тысяч и девочка получила свою куклу, а все окружающие отличное шоу.

image

На днях заняться было нечем, решил в развивающих целях(я начинающий программист) сделать какое-то подобие вируса, если моё творение можно так назвать.

Получать системную информацию, и скриншоты экрана с последующей отправкой на сервер. А так же автообновляться и забирать команды с сервера.

В чем же, спросите, соль?

А она, пожалуй в том, что он абсолютно не детектируется антивирусами. Хоть и имеет функционал, достаточный для шпионажа, дальнейшей загрузки и запуска программ. Обнаружено это было совершенно случайно.

Структура
Основная часть

Начнем с загрузчика. Тут все просто, никаких особых извращений. Единственное, что я сделал — так это загрузка не с собственного сервера(на что, понятное дело, ругались АВ продукты), а загрузка с популярных файловых хостингов(аля rghost, zalil и т.п.). Этим проблема была исчерпана.

Начать я решил с получения сис. информации, которая понадобилась бы в дальнейшем для идентификации компьютера на сервере(для каждого ПК предназначалась бы отдельная папка с названием в виде имени ПК и вложенными инструкциями и прочим). Для получения необходимой мне информации я использовал пространство имен System.Environment(что уже должно быть крайне подозрительно для АВ продукта). Получение скриншота экрана тоже не вызвало затруднений. После получения данной информации я склеивал её и отправлял на сервер. Тут мне и понадобились эти библиотеки.

Почти для каждого метода я выделял отдельный класс и отдельный метод, в этом и состояла вся хитрость.
Немного кода для примера:


Для ещё большего извращения можно вызывать функции через поток. Т.е. создавать новый поток для каждой функции(даже меня тут чуть не стошнило от своего кода, как мне вообще пришло такое в голову).


Да простят меня программисты!

Вывод


Достаточно немного быдлокода, запутанных инструкций и неумения программировать что бы получился скрытый продукт, который можно в последующем обновлять до более злого трояна. Статья написана на скорую руку, в чисто тренировочных целях, без злого умысла. В сеть вирус не запускался и не планируется, тестировалось на домашних ПК.

Читайте также: