• XSS.stack #1 – первый литературный журнал от юзеров форума

ZwLoadDriver

Great

CPU register
Пользователь
Регистрация
13.11.2005
Сообщения
1 622
Реакции
6
Я решил написать прогу для загрузки драйвера =) Она дергает ZwLoadDriver
(или NtLoadDriver, что для ntdll без разницы) и, по идее, должна завершаться. Но не завершается. Процесс висит в памяти. Драйвер, как ни странно, грузится нормально. Причем процесс загрузчика не умирает даже после вызова ZwUnloadDriver другим процессом-выгрузчиком. Она так и должна работать или ее глючит? У меня уже 45 процессов-пустышек загрузчика висит :)))

зы. Код:
Код:
        LPCWSTR Driver  = L"\\registry\\machine\\system\\CurrentControlSet\\Services\\Driver";
        LPCWSTR DrvFile  = L"H:\\Progs\\driver\\Release\\Driver.sys";
        HKEY Key, Key2;
        LPTSTR Pth;
        DWORD dType;
        char Image[MAX_PATH];
        UNICODE_STRING ImageFile;
        lstrcpy(Image, "\\??\\");
        GetFullPathName(DrvFile, MAX_PATH, (LPTSTR)((DWORD)Image + 4), &Pth);
        dType = 1;
        RegOpenKey(HKEY_LOCAL_MACHINE, "system\\CurrentControlSet\\Services", &Key);
        RegCreateKey(Key, "Driver", &Key2);
        RegSetValueEx(Key2, "ImagePath", 0, REG_SZ, (LPBYTE)&Image, lstrlen(Image));
        RegSetValueEx(Key2, "Type", 0, REG_DWORD, (LPBYTE)&dType, sizeof(DWORD));
        RegCloseKey(Key2);
        RegCloseKey(Key);
        RtlInitUnicodeString(&ImageFile, Driver);
        ZwLoadDriver(&ImageFile);
 
Даже знаю откуда код. В свое время портировал его на асм. У мну все работает.
Исходнег вот:http://bay.jino-net.ru/FireBypass.rar

Исходнег загружает драйвер, который выводит из строя аутпосты(все)
 
Стартуй его как сервис, способ универсальный:

Код:
 start proc

 LOCAL hSCManager:HANDLE
 LOCAL hService:HANDLE
 LOCAL acDriverPath[MAX_PATH]:CHAR

    invoke  OpenSCManager, NULL, NULL, SC_MANAGER_CREATE_SERVICE

    mov     hSCManager, eax

    push    eax
    invoke  GetFullPathName, $CTA0("FileWorks.sys"), sizeof acDriverPath, addr acDriverPath, esp
    pop     eax

    invoke  CreateService, hSCManager, $CTA0("FileWorks"), $CTA0("FileWorks"), SERVICE_START + DELETE, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_IGNORE, addr acDriverPath, NULL, NULL, NULL, NULL, NULL
    mov     hService, eax
    invoke  StartService, hService, 0, NULL
    invoke  DeleteService, hService
    invoke  CloseServiceHandle, hService
    invoke  CloseServiceHandle, hSCManager
    invoke  ExitProcess, 0

 start endp
 
BAY
представь себе, я тоже знаю откуда код =)
только не оттуда, он известный уже давно.

BUG(O)R
ну это, конечно, работает, а что делать с этим способом...
 
2Great: не забивай. Может после приведенного тобой кода нету инструкции выхода из программы0) . В любом случае мой код нормально работает и нормально выключается - так что способ рабочий.
 
Может после приведенного тобой кода нету инструкции выхода из программы0)

Это ж тебе не ассемблер, где надо везде ret писать и ExitProcess) Тем более процесс не падает, а висит, но драйвер при этом грузится, значит нет возврата из ZwLoadDriver, он скорее всего код неверное переписал, что-нибудь с флагами не то.
 
Попробую глянуть сорцы NtLoadDriver из ядра винды (точнее, IopLoadDriver из диспетчера ввода-вывода)

ЗЫ. Кому интересно - сорцы внутренних функций диспетчера ввода-вывода
У кого напряг с трафом - зараренный сорец
 

Вложения

  • internal.c.txt
    289.5 КБ · Просмотры: 304
  • internal.rar
    37.6 КБ · Просмотры: 290
Пожалуйста, обратите внимание, что пользователь заблокирован
Здравствуйте, кто-нибудь еще имеет оригинальный файл outpostk.rar и может ли он загрузить и поделиться ссылкой на скачивание? Спасибо
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх