gpt4 book ai didi

delphi - 验证 '*.map' 文件是否与 Delphi 应用程序匹配

转载 作者:行者123 更新时间:2023-12-03 15:43:53 28 4
gpt4 key购买 nike

对于我的程序delphi-code-coverage-wizard ,我需要验证(详细)映射文件 .map 匹配 Delphi 应用程序 .exe

当然这个验证应该用Delphi来实现。
有办法检查吗?也许通过验证 EXE 中的一些信息?

最佳答案

我认为一个非常简单的启发式方法是检查 PE 文件中的各个部分是否在同一位置开始和结束:

例如,这是 map 文件的顶部。

 Start         Length     Name                   Class
0001:00401000 000A4938H .text CODE
0002:004A6000 00000C9CH .itext ICODE
0003:004A7000 000022B8H .data DATA
0004:004AA000 000052ACH .bss BSS
0005:00000000 0000003CH .tls TLS

我还查看了 dumpbin/headers 关于这些部分的内容:

SECTION HEADER #1
.text name
A4938 virtual size
1000 virtual address (00401000 to 004A5937)
A4A00 size of raw data
400 file pointer to raw data (00000400 to 000A4DFF)
0 file pointer to relocation table
0 file pointer to line numbers
0 number of relocations
0 number of line numbers
60000020 flags
Code
Execute Read

SECTION HEADER #2
.itext name
C9C virtual size
A6000 virtual address (004A6000 to 004A6C9B)
E00 size of raw data
A4E00 file pointer to raw data (000A4E00 to 000A5BFF)
0 file pointer to relocation table
0 file pointer to line numbers
0 number of relocations
0 number of line numbers
60000020 flags
Code
Execute Read

...truncated

查看 .text 部分。根据 dumpbin 的说法,它从 00401000 开始,到 004A5937 结束,长度为 000A4938,与 .map 文件中的完全相同。当然,您会直接读取 PE 文件而不是运行 dumpbin,但这说明了这一点。

我预计这种方法的误报数量会极少。

关于delphi - 验证 '*.map' 文件是否与 Delphi 应用程序匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7339820/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com