2013-03-19 3 views
2

Я пытаюсь извлечь информацию, такую ​​как имя функции и ее параметры из файла elf, с целью выполнить тестирование надежности, изменив значения параметров для функций, я работаю над средой Windows и файл elf, который я хочу использовать для архитектуры PowerPC, я попробовал использовать инструмент с открытым исходным кодом DynInst http://www.dyninst.org/, который может быть построен на MS Visual Studio, но он записывает двоичные файлы, скомпилированные с помощью компилятора cl (exe и dll), у меня есть следующие вопросы: Поза:Извлечение и инструментальные файлы elf для powerPC на платформе Windows

1) Можно ли использовать компилятор Microsoft Visual studio C++ для создания файла эльфа, чтобы я мог использовать DynInst для работы с двоичным кодом?

2) Есть ли какие-либо другие средства или инструменты, которые можно использовать для извлечения и создания файлов эльфов на платформе Windows?

objdump, readelf, nm и т. Д. Предоставляют функции для извлечения эльфа, но мне нужно также их использовать. Я не знаю, как адаптировать эти утилиты для удовлетворения моих потребностей, любые предложения окажут большую помощь!

/Спасибо

ответ

0

1) Можно ли использовать Microsoft студийную компилятор Visual C++ для создания ELF файлу

Sure: ELF это просто формат файла. Так же, как вы можете написать .zip-файл на PowerPC/AIX и прочитать его на SPARC/Solaris и x86/Windows, чтобы вы могли написать файл ELF на любой ОС.

, так что я могу использовать DynInst для управления двоичным кодом?

Может ли DynInst использовать этот файл, о котором я не знаю.

Есть ли какие-либо другие средства или инструменты, которые можно использовать для извлечения и создания файлов elf на платформе Windows?

Вы можете скомпилировать GNU binutils пакет, который содержит readelf. Вы можете использовать его для извлечения всех видов информации из файла ELF.

Существует также libelf библиотека, которая позволяет вам читать и писать файлы ELF. libelf может быть построен на Windows без особых проблем, я не знаю.

+0

Спасибо за ответ, я пытаюсь увидеть различные варианты readelf, но не в состоянии точно выяснить, как получить параметры функции, их адрес и тип, пример будет очень полезен. – Nithi89

0

Невозможно использовать компилятор Visual Studio, чтобы напрямую генерировать двоичный файл ELF. Бинарные файлы Windows - это формат PE, который несовместим с ELF. Это is возможно генерировать ELF-вывод обходным путем, с большой работой, путем компиляции на языке ассемблера и запуска скрипта по результирующему файлу для преобразования из PE в ELF и использования ассемблера, поддерживающего ELF (как газ, yasm, nasm), чтобы собрать полученный файл.

Кроме того, вы не сможете выполнить двоичный файл PowerPC в Windows, поскольку Windows не поддерживает архитектуру PowerPC.

Если DynaInst просто вставляет крючки в код компиляции, то вы должны использовать кросс-компилятор для компиляции как библиотечных крючков DynaInst, так и двоичного файла, который вы хотите использовать.

Существуют и другие доступные инструменты, которые также должны работать и с Windows, например gprof, которые полагаются только на наличие определенных функций, которые используются для вызова функциональных функций.