C++ Вопрос DeviceIoControl error 998

nop
Пользователь
Статус
Оффлайн
Регистрация
1 Ноя 2019
Сообщения
261
Реакции[?]
53
Поинты[?]
0
Программа мапит драйвер
А потом использует функцию DeviceIoControl после драйвер "что-то делает"

Я решил написать написать подобие этой программы, но функия DeviceIoControl завершается с ошибкой 998 / неверная попытка доступа к памяти

C++:
int main()
{

    DWORD RB = 0x0;
    HANDLE handle = CreateFileA("\\\\.\\Driver123", GENERIC_READ | GENERIC_WRITE, 0x0, 0x0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0x0);

    if (handle == INVALID_HANDLE_VALUE)
        cout << "[-] CreateFileA: " << GetLastError() << endl;
    else
        cout << "[+] CreateFileA: [ OK ]" << endl;

    BYTE* inBuffer = (BYTE*)"\xDE\x00\x00\x00\x80\x8F\x03\x00\x78\x63\xC1\xE9\x40\x03\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00";

    BOOL DeviceIoControlTest = DeviceIoControl(handle, 0x22E088, inBuffer, 0x18, (LPVOID*)0x000000F869EFFC78, 0x8, &RB, 0);

    if (!DeviceIoControlTest)
        cout << "[-] DeviceIoControl: " << GetLastError() << endl;
    else
        cout << "[+] DeviceIoControl: [ OK ]" << endl;

    CloseHandle(handle);
}

Код:
Parameter 1     hDevice=0x0000000000002354
Parameter 2     dwIoControlCode=0x0022E088
Parameter 3    +lpInBuffer=0x00007FF6056B8218:{DE 00 00 00 80 8F 03 00 78 63 C1 E9 40 03 00 00 01 00 00 00 00 00 00 00}
Parameter 4     nInBufferSize=0x00000018
Parameter 5     lpOutBuffer=0x000000F869EFFC78
Parameter 6     nOutBufferSize=0x00000008
Parameter 7     lpBytesReturned=0x00000000
Parameter 8     lpOverlapped=0x0000000000000000
   
Returned Value    0x0000000000000001

Last Error Value    0x00000000 : "Операция успешно завершена."
Last Error Before Call    0x00000000 : "Операция успешно завершена."
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Программа мапит драйвер
А потом использует функцию DeviceIoControl после драйвер "что-то делает"

Я решил написать написать подобие этой программы, но функия DeviceIoControl завершается с ошибкой 998 / неверная попытка доступа к памяти

C++:
int main()
{

    DWORD RB = 0x0;
    HANDLE handle = CreateFileA("\\\\.\\Driver123", GENERIC_READ | GENERIC_WRITE, 0x0, 0x0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0x0);

    if (handle == INVALID_HANDLE_VALUE)
        cout << "[-] CreateFileA: " << GetLastError() << endl;
    else
        cout << "[+] CreateFileA: [ OK ]" << endl;

    BYTE* inBuffer = (BYTE*)"\xDE\x00\x00\x00\x80\x8F\x03\x00\x78\x63\xC1\xE9\x40\x03\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00";

    BOOL DeviceIoControlTest = DeviceIoControl(handle, 0x22E088, inBuffer, 0x18, (LPVOID*)0x000000F869EFFC78, 0x8, &RB, 0);

    if (!DeviceIoControlTest)
        cout << "[-] DeviceIoControl: " << GetLastError() << endl;
    else
        cout << "[+] DeviceIoControl: [ OK ]" << endl;

    CloseHandle(handle);
}

Код:
Parameter 1     hDevice=0x0000000000002354
Parameter 2     dwIoControlCode=0x0022E088
Parameter 3    +lpInBuffer=0x00007FF6056B8218:{DE 00 00 00 80 8F 03 00 78 63 C1 E9 40 03 00 00 01 00 00 00 00 00 00 00}
Parameter 4     nInBufferSize=0x00000018
Parameter 5     lpOutBuffer=0x000000F869EFFC78
Parameter 6     nOutBufferSize=0x00000008
Parameter 7     lpBytesReturned=0x00000000
Parameter 8     lpOverlapped=0x0000000000000000
  
Returned Value    0x0000000000000001

Last Error Value    0x00000000 : "Операция успешно завершена."
Last Error Before Call    0x00000000 : "Операция успешно завершена."
C++:
CreateFileЦ(L"\\\\.\\Driver123",
            GENERIC_READ | GENERIC_WRITE,
            FILE_SHARE_READ | FILE_SHARE_WRITE,
            NULL, OPEN_EXISTING, 0, NULL);

DeviceIoControl(handle, 0x22E088, inBuffer,sizeof( inBuffer), nullptr, 0, &RB, NULL);
Пробуй так
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сверху Снизу