· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› EPROCESS PagefileUsage?

Посл.отвђт Сообщенiе


Дата: Сен 22, 2004 18:46:06

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 но значения несуразные
Всем спасибо


Дата: Сен 22, 2004 23:10:41

Ты уверен, что описание структуры соответствует версии ОС?


Дата: Сен 23, 2004 15:20:54

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

Что делать подскажите.Кто работал с ней в данном вопросе(параметры виртуальной памяти).
И может кто нибудь подскажет как можно с помощью softice
проверить/изучить/ковырнуть структуру EPROCESS


Дата: Сен 23, 2004 17:49:23

[ VOOrDOOluck: Вначале я использовал структуру для w2k но с ней был полный бред. ]

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


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

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


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

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


Я бы вызвал ZwQuerySystemInformation с классом SystemProcessesAndThreadsInformation. И посмотрел поле SYSTEM_PROCESSES.VmCounters.
typedef struct _VM_COUNTERS {
    ULONG PeakVirtualSize;
    ULONG VirtualSize;
    ULONG PageFaultCount;
    ULONG PeakWorkingSetSize;
    ULONG WorkingSetSize;
    ULONG QuotaPeakPagedPoolUsage;
    ULONG QuotaPagedPoolUsage;
    ULONG QuotaPeakNonPagedPoolUsage;
    ULONG QuotaNonPagedPoolUsage;
    ULONG PagefileUsage;
    ULONG PeakPagefileUsage;
}VM_COUNTERS,*PVM_COUNTERS;


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


Дата: Сен 23, 2004 18:41:31

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 хр)


Дата: Сен 23, 2004 19:04:47

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


Дата: Сен 23, 2004 19:10:46

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

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


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

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


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

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


Дата: Сен 23, 2004 19:20:41

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

P.S.В двух словах можно сказать какой именно NtGlobalFlags
может так портить картину.
P.S.S.она вытащена из ntoskrnl.pdb
КРУТО


Дата: Сен 23, 2004 22:03:17

VOOrDOOluck

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


Дата: Сен 24, 2004 00:23:57

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

Щас глянул под 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 ничего менять не надо.


Дата: Сен 27, 2004 18:28:04

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

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


Дата: Окт 1, 2004 17:30:37

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


Дата: Окт 1, 2004 18:30:11

О боже, за что мне такое наказание... Занят я. На выходных посмотрю...


Дата: Окт 2, 2004 12:51:25

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

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


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.080