如问题标题所述。但是,我正在使用“技巧”,我将在运行时使用的可执行文件之后存储额外数据(请参阅here)。
签署我的可执行文件似乎打破了这个'技巧',所以我的问题是签名存储在exe(PE)文件中的位置?
我正在使用microsoft的signtool
来签署我的可执行文件。
答案 0 :(得分:6)
Microsoft记录了已签名的PE文件的格式:
答案 1 :(得分:6)
嵌入式数字签名始终附加到可执行文件的末尾,无论您是否附加了自定义数据。附加数据包含在签名的散列中。
签名的位置和大小存储在PE头的安全目录中。提取该信息的方式如下:
IMAGE_OPTIONAL_HEADER
。IMAGE_OPTIONAL_HEADER::DataDirectory
是一个IMAGE_DATA_DIRECTORY
结构数组。通过IMAGE_DIRECTORY_ENTRY_SECURITY
(未记录但在winnt.h中声明)对其进行索引,以找到安全目录的条目。 IMAGE_DATA_DIRECTORY::VirtualAddress
包含签名的文件偏移(不是RVA),IMAGE_DATA_DIRECTORY::Size
包含签名的大小。参考文献: