ZwQuerySystemInformation... error?

Тема в разделе "WASM.BEGINNERS", создана пользователем Smith, 24 фев 2007.

  1. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    нет, возвращалось 0C00000004h.
    Я достаточно долго парился с ZwQuerySystemInformation и её параметрами, копал везде, и истину нашёл.
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Вот если надо зацени код, работает превосходно:

    Функция возвращает указатель на массив требуемых структур.

    Код (Text):
    1. NTGetInfoPtr proc uses ecx tp:DWORD
    2.  local mSize:DWORD, mPtr:DWORD, rtm:DWORD
    3.  mov mSize, 4000
    4. bgn:
    5.  invoke VirtualAlloc, 0, mSize, 1000h, 4
    6.  mov mPtr, eax
    7.  push ecx
    8.  mov ecx, esp
    9.  invoke ZwQuerySystemInformation, tp, mPtr, mSize, ecx
    10.  pop ecx
    11.  mov rtm, eax
    12.  .If rtm == 0C0000004h
    13.   invoke VirtualFree, mPtr, 0, 4000h
    14.   .If ecx
    15.    mov mSize, ecx
    16.   .Else
    17.    mov eax, mSize
    18.    add mSize, eax
    19.   .endif
    20.  .endif
    21.  cmp rtm, 0C0000004h
    22.  je bgn
    23.  mov eax, mPtr
    24.  ret
    25. NTGetInfoPtr endp
     
  3. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    гм.. учту

    вообще-то меня работает, даже если передавать в третьем параметре 0
    билд NtDll 5.1.2600.1106 (xpsp1.020828-1920)
    ntoskrnl 5.1.2600.1634 (xpsp2.050301-1526)

    кстати, тольо сейчас заметил, что они разные )
    разве такое возможно?
     
  4. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    В принципе да, т.к. sp2 - набор заплаток, возможно, что как раз ntdll и не обновился. Сейчас у себя посмотрю...

    ntdll: 5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)
    ntoskrnl: 5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)

    Надо же! Одинаковые.

    У тебя, наверное, не sp2, а просто заплатки установлены?
     
  5. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    ага..
     
  6. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Значит какая-то заплатка обновила ядро, а ntdll никто не обновил.
     
  7. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    вообще-то я думал, что все ntdll подстроены под соответствующие ядра, поэтому даже если и работают из разных версий, то патчатся все равно вместе
    похоже, что не так..
    слушай, а кинь мне свою ntdll.. попробую прикрутить ))
     
  8. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Получай:
    hxxp://rammerlabs.nm.ru/ntdll.7z
    Ссылка работает до 26,02,07; уже не работает.
     
  9. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    качаю..
     
  10. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Nouzui, когда скачаешь - запости в личку, я сразу удалю файлик, места на серваке почти не осталось.
     
  11. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    стирай
     
  12. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    кста, вопрос, как теперь заставить процесс использовать именно эту длл, не заменяя ее в system32 и не перезагружаясь?
     
  13. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Попробуй положи её рядом с EXE'хой. На других либах прокатывает. ntdll не пробовал.
     
  14. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    неа.. я думал, что вместе с ntdll.dll.local может прокатить.. но не прокатило
     
  15. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    ошибочка, оказывается, нужно <имя exe>.exe.local
    теперь пишет "The application failed to initialize properly (0xc0000005). Click on OK to terminate the application." (кто пишет, кстати, непонятно). Причем так даже с родной ntdll.dll.
    С kernel'ом это прокатывает, причем в памяти обнаруживаются два мапа файла - один по нормальному адресу, второй по 0x430000, хз как это, может, второй отмапирован как данные, а не как исполняемый файл.. только зачем это?
     
  16. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Хех, получается неисполняемый исполняемый файл.
    Не знаю чем тебе ещё помочь, я б не парился, а сразу вкинул бы ntdll в system32.
     
  17. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    закончилось все BSOD'ом
     
  18. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Значит не подошла ntdll к ядру. Надо и ядро из комплекта. И по ходу не только ядро...
    Может проще SP2 поставить?
     
  19. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    да ну на фиг..
    доберусь до сп2, потестю..