1

用于firemonkey应用程序的delphi xe2中的* .dcu文件是否独立于平台。 在这里。适用于 32 位和 64 位以及其他操作系统。

如果是这样,如何设计 dcu 文件。它是类似于以前的(delphi 1-delphi xe)还是类似于中间语言(如 java 或 .net)

这个新的 dcu 是否会使 dcu 文件的反编译更容易。

这个问题的主要目的是了解有关 firemonkey 的新 dcu 文件的利弊的一些细节。

4

2 回答 2

9

Is the *.dcu files in delphi xe2 for firemonkey application are independent from platforms. here. for both 32bit and 64 bit and other operating systems.

No they are not; Delphi XE2 generates different .dcu files for different platforms, and .dcu files for each platform are created in separated folders.

于 2011-09-27T14:51:09.547 回答
3

为了使其更具洞察力,一些背景信息:

DCU 或多或少是以下部分的组合

  1. 目标代码,它是普通的静态编译的可重定位目标代码,就像 C 或 C++ 生成的一样。
  2. 包含调试代码(如果我没记错的话,是 Topview 变体)
  3. 某种形式的预编译头(接口)。
  4. 某些表示形式的非专业泛型 (*)
  5. 跨单元内联代码(树表示?)

我不知道这四个是单独的部分还是交错的。我的猜测是 1+2 组合在一起(因为它允许在链接器中使用更通用的例程)并且有一个 3+4+5 的“休息”,也许还有其他一些元数据。

由于标头可能取决于系统单元和操作系统特定单元中的操作系统特定类型和符号,即使在理论上也只有最独立的单元可以是跨平台的。可能不值得费力去打扰。

就反编译而言,它与一般的反编译问题几乎相同,只是有一些曲折:

  1. 尚未最终链接的(对象)代码更容易反编译
  2. 带有附加调试代码的代码更容易反编译。
  3. 但是 DCU 格式取决于版本和专有。
  4. 整个反编译过程非常依赖于编译器和版本。

简而言之,它可能并不比早期的 Delphi 编译器甚至是随机 C++ 编译器的静态 lib + 头文件容易一点。

于 2011-09-27T16:18:28.043 回答