IPB
ЛогинПароль:

> Пишем вирус..., Наконец написал.
сообщение
Сообщение #1


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


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

Теперь план обучения:
1) формат заголовка файла РЕ
2) разбор основных полей заголовка РЕ
3) методика заражения
4) дельта-смещение.
5) поиск АПИ
6) разбор используемых АПИ
7) пишем код
8) Reserved smile.gif


Прикрепленные файлы
Прикрепленный файл  Pewrsec.exe ( 8.62 килобайт ) Кол-во скачиваний: 3


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


6. Pазбор используемых АПИ
Разбор сводится к копированию сюда содержимого справочника АПИ и более подробному их рассмотрению, то есть в этом разделе мы не будем придумывать ничего, никакого кода. Зато когда мы разберём АПИ, можно будет приступать к написанию кода вируса.
Все приведённые здесь АПИ находятся в кернеле. Все попытки включить в список АПИ из другой библиотеки или с неправильным именем приведёт к ошибке и вы с треском вылетите.
Итак, первая АПИ - GetWindowsDirectoryA

Цитата
UINT GetWindowsDirectory(
    LPTSTR lpBuffer, // address of buffer for Windows directory
    UINT uSize // size of directory buffer
);

lpBuffer - буфер, куда будет заносится строка, которая содержит путь к директории винды (C:\Windows типа этого)
uSize - размер этого буфера (число от 0 до MAX_PATH)
Использование:

push Some_lenth
lea edi, [ebp+offset szWindowsDirectory]
push edi
call [ebp+_GetWindowsDirectoryA]
Как вы заметили, всё делалось с учётом дельты.

SetCurrentDirectoryA - устанавливает текущую директорию процесса

Цитата
BOOL SetCurrentDirectory(
    LPCTSTR lpPathName  // address of name of new current directory
);

lpPathName - адрес строки с завершающим нулём, которая содержит путь к директории, которую нужно сделать текущей для текущего процесса.
Использование:

lea edi,[ebp+offset szWindowsDirectory]
push edi
call [ebp+_SetCurrentDirectoryA]


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(

    LPCTSTR lpFileName, // pointer to name of the file
    DWORD dwDesiredAccess, // access (read-write) mode
    DWORD dwShareMode, // share mode
    LPSECURITY_ATTRIBUTES lpSecurityAttributes, // pointer to security attributes
    DWORD dwCreationDistribution, // how to create
    DWORD dwFlagsAndAttributes, // file attributes
    HANDLE hTemplateFile // handle to file with attributes to copy 
);

lpFileName - указатель на строку с именем файла
dwDesiredAccess - тип доступа к объекту
dwShareMode - флаг который паказывает каким образом можно юзать объект
lpSecurityAttributes - чё то там связано с дочерними процессами - ставим 0
dwCreationDistribution - как создавать (открыть если существует, создать...)
dwFlagsAndAttributes - с какими атрибутами файл, который открываем
hTemplateFile - какой то вспомогательный файл
Использование:

xor eax,eax
push eax                            ; handle to file
push eax                            ; flags and attributes
push 00000003h                      ; how to create(OPEN_EXISTING)
push eax                            ; security attr
push 00000003h                      ; share mode (FILE_SHARE_READ + FILE_SHARE_WRITE)
push 0c0000000h                     ; access mode (GENERIC_READ + GENERIC_WRITE)
lea eax,[ebp+offset FName]
push eax                            ; pointer to file name
call [ebp+_CreateFileA]


Возвращаемые значенния:
Если успешно, то возвращает уникальный описатель (хендл) открытого объекта, если нет, то -1.


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
FreeMan   Пишем вирус...   4.01.2005 14:23
FreeMan   1. Формат заголовка РЕ Заголовок - это структура,…   4.01.2005 14:25
FreeMan   2. Разбор основных полей РЕ заголовка. Итак, вы п…   4.01.2005 14:31
FreeMan   3. Методика заражения Пишу в виде алгоритма, хотя…   4.01.2005 14:33
FreeMan   4. Дельта смещение. При линковке программы происхо…   5.01.2005 14:17
FreeMan   3.1 В поисках дельты. Может вам показалось, что по…   5.01.2005 14:17
FreeMan   5) Поиск АПИ. Когда Винда загружает файл, она в ад…   5.01.2005 14:20
FreeMan   [b]5.1. Поиск адреса кернела Кернел висит в памяти…   5.01.2005 15:38
FreeMan   [b]5.2 Поиск АПИ... Теперь адрес кернела мы знаем…   5.01.2005 17:07
FreeMan   [b]6. Pазбор используемых АПИ Разбор сводится к ко…   7.01.2005 16:51
FreeMan   FindFirstFileA - ищет файл в текущей директории …   7.01.2005 17:13
FreeMan   FindNextFileA - ищет следующий файл hFindFile -…   7.01.2005 17:30
FreeMan   MapViewOfFile - помещает промэппированный файл в п…   7.01.2005 17:45
FreeMan   UnmapViewOfFile - полная противоположность MapView…   12.01.2005 21:37
FreeMan   [b]7. Пишем код В исполняемый файл добавляем код …   12.01.2005 21:38
FreeMan   То есть, для успешного заражения надо пофиксить ещ…   12.01.2005 21:41
FreeMan   [b]7.1 Пишем код Для разминки напишем прогу, котор…   12.01.2005 21:42
FreeMan   Кстати, вышел номер 29А... http://www.vx.netlux.or…   12.01.2005 22:03
FreeMan   Теперь пришло время писать код. includelib import…   14.01.2005 20:51
FreeMan   ls_found: ; сюда попадём после того, как найдена …   14.01.2005 20:52
Тоха   ЭТО КРУТО! Спасибо большое.   26.02.2009 17:09


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.04.2024 1:09
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name