在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