Предоставляет ли WinDBG способ отображения информации о типе (dt
?) Для простого адреса кучи?
Я смотрю на сценарий, в котором трассировки стека кучи и пользовательского режима недоступны. При анализе кучи я отслеживал чрезмерное использование кучи и обнаружил в куче различные объекты, которые ссылались на определенный адрес памяти. В основном !heap -srch [UserPtr] +0x30
возвращенные объекты выглядят так:
0:004> !heap -srch 00000224ceade3a0+30
_HEAP @ 224ceaa0000
HEAP_ENTRY Size Prev Flags UserPtr UserSize - state
00000224ceae3ac0 045c 0000 [00] 00000224ceae3ad0 045ac - (busy)
_HEAP @ 224ceaa0000
HEAP_ENTRY Size Prev Flags UserPtr UserSize - state
00000224ceae8080 0346 045c [00] 00000224ceae8090 03454 - (busy)
Теперь из-за пропущенных трассировок стека в пользовательском режиме !heap -p -a [UserPtr]
ничего не возвращает.
Итак, я знаю, что на самом деле 0x00000224ceae3ad0
и 0x00000224ceae8090
являются виновниками. Ну, на самом деле [UserPtr]+0x30
(48 байт) по причине, которую я еще должен выяснить, но я застрял здесь. (Я создал небольшой образец, в котором мне удалось проверить адрес, поэтому, по крайней мере, в этом образце я совершенно уверен, что адрес правильный)
Есть ли что-то полезное, что я могу сделать в этот момент, чтобы получить большеинформация об этих адресах рядом с !address [Addr]
, которая не очень помогает.
Поскольку я знаю размер и адрес, я могу бродить в куче и видеть то, что могу найти, но это кажется случайным.
Любые советы о том, как получить больше данных, были бы хорошими.
Для чего это стоит: я нахожусь на NT Heap с LFH.
Редактировать: В моемНапример, я знаю типы данных, но в реальном сценарии, с которым я сталкиваюсь, эти типы мне неизвестны, даже при доступе к коду может быть не очевидно, какой экземпляр объектов указывает на этот адрес, кроме совпадений размеров.