Какие средства просмотра COFF (объектный файл Windows .obj) доступны?
Я знаю только о 2:
- свалка, которая входит в состав Visual Studio
- PEView от http://wjradburn.com/software/
3 ответа
Существует DbgHelp, но он больше ориентирован на PE-файл, чем на объектный файл. И его предполагается использовать как API, а не как инструмент.
сам формат COFF возник в Unix http://en.wikipedia.org/wiki/COFF хотя Microsoft несколько расширила формат, и Unix, похоже, отказался от этого формата в пользу ELF. Но вы можете найти некоторые полезные инструменты в мире Unix, например, этот инструмент дампа от SCO http://docsrv.sco.com:507/en/man/html.CP/dump.CP.html
Просто преобразуйте формат COFF в ELF и используйте программу просмотра ELF:
objcopy.exe --input-target=pe-i386 --output-target=elf32-i386 somefile.o somefile.elf
Например, в Python вы можете использовать эту реализацию с одним файлом, которая зависит только от модуля struct: http://www.tinyos.net/tinyos-2.1.0/tools/platforms/msp430/pybsl/elf.py
Хм, странно, что эта опция не упоминалась, но Binutils , созданные с поддержкой COFF и вашей целевой архитектуры, вполне способны показать вам содержимое файла COFF (и были в то время, когда вы просили).
Сюда входят такие инструменты, какnm
,objdump
и -- в зависимости от того, что вы пытаетесь -- такжеstrip
,objcopy
,ld
.
Если вам нужно много деталей , llvm-readobj
может быть ближе всего к тому, что вы ищете, он очень подробный и в то же время описательный; по крайней мере, если у вас есть приблизительное представление о том, что находится в файле COFF.
С другой стороны, LLVM также предоставляет клоны инструментов из Binutils, но с префиксомllvm-
. Так что, скорее всего, вы найдетеllvm-objdump
,llvm-objcopy
,llvm-strip
,llvm-nm
и т. д.
С современными версиями Visual Studio (начиная с VS2019, IIRC) вы можете установить полную цепочку инструментов Clang/LLVM из установщика Visual Studio, который содержит эти инструменты — в противном случае его также можно найти предварительно упакованным на веб-сайте проекта Clang/ LLVM .
Binutils и LLVM также отлично справляются с.lib
формат файла, создаваемый менеджером библиотек (lib.exe
);ar
и 7-Zip можно использовать для их распаковки. Если вам нужны определенные расширенные функции для управления объектными файлами или библиотеками, вы можете взглянуть на objconv.
Почетное упоминание: некоторые шестнадцатеричные редакторы, такие как ImHex , также имеют возможность отображать более структурированное представление файлов COFF.