2010-09-04 52 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可以使用它在程序中找到的所有信息为拆卸的程序代码创建大量评论(这是分析的第一步)。您还可以查看表单并轻松转到与控件关联的事件处理程序。