DUMPBIN EXE
DUMPBIN.EXE
Программа используется для исследования загружаемых и объектных модулей COFF-формата и выводит информацию в текущую консоль. Ключи данной программы:
/ALL - выводит всю доступную информацию о модуле, кроме ассемблерного кода.
/ARCH - выводит содержимое секции .arch заголовка модуля.
/ARCHIVEMEMBERS - выводит минимальную информацию о элементах объектной библиотеки.
/DEPENDENTS - выводит имена динамических библиотек, откуда данным модулем импортируются функции.
/DIRECTIVES - выводит содержимое секции .drective, создаваемой компилятором (только для объектных модулей).
/DISASM - дизассемблирует содержимое секций модуля с использованием и символьной информации, если она присутствует там.
/EXPORTS - выдает все экспортируемые модулем имена.
/HEADER - выдает заголовки модуля и всех его секций. В случае объектной библиотеки выдает заголовки всех составляющих ее объектных модулей.
/IMPORTS - выдает все имена, импортируемые данным модулем.
/LINENUMBERS - выдает номера строк объектного модуля, если таковые имеются.
/LINKERMEMBER[:{1|2}] - выдает все имена в объектной библиотеке, определяемые как public.
/LINKERMEMBER:1 - в порядке следования объектных модулей в библиотеке.
/LINKERMEMBER:2 - вначале выдает смещение и индекс объектных модулей, а затем список имен в алфавитном порядке для каждого модуля.
/LINKERMEMBER - сочетание ключей 1 и 2.
/OUT - определяет, что вывод осуществляется не в консоль, а в файл (/OUT:ED.TXT).
/PDATA - выдает содержимое таблиц исключения.
/RAWDATA - выдает дамп каждой секции файла. Разновидности данного ключа: /RAWDATA:BYTE, /RAWDATA:SHORTS, /RAWDATA:LONGS, /RAWDATA:NONE, /RAWDATA:,number. Здесь number определяет ширину строк.
/SUMMARY - выдает минимальную информацию о секциях.
/SYMBOLS - выдает таблицу символов COFF-файла.
Рассматриваемая программа является весьма мощным средством дизассемблирования. Пусть программа называется prog.asm. Выполним трансляцию программы следующим образом.
ml /с /coff /Zi /Zd prog.asm link /debug /subsystem:windows prog.obj53
При этом, кроме исполняемого модуля prog.exe, появляется еще и файл prog.pdb, содержащий отладочную информацию.
Выполним теперь команду DUMPBIN /DISASM /OUT:PROG.TXT PROG.EXE. В результате получим практически исходный ассемблерный код. Часть этого кода представлена на Рисунок 4.2.1.
_START: 0040101С: 6A00 push 0 0040101E: E843020000 call _GetModuleHandleA@4 00401023: A344404000 mov [00404044],eax 00401028: C7051C404000 mov dword ptr ds:[40401Ch],4003h 03400000 00401032: C70520404000 mov dword ptr ds:[404020h],offset @ILT+0(_WNDPROC@0) 05104000 0040103C: C70524404000 mov dword ptr ds:[404024h],0 00000000 00401046: C70528404000 mov dword ptr ds:[404028h],0 00000000 00401050: A144404000 mov eax,[00404044] 00401055: A32C404000 mov [0040402C],eax 0040105A: 68007F0000 push 7F00h 0040105F: 6A00 push 0 00401061: E8D6010000 call _LoadIconA@8 00401066: A330404000 mov [00404030],eax 0040106B: 68037F0000 push 7F03h 00401070: 6A00 push 0 00401072: E8BF010000 call _LoadCursorA@8