如果我在发布程序之前意外忘记切换到发布配置,那么对我的代码进行反编译或反向工程更容易吗?
例如,如果我……
让我们逐一澄清你提到的选项:
.map
还有生成远程调试符号的选项,正如@dummzeuch指出的那样:
.rsm
.pdb
另外,我认为这很重要 .map 文件不等同于 .pdb 文件。对于Delphi Win32, .rsm 是等价的。多年来我一直没有使用Delphi,但据我记忆,没有Delphi Win32版本可以生成 .pdb 文件。只有Delphi for .NET才能。
那就是说,让我们回到你的问题:
我想知道如果有人有地图文件会有多大的不同?
使用逆向工程会更容易 .map 文件。我见过一些过去甚至可以转换的工具 .map 归档到 .dbg 用于调试器的文件。
.dbg
如果使用调试编译器设置编译exe文件,是否更容易逆向工程或破坏Delphi程序?
好吧,Debug构建的一个重要(也许是最引人注目的)特性是更大的exe大小。这主要是因为在Debug配置中,编译器禁用了许多代码优化,以便于代码调试。还有很多 调试条件 代码(例如:内部 {$IFDEF DEBUG} 指令)链接到exe。
{$IFDEF DEBUG}
作为副作用,Debug构建生成的代码更容易进行逆向工程,因为它更容易理解。