| FreeMan |
4.01.2005 10:23
Сообщение
#1
|
|
- ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: 4 |
Почти каждый, кто изучает язык ассемблера, рано или поздно пишет вирус, некоторые люди пишут вирус, когда заканчивают изучать какой-нибудь язык программирования... Прежде чем читать то, что я буду писать ниже и понимать хоть что-нибудь, вы должны:
а) знать основные команды ассемблера б) уметь пользоватся АПИ-функциями в) взять где-нибудь (можно и у меня) TASM32 (можно и другой, но каждый компилятор имеет свои особенности). г) отладчик (если собираетесь собственноручно создать зверька, то без отладки довольно трудно найти ошибки) д) прогу, которая прикреплена (на неё вопит касперский, но это не вирус!!!! ) е) иметь здоровую голову (если вы хотите испортить все компы на Земле, то ваше место в больнице, а не здесь) ё) ПОМНИТЬ, ЧТО ЭТОТ МАТЕРИАЛ ПРЕДСТАВЛЕН ТОЛЬКО В ЦЕЛЯХ ОБУЧЕНИЯ, И ЗА ПОСЛЕДСТВИЯ Я НИКАКОЙ ОТВЕТСТВЕННОСТИ НЕ НЕСУ Вроде всё. Теперь план обучения: 1) формат заголовка файла РЕ 2) разбор основных полей заголовка РЕ 3) методика заражения 4) дельта-смещение. 5) поиск АПИ 6) разбор используемых АПИ 7) пишем код 8) Reserved Прикрепленные файлы -------------------- бб
|
![]() ![]() |
| FreeMan |
12.01.2005 17:41
Сообщение
#2
|
|
- ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: 4 |
То есть, для успешного заражения надо пофиксить ещё и вышеописанную структуру для секции, которую заменили. Это Сложность №1.
Сложность №2 - нахождение новой точки входа (RVA нашего кода относительно ImageBase). Тут всё просто. Мы пишемся в конец секции? RVA секции + Virtual Size = новый RVA!!!! Думаю с этим вы сами разберётесь. Сложность №3. Передача управления носителю. Тут всё ещё проще. Адрес старой точки входа мы знаем (RVA относительно ImageBase), ImageBase тоже знаем, тогда для корректной передачи управления нам нужно сделать Jump на старую точку, для чего надо знать её VA=RVA + ImageBase (это вам дельту не напоминает?) Сложность №4. Определение носителя первого поколения. Как известно, дельта первого поколения равна 0. Ведь в первом поколении нам не надо передавать управление носителю. Сложность №5. Самое сложное - распихать всё, что нам нужно по переменным так, чтоб потом найти. При работе с переменными не забывайте учитывать дельту. Сложность №6. Проверить работу, довести всё до ума. Посмотреть под отладкой, посмотреть как размножается (как быстро). Подсунуть другу (когда знаете, что работает и не портит ничего), прийти к нему через неделю, посмотреть, как всё отработано, сколько заражено. Потом, если не лень, оптимизировать (наш вирус не будет блистать оптимальностью и скоростью распространения (версия, где это будет сделано находится на стадии разработки), это сделано для того, чтоб вам было чем заняться). Не бойтесь за свой комп. Первые версии тестируйте на дискетах или в отдельных папках. Когда уверенны, что вирус не портит ничего, можете добавить "полезную нагрузку" - то, что вирус делает помимо заражения (вирус, который будет у нас, будет менять имя компа). Если вы боитесь вируса, который написали (боитесь его пускать погулять у себя на компе), то это: а) вирус, который убивает систему, зануляет биос, сжигает монитор... В этом случае обратитесь к психиатру, вы опасный для общества человек б) нежелание переустанавливать систему в случае ошибки, боязнь потерять данные... Тогда вам надо бороться с ленью, записать самые важные данные на болванки или туда, где их ничего не достанет или прекратить писать вирусы, удалить все исходники вирусов с компьютера. Всё остальное расскажу в комментариях к коду. -------------------- бб
|
FreeMan Пишем вирус... 4.01.2005 10:23
FreeMan 1. Формат заголовка РЕ
Заголовок - это структура,... 4.01.2005 10:25
FreeMan 2. Разбор основных полей РЕ заголовка.
Итак, вы п... 4.01.2005 10:31
FreeMan 3. Методика заражения
Пишу в виде алгоритма, хотя... 4.01.2005 10:33
FreeMan 4. Дельта смещение.
При линковке программы происхо... 5.01.2005 10:17
FreeMan 3.1 В поисках дельты.
Может вам показалось, что по... 5.01.2005 10:17
FreeMan 5) Поиск АПИ.
Когда Винда загружает файл, она в ад... 5.01.2005 10:20
FreeMan [b]5.1. Поиск адреса кернела
Кернел висит в памяти... 5.01.2005 11:38
FreeMan [b]5.2 Поиск АПИ...
Теперь адрес кернела мы знаем... 5.01.2005 13:07
FreeMan [b]6. Pазбор используемых АПИ
Разбор сводится к ко... 7.01.2005 12:51
FreeMan FindFirstFileA - ищет файл в текущей директории
... 7.01.2005 13:13
FreeMan FindNextFileA - ищет следующий файл
hFindFile -... 7.01.2005 13:30
FreeMan MapViewOfFile - помещает промэппированный файл в п... 7.01.2005 13:45
FreeMan UnmapViewOfFile - полная противоположность MapView... 12.01.2005 17:37
FreeMan [b]7. Пишем код
В исполняемый файл добавляем код ... 12.01.2005 17:38
FreeMan [b]7.1 Пишем код
Для разминки напишем прогу, котор... 12.01.2005 17:42
FreeMan Кстати, вышел номер 29А... http://www.vx.netlux.or... 12.01.2005 18:03
FreeMan Теперь пришло время писать код.
includelib import... 14.01.2005 16:51
FreeMan ls_found:
; сюда попадём после того, как найдена ... 14.01.2005 16:52
Тоха ЭТО КРУТО!
Спасибо большое. 26.02.2009 13:09![]() ![]() |
|
Текстовая версия | 8.11.2025 4:13 |