cdb -z используется для загрузки файлов дампа
использование их для загрузки двоичных файлов имеет несколько побочных эффектов
и может включать в себя отсутствие загрузки страниц, принадлежащих таблице импорта
заполнение таблицы импорта требует взаимодействия с загрузчиком дляразрешить импортированный адрес
при загрузке двоичного файла в виде файла дампа вместе с ним не загружаются другие модули
, но в файле дампа есть информация о других библиотеках, необходимых в потоке модуля
, поэтому припопробуйте прочитать некоторые данные из области ненагруженной памяти
, которую вы видите ???(вопросительные знаки)
на самом деле у windbg есть три команды взрыва, которые вы можете использовать для этой цели
они
!showexports { address / mod }
!showimports { address / mod }
!showresources { address / mod }
команда! showimports также не будетработать с бинарными файлами, загруженными как дамп (cdb может зависнуть при попытке ReadARange и iirc. Я отправил письмо команде windbg очень давно (в эпоху 6.0 или xp), но такое же зависание появляется в 17763 windbg, который является последним на дату публикации
ваши усилия по чтению импорта, как вы описываете, будут работать лучше, если вы загрузите фактический дамп вместо двоичного файла как дамп
, чтобы подтвердить, что вы можете использовать команду! Vadump, и вы увидите, что cdb имеетсопоставленные страницы после размера таблицы импорта
C:\>cdb -c "!dh kernel32;q" -z c:\Windows\System32\kernel32.dll | grep -i "Import.*Address"
1000 [ DFC] address [size] of Import Address Table Directory
C:\>cdb -c "dd kernel32+1df0;q" -z c:\Windows\System32\kernel32.dll
Microsoft (R) Windows Debugger Version 10.0.16299.15 X86
Loading Dump File [c:\Windows\System32\kernel32.dll]
0:000> cdb: Reading initial command 'dd kernel32+1df0;q'
77de1df0 ???????? ???????? ???????? 90909090 <<<<<<<<<<<<<
77de1e00 90909090 90909090 90909090 90909090
quit:
C:\>cdb -c "!vadump;q" -z c:\Windows\System32\kernel32.dll
Microsoft (R) Windows Debugger Version 10.0.16299.15 X86
Loading Dump File [c:\Windows\System32\kernel32.dll]
0:000> cdb: Reading initial command '!vadump;q'
BaseAddress: 77de0000
RegionSize: 00001000
BaseAddress: 77de1dfc <<<<<<<<<<<<<<<
RegionSize: 000c4204
BaseAddress: 77ea6000
RegionSize: 00001000
BaseAddress: 77ea7000
RegionSize: 00001000
BaseAddress: 77ea8000
RegionSize: 0000c000
quit: