在C#中,您可以輕鬆打開程序集(EXE中的另一個單詞),然後從該程序集中獲取反射信息。我一直在尋找類似於Delphi的東西,在那裏我可以編寫一個Delphi程序,它可以指向一個Delphi EXE,然後獲得反射信息。我怎樣才能存檔這個?謝謝Delphi RTTI Over Executable Project
回答
有些工具可以幫助反轉(Delphi編寫的)可執行文件,但它永遠不會很容易,它需要很好的x86彙編知識。
這些工具的一些例子是:
一個Delphi可執行文件的資源節還顯示有用像th這樣的信息電子表格和它的組件。
好吧,可悲的消息是,你可能不能。您可以輕鬆地查看.NET程序集,因爲它們a)被編譯爲所謂的中間語言(因此您甚至可以使用Reflector等類似代碼重新獲得代碼),並且b)包含元數據。另一方面,Delphi編譯爲本地代碼,並生成不包含.NET程序集等豐富元數據的常規PE文件。
德爾福只是不這樣工作。
有一些程序可以從Delphi程序和DLL中提取RTTI。它不像.NET可用的那麼豐富,但它可以在有限的程度上完成。在Delphi 2010及更高版本中有更多的RTTI可用,但據我所知目前還沒有可以從中提取信息的程序。
我當時正在會議上正式宣佈這個系統,一羣人問這會如何影響安全性。創建新RTTI的Barry Kelly說,沒有足夠的元數據可用於創建「Delphi反射器」。
看你是否有Delphi2010 +可以加載BPL,然後用豐富的RTTI在它LIK。如果你使用c#和.net程序集。如果您需要在.exe AFAIK中執行此操作,則不能。
TestComplete似乎識別運行的Delphi可執行文件中的大多數對象。您可以使用腳本提取此信息。可以從http://www.automatedqa.com/downloads/testcomplete下載演示
這可能不是您想要的應用程序的類型,因爲它很大並且用於GUI測試,但是它可以識別對象。
正如Remko所述,IDR(Interactive Delphi Reconstructor)可以提取Delphi版本從2到2009的所有RTTI信息(如果程序包含它的話!)。2010版將在稍後提供。此外,IDR可以使用它在程序中找到的所有信息爲拆卸的程序代碼創建大量評論(這是分析的第一步)。您還可以查看錶單並輕鬆轉到與控件關聯的事件處理程序。
- 1. Delphi OTA和RTTI bug
- 2. 枚舉的Delphi RTTI SetValue
- 3. Delphi RTTI麻煩:GetPropInfo返回零,{$ METHODINFO ON}?
- 4. Delphi Rtti:探索接口的屬性?
- 5. Delphi 2010 RTTI:使用TValue存儲數據
- 6. Delphi RTTI:獲取屬性的類
- 7. Strip Executable
- 8. JRuby to jar executable
- 9. Post File To Executable
- 10. Rubygem Executable $ LOAD_PATH問題
- 11. 使用RTTI ParamType
- 12. 我可以簡化在delphi中使用RTTI嗎?
- 13. 如何從Delphi中的接口引用獲取RTTI?
- 14. Delphi:如何使用RTTI設置泛型的字段值?
- 15. 如何解決Delphi XE中Enum類型的RTTI大小問題?
- 16. Delphi 2010 RTTI - 我如何獲得索引屬性列表?
- 17. 如何使用RTTI訪問Delphi數組屬性
- 18. Rtti在Delphi 2010中的數據操作和一致性
- 19. Delphi - RTTI關於記錄方法的信息
- 20. Delphi Rtti獲取屬性 - 爲什麼這會導致AV?
- 21. 如何設置delphi 2010的數組長度rtti
- 22. 使用Delphi RTTI構建和評估表達式
- 23. 如何使用RTTI修改delphi屬性Getter/Setter?
- 24. 如何使用RTTI在Delphi中獲取訪問字段?
- 25. el-get-executable-find:找不到'executable-find'命令'hg'
- 26. Maven Assembly Plugin和Executable jar
- 27. 德爾福在對象RTTI
- 28. shared_ptr沒有RTTI?
- 29. 避免dynamic_cast/RTTI
- 30. Qt RTTI問題
如果啓用增強RTTI,您可以。這是一個可配置的選項。 – 2010-09-07 20:13:29