EPROCESS PagefileUsage?

Тема в разделе "WASM.WIN32", создана пользователем VOOrDOOluck, 22 сен 2004.

  1. VOOrDOOluck

    VOOrDOOluck New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2004
    Сообщения:
    51
    Адрес:
    Ukraine
    EPROCESS PagefileUsage?

    Всем привет

    помогите пожалуйста разобратся с EPROCESS.

    В w2k PagefileUsage был в EPROCESS по смещению 0B8h.

    В wxp PagefileUsage уже содержится в EPROCESS_QUOTA_BLOCK.

    (Спасибо Four-F)

    почему запись

    Process = PsGetCurrentProcess();

    quota = Process->QuotaBlock;

    DbgPrint("PagefileUsage:%lu\n\n",quota->PagefileUsage);

    выдает туфту (в wxp)4294967295

    Если можете помогите.

    Я хочу получать данные о вирт памяти из EPROCESS но значения несуразные

    Всем спасибо
     
  2. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Ты уверен, что описание структуры соответствует версии ОС?
     
  3. VOOrDOOluck

    VOOrDOOluck New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2004
    Сообщения:
    51
    Адрес:
    Ukraine
    volodya

    В том то и весь прикол.Вначале я использовал структуру для w2k но с ней был полный бред.Потом я переделал wxpundoc.inc.С ним результаты получше.Но вот насет PagefileUsage полный облом.В данном случае я надеялся на то что структура из kmdkit17 в принципе реальна.



    Что делать подскажите.Кто работал с ней в данном вопросе(параметры виртуальной памяти).

    И может кто нибудь подскажет как можно с помощью softice

    проверить/изучить/ковырнуть структуру EPROCESS
     
  4. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    [ VOOrDOOluck: Вначале я использовал структуру для w2k но с ней был полный бред. ]



    Ну так конечна. Она же для w2k. Специально ведь в именах мнклудов указано w2k, xp, net. Даже в разные каталоги запихал.





    [ VOOrDOOluck: В данном случае я надеялся на то что структура из kmdkit17 в принципе реальна. ]



    Она и есть реальна.





    [ VOOrDOOluck: проверить/изучить/ковырнуть структуру EPROCESS ]



    Проверить никак, а /изучить/ковырнуть никаких проблем. proc и в колонке KPEB будут указатели для EPROCESS. Дальше dd...





    Я бы вызвал ZwQuerySystemInformation с классом SystemProcessesAndThreadsInformation. И посмотрел поле SYSTEM_PROCESSES.VmCounters.
    Код (Text):
    1. typedef struct _VM_COUNTERS {
    2.     ULONG PeakVirtualSize;
    3.     ULONG VirtualSize;
    4.     ULONG PageFaultCount;
    5.     ULONG PeakWorkingSetSize;
    6.     ULONG WorkingSetSize;
    7.     ULONG QuotaPeakPagedPoolUsage;
    8.     ULONG QuotaPagedPoolUsage;
    9.     ULONG QuotaPeakNonPagedPoolUsage;
    10.     ULONG QuotaNonPagedPoolUsage;
    11.     ULONG PagefileUsage;
    12.     ULONG PeakPagefileUsage;
    13. }VM_COUNTERS,*PVM_COUNTERS;




    А потом посмотрел откуда оно берется.
     
  5. VOOrDOOluck

    VOOrDOOluck New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2004
    Сообщения:
    51
    Адрес:
    Ukraine
    Four-F

    Она и есть реальна.

    Интересно чем это подтверждается



    nt = ZwQuerySystemInformation(SystemProcessesAndThreadsInformation,\ &sp,sizeof(SYSTEM_PROCESSES),0);

    if (!NT_SUCCESS(nt)) { DbgPrint("VirtualSize:%lu\nPeakVirtualSize:%lu\n",\ sp.VmCounters.VirtualSize,sp.VmCounters.PeakVirtualSize); DbgPr int("HandleCount:%lu\n",sp.HandleCount);



    Смех и грех в том что кроме нулей(большинство)я больше ничего не вижу.Я что чтото не так делаю.



    То что естЬ функции это хорошо.Всю инфу они сами берут из EPROCESS. Но интересно почему когда я ее от туда же хочу взять получается фигня.Фигня получается и при вызове функций(но с этим я еще могу тупить)

    Four-FПопробуйте.Мне интересно у вас работает(достать PagefileUsage из EPROCESS хр)
     
  6. VOOrDOOluck

    VOOrDOOluck New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2004
    Сообщения:
    51
    Адрес:
    Ukraine
    Four-F

    Нарастает у меня подозрение что "А может быть вся фигня в том что в тех самых специально разделенных папках структуры EPROCESS_QUOTA_BLOCK специально для хр нету и нужно юзать из nt в которых и так все по другому".

    P.S.Никакой насмешки просто это реально факт на который я хотел бы услышать по возможности ответ
     
  7. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    [ VOOrDOOluck: Интересно чем это подтверждается ]



    Тем, что она вытащена из ntoskrnl.pdb. Пдбэшка была от xp no sp, так что теоритически в сервис паках может отличаться, но вряд ли.





    [ VOOrDOOluck: Смех и грех в том что кроме нулей(большинство)я больше ничего не вижу.Я что чтото не так делаю. ]



    Возможно какой-нить бит из NtGlobalFlags надо включить.





    [ VOOrDOOluck: Попробуйте. ]



    Щас некогда. Может на днях попробую.
     
  8. VOOrDOOluck

    VOOrDOOluck New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2004
    Сообщения:
    51
    Адрес:
    Ukraine
    Four-F

    Ну ладно насчет попробуйте можно забыть.

    Еще один вопрос.После серий dd в айсе при просмотре EPROCESS_QUOTA_BLOCK получается что только PagefileUsage забит ахинеей ffffffff.Остальные смотрятся в принципе симпатично.Что это может значить на ваш взгляд.вот это я еще буду проверять а то инфы ноль.



    P.S.В двух словах можно сказать какой именно NtGlobalFlags

    может так портить картину.

    P.S.S.она вытащена из ntoskrnl.pdb

    КРУТО
     
  9. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    VOOrDOOluck



    Возьми ntoskrnl.pdb для своей ОС. Возьми pdbdump с сайта. Возьми DIA SDK от MS. Скомпили утилиту. Пропусти pdb через нее. И будет тебе счастье.
     
  10. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    [ VOOrDOOluck: <font color="indigo]Смех и грех в том что кроме нулей(большинство)я больше ничего не вижу.Я что чтото не так делаю.</font><!--color--> ]



    Щас глянул под w2k. Всё тянется. Нули только для первых двух процессов (id=0 и 8). Для остальных какие-то осмысленные цифры имеются. Инфа тянется как раз из EPROCESS_QUOTA_BLOCK.



    Для уточнения



    QuotaPeakPoolUsage DWORD 2 dup(?) ; 08h

    QuotaPoolUsage DWORD 2 dup(?) ; 10h

    QuotaPoolLimit DWORD 2 dup(?) ; 18h



    это на самом деле массивы из 2 элементов: первый для NonPagedPool, второй - PagedPool. Не вижу никаких предпосылок к тому, чтобы под ХР это не работало. Так что в NtGlobalFlags ничего менять не надо.
     
  11. VOOrDOOluck

    VOOrDOOluck New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2004
    Сообщения:
    51
    Адрес:
    Ukraine
    volodya

    Как все просто оказывается Ж:)



    Будем дальше разбираться
     
  12. VOOrDOOluck

    VOOrDOOluck New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2004
    Сообщения:
    51
    Адрес:
    Ukraine
    volodya

    Спасай.Решил попробовать твой вариант.Но на фразе "скомпили утилиту" застрял.Там проект из .нет а с ним я никогда не работал и ничего не получается.В вс гон на хедер для мидл.Что делать.

    Если утилита сампле идет как обобщенный с достаточной функциональностью можеш прислать?
     
  13. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    О боже, за что мне такое наказание... Занят я. На выходных посмотрю...
     
  14. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    VOOrDOOluck, там ещё основы COM надо знать. Помнится я с нуля разобрался за 2-3 дня с СOM + DIA SDK. Ещё через 2-3 дня написал простенький парсер PDB, который выдавал структуры в синтаксисе masm. Точнее полуфабрикаты. Там много гемора было с обработкой вложенных union'ов и битовых полей, поэтому я это похерил и руками добивал. Так многие определения структур из KmdKit сделаны. Сразу говорю, исходник не дам... стесняюсь :) Писалось в попыхах и лишь бы заработало.



    Вобщем, короче, разобраться можно за разумное время, надо только его найти.