2013-03-19 22 views
2

我想從elf文件中提取信息,如函數名稱及其參數,目標是通過更改函數的參數值來執行健壯性測試,我正在研究Windows環境和我想儀器的elf文件是爲PowerPC體系結構,我嘗試使用開源工具DynInst http://www.dyninst.org/它可以建立在MS Visual Studio,但它儀器二進制編譯與編譯器(EXE和DLL格式),我有以下問題構成:在windows平臺上提取和檢測powerPC的elf文件

1)是否可以使用Microsoft Visual Studio C++編譯器生成elf文件,以便我可以使用DynInst來檢測二進制文件?

2)是否有任何其他手段或工具可以用於提取和儀器在Windows平臺上的精靈文件?

objdump,readelf,nm等提供了提取精靈的功能,但我的需要也是儀器。我不知道如何調整這些公用設施以滿足我的需求,任何建議都會有很大的幫助!

/感謝

回答

0

1)是否有可能使用Microsoft Visual Studio C++編譯器生成ELF文件

肯定:ELF只是一個文件格式。就像您可以在PowerPC/AIX上編寫一個.zip文件並在SPARC/Solaris和x86/Windows上讀取它一樣,您可以在任何操作系統上編寫ELF文件。

這樣我就可以使用DynInst來測試二進制文件了嗎?

是否DynInst將能夠文書這樣的文件我不知道。

是否有任何其他手段或工具可以用於提取和儀器在Windows平臺上的精靈文件?

您可以編譯GNU binutils包,其中包含readelf。您可以使用它從ELF文件中提取各種信息。

還有libelf庫,它允許您讀取寫入ELF文件。是否可以在Windows上構建libelf而不會有太多的麻煩,我不知道。

+0

感謝您的回覆,我試圖看到readelf的不同選項,但無法弄清楚如何獲取函數參數的地址和類型,一個例子會有很大的幫助。 – Nithi89 2013-03-20 15:14:26

0

無法使用Visual Studio編譯器直接生成ELF二進制文件。 Windows二進制文件是PE格式,與ELF不兼容。它可能通過編譯爲彙編語言並在結果文件上運行腳本以將PE轉換爲ELF,並使用ELF感知彙編程序(環路)來生成ELF輸出,其工作量很大,像gas,yasm,nasm)來組裝最終的文件。

此外,您將無法在Windows上執行PowerPC二進制文件,因爲Windows不支持PowerPC體系結構。

如果DynaInst只是在編譯代碼中插入鉤子,那麼你應該使用交叉編譯器來編譯DynaInst庫鉤子和你想要測試的二進制文件。

還有其他工具可用,它們也應該在Windows上工作,例如gprof,它只依賴具有某些可用的函數,用於儀器函數調用。

相關問題