2014-03-03 53 views

回答

1

在C中,類型信息不保存在二進制文件中。

在C++中,您可以嘗試使用函數的mangled名稱來確定參數的類型。但是,名稱修改不是標準的,並且通常在不同的編譯器之間不兼容。顯然,這裏沒有保證。

參見:

Is it possible to get the signature of a function in a shared library programatically?

Getting function argument types

+0

謝謝。我希望Pin提供一些可以做我想做的API。 – ZillGate

2

你應該提供您是否有問題或不二進制調試符號的關鍵信息。如果您確實有可用的調試符號,那很簡單。有用於解析這些的標準庫。

如果您沒有調試符號,那麼它可能非常困難,而且基本上用像IDA Pro這樣的可視化探索工具更好。已經有一些關於自動查找剝離的二進制文件的函數簽名的研究(例如ftp://ftp.cs.wisc.edu/paradyn/papers/Jacobson11Unstrip.pdf),但是這個主題仍然很流行,無論您使用什麼工具,都會期望它在某個時候失敗,因爲問題最終是不可判定的,所有工具只是訴諸於以啓發式重構這些信息。 Chris Eagle的書(http://www.tinker.tv/download/idaPro_ch12.pdf)免費提供第12章涵蓋了IDA這樣做的方式。

相關問題