2010-09-04 50 views
1

在C#中,您可以輕鬆打開程序集(EXE中的另一個單詞),然後從該程序集中獲取反射信息。我一直在尋找類似於Delphi的東西,在那裏我可以編寫一個Delphi程序,它可以指向一個Delphi EXE,然後獲得反射信息。我怎樣才能存檔這個?謝謝Delphi RTTI Over Executable Project

回答

2

好吧,可悲的消息是,你可能不能。您可以輕鬆地查看.NET程序集,因爲它們a)被編譯爲所謂的中間語言(因此您甚至可以使用Reflector等類似代碼重新獲得代碼),並且b)包含元數據。另一方面,Delphi編譯爲本地代碼,並生成不包含.NET程序集等豐富元數據的常規PE文件。

德爾福只是不這樣工作。

3

有一些程序可以從Delphi程序和DLL中提取RTTI。它不像.NET可用的那麼豐富,但它可以在有限的程度上完成。在Delphi 2010及更高版本中有更多的RTTI可用,但據我所知目前還沒有可以從中提取信息的程序。

我當時正在會議上正式宣佈這個系統,一羣人問這會如何影響安全性。創建新RTTI的Barry Kelly說,沒有足夠的元數據可用於創建「Delphi反射器」。

1

看你是否有Delphi2010 +可以加載BPL,然後用豐富的RTTI在它LIK。如果你使用c#和.net程序集。如果您需要在.exe AFAIK中執行此操作,則不能。

+0

如果啓用增強RTTI,您可以。這是一個可配置的選項。 – 2010-09-07 20:13:29

0

TestComplete似乎識別運行的Delphi可執行文件中的大多數對象。您可以使用腳本提取此信息。可以從http://www.automatedqa.com/downloads/testcomplete下載演示

這可能不是您想要的應用程序的類型,因爲它很大並且用於GUI測試,但是它可以識別對象。

0

正如Remko所述,IDR(Interactive Delphi Reconstructor)可以提取Delphi版本從2到2009的所有RTTI信息(如果程序包含它的話!)。2010版將在稍後提供。此外,IDR可以使用它在程序中找到的所有信息爲拆卸的程序代碼創建大量評論(這是分析的第一步)。您還可以查看錶單並輕鬆轉到與控件關聯的事件處理程序。