joz*_*ret 8 delphi debugging pascal
如果我在发布程序之前意外忘记切换到发布配置,那么对我的代码进行反编译或反向工程更容易吗?
例如,如果我不小心使用以下调试编译器选项:
1. Compiling:
- StackFrames = True
2. Debugging
- Debug information = Debug information
- Local Symbols = True
- Symbol Reference info = Reference Info
3. Linking
- Map File = Detailed
Run Code Online (Sandbox Code Playgroud)
我已经阅读了帮助,除了地图文件也以某种方式与二进制文件一起发布之外,我可以告诉它没有多大区别,所以我想知道如果有人有地图文件会有多大差异?
kar*_*son 10
让我们逐一澄清你提到的选项:
.map
文件,其中包含有关程序符号的所有信息(类型,名称,地址,大小等),因此,当然对逆向工程有用如果您将此文件与您的exe一起分发(如评论中@RemyLebeau所述).还有生成远程调试符号的选项,正如@dummzeuch指出的那样:
.rsm
文件,它是Delphi等效于Microsoft的.pdb
程序数据库文件.如果您分发此文件,则可能会遇到麻烦,因为您可以轻松地调试应用程序,可视化符号,函数和过程,单步执行代码等等.另外,我认为重要的是说.map
文件不等同于.pdb
文件.对于Delphi Win32来说,.rsm
是等价的.我多年没有使用Delphi,但据我记忆,没有Delphi Win32版本可以生成.pdb
文件.只有Delphi for .NET才能.
那就是说,让我们回到你的问题:
我想知道如果有人有地图文件会有多大的不同?
使用.map
文件可以更容易地进行逆向工程.我见过一些工具,甚至可以将.map
文件转换为文件以.dbg
供调试器使用.
如果使用调试编译器设置编译exe文件,是否更容易逆向工程或破坏Delphi程序?
好吧,Debug构建的一个重要(也许是最引人注目的)特性是更大的exe大小.这主要是因为在Debug配置中,编译器禁用了许多代码优化,以便于代码调试.还有很多调试条件代码(例如:内部{$IFDEF DEBUG}
指令)链接到exe.
作为副作用,Debug构建生成的代码更容易进行逆向工程,因为它更容易理解.
归档时间: |
|
查看次数: |
582 次 |
最近记录: |