Пишем вирус..., Наконец написал. |
Пишем вирус..., Наконец написал. |
FreeMan |
4.01.2005 10:23
Сообщение
#1
|
- Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: 4 |
Почти каждый, кто изучает язык ассемблера, рано или поздно пишет вирус, некоторые люди пишут вирус, когда заканчивают изучать какой-нибудь язык программирования... Прежде чем читать то, что я буду писать ниже и понимать хоть что-нибудь, вы должны:
а) знать основные команды ассемблера б) уметь пользоватся АПИ-функциями в) взять где-нибудь (можно и у меня) TASM32 (можно и другой, но каждый компилятор имеет свои особенности). г) отладчик (если собираетесь собственноручно создать зверька, то без отладки довольно трудно найти ошибки) д) прогу, которая прикреплена (на неё вопит касперский, но это не вирус!!!! ) е) иметь здоровую голову (если вы хотите испортить все компы на Земле, то ваше место в больнице, а не здесь) ё) ПОМНИТЬ, ЧТО ЭТОТ МАТЕРИАЛ ПРЕДСТАВЛЕН ТОЛЬКО В ЦЕЛЯХ ОБУЧЕНИЯ, И ЗА ПОСЛЕДСТВИЯ Я НИКАКОЙ ОТВЕТСТВЕННОСТИ НЕ НЕСУ Вроде всё. Теперь план обучения: 1) формат заголовка файла РЕ 2) разбор основных полей заголовка РЕ 3) методика заражения 4) дельта-смещение. 5) поиск АПИ 6) разбор используемых АПИ 7) пишем код 8) Reserved Прикрепленные файлы Pewrsec.exe ( 8.62 килобайт ) Кол-во скачиваний: 3 -------------------- бб
|
FreeMan |
7.01.2005 12:51
Сообщение
#2
|
- Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: 4 |
6. Pазбор используемых АПИ
Разбор сводится к копированию сюда содержимого справочника АПИ и более подробному их рассмотрению, то есть в этом разделе мы не будем придумывать ничего, никакого кода. Зато когда мы разберём АПИ, можно будет приступать к написанию кода вируса. Все приведённые здесь АПИ находятся в кернеле. Все попытки включить в список АПИ из другой библиотеки или с неправильным именем приведёт к ошибке и вы с треском вылетите. Итак, первая АПИ - GetWindowsDirectoryA Цитата UINT GetWindowsDirectory( lpBuffer - буфер, куда будет заносится строка, которая содержит путь к директории винды (C:\Windows типа этого) uSize - размер этого буфера (число от 0 до MAX_PATH) Использование: push Some_lenthКак вы заметили, всё делалось с учётом дельты. SetCurrentDirectoryA - устанавливает текущую директорию процесса Цитата BOOL SetCurrentDirectory( lpPathName - адрес строки с завершающим нулём, которая содержит путь к директории, которую нужно сделать текущей для текущего процесса. Использование: lea edi,[ebp+offset szWindowsDirectory] CreateFileA - крутая АПИ. Умеет файлы открывать. Цитата The CreateFile function creates or opens the following objects and returns a handle that can be used to access the object: · files · pipes · mailslots · communications resources · disk devices (Windows NT only) · consoles · directories (open only) HANDLE CreateFile( lpFileName - указатель на строку с именем файла dwDesiredAccess - тип доступа к объекту dwShareMode - флаг который паказывает каким образом можно юзать объект lpSecurityAttributes - чё то там связано с дочерними процессами - ставим 0 dwCreationDistribution - как создавать (открыть если существует, создать...) dwFlagsAndAttributes - с какими атрибутами файл, который открываем hTemplateFile - какой то вспомогательный файл Использование: xor eax,eax Возвращаемые значенния: Если успешно, то возвращает уникальный описатель (хендл) открытого объекта, если нет, то -1. -------------------- бб
|
Текстовая версия | 9.06.2024 13:47 |