Virus Development Kit Intro

Искусство ревниво: оно требует, чтобы человек отдавался ему всецело.

Микеланджело

Соглашения

1. Процедуры(функции) представленные в VDK используют STDCALL-соглашение о передаче параметров. Это означает, что параметры кладутся в стек. И кладутся они справа налево(последний параметр кладется в стек первым и т.д.). Также STDCALL-соглашение означает, что вызываемая функция сама выравнивает стек. Если Вы вызвали функцию из VDK, то Вы можете быть уверены, что регистры EBP, ESI, EDI, EBX, а также регистр флагов, будут такими же, какими были до вызова. Это соглашение действует, если в заголовке(о заголовке позже) функции не указано обратное. Результат выполнения функции будет помещен в регистр EAX. Т.о. функции в VDK не отличаются от большинства API-функций ОС Windows по способу вызова.

Пример:

Пусть дана функция IsInfect, которая проверяет заражен ли данный PE-файл. Ей на вход передается один параметр - это адрес спроецированного в память PE-файла. Пусть этот адрес находиться в регистре EAX, тогда вызов функции будет таким

push eax
call IsInfect

Если файл уже заражен, то функция возвратит 1. Значит в регистр EAX будет помещена единица.

2. Теперь поговорим об описаниях функций в VDK. У каждой функции есть заголовок. Заголовок - это краткое описание функции и перечень параметров, которые ей передаются. Общий вид заголовка будет выглядить так:

;==================================================

;Функция <Название функции, которое отражает смысл>

;<Краткое описание функции>

;[Вход:]

;   Параметр1 - описание1

;   Параметр2 - описание2

;    ...

;   ПараметрN - описаниеN

;[Выход:]

;   Если X1, то функция возвратит A1, если X2, то функция возвратит A2..., иначе функция возвратит A

[Замечания:]

<Замечания по работе с функцией или о побочных действиях>

;==================================================

<Название функции, которое отражает смысл> proc Параметры

   ...

<Название функции, которое отражает смысл> endp

;==================================================

Пример:

;==================================================
;Функция IsInfect
;Функция проверяет не заражен ли данный PE-файл
;Вход:
;    hMap - PE-файл спроецированный в память
;Выход: Если файл заражен, то функция возвратит 1, иначе функция возвратит 0
;==================================================

IsInfect proc

   ...

InInfect endp

;==================================================

Ничего удивительного или страшного в заголовке нет - это просто соглашение об описании функций в заголовочных файлах masm'a(*.inc). Но если Вы хотите добавить свою функцию в VDK, Вы должны следовать этим соглашениям. Так VDK станет понятен всем вирмейкерам мира. 

3. Макросы masm'а описываются также, как и функции.

4. Все функции и макросы в VDK делятся на разделы по темам их действий. Например, API functions, Networks, PE-files, Base и т.д.

5. Вы можете отправить свою функцию или макрос в VDK. Для этого Вам надо отправить мне электронное сообщение на адрес bill_tpoc@mail.ru. Функция или макрос должны удовлетворять всем приведенным соглашениям. Если Ваша функция работает, то я немедленно добавлю эту функцию в VDK с указанием автора. Прошу Вас обратить внимание на то, что соглашения нужны для того, чтобы Вы могли пользоваться чужими функциями без проблем. Я призываю всех вирмейкеров перейти на эти соглашения.

6. Если функции нужно дельта-смещение, то оно передается в последнем параметре функции и далее - в функции, храниться в регистре EBX.

Как VDK может помочь при создании или защиты от вирусов?

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

Вы можете использовать функции для защиты. Для этого Вам нужно исследовать их работу и понять как они работают.

С уважением, Bill Prisoner / TPOC

VDK Programmer Reference

Описание функций и макросов

Examples

Примеры использования функций и макросов VDK

"От зеленого к красному"

Книга о написании вирусов для Windows от автора VDK

Documents

Документы необходимые для создания вирусов для Windows

Tools

Программы, которые Вам помогут

About

О Virus Development Kit