wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了windows – 如何从页眉和/或页脚确定PE可执行文件的大小大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

假设您有一个数据流或要雕刻的字节块,您如何确定可执行文件的大小? PE可执行格式中有许多标题,但我使用哪些标题部分来确定(如果可能)可执行文件的总长度? 这是文件格式的图片. 如果PE文件格式正确,则计算可以简化为(伪代码): size = IMAGE_NT_HEADERs.OptionalHeader.SizeOfHeaders foreach section_header in sectio
假设您有一个数据流或要雕刻的字节块,您如何确定可执行文件的大小?

PE可执行格式中有许多标题,但我使用哪些标题部分来确定(如果可能)可执行文件的总长度?

这是文件格式的图片.

windows – 如何从页眉和/或页脚确定PE可执行文件的大小

解决方法

如果PE文件格式正确,则计算可以简化为(伪代码):

size = IMAGE_NT_HEADERs.OptionalHeader.SizeOfHeaders

foreach section_header in section_headers:
    size += section_header.SizeOfRawData

哪里:

> SizeOfHeaders是IMAGE_OPTIONAL_HEADER结构的成员.
>(IMAGE_OPTIONAL_HEADER结构是IMAGE_NT_HEADERS的一部分)

SizeOfHeaders字段给出了所有头的长度(注意:包括16位存根).

>每个节头都是@L_419_4@结构
> SizeOfRawData字段给出磁盘上每个部分的长度.

记事本示例(Windows 10):

> SizeOfHeaders:0x400

windows – 如何从页眉和/或页脚确定PE可执行文件的大小

>每个部分的SizeOfRawData:

> .text:0x15400
> .data:0x800
> .idata:0x1A00
> .rsrc:0x19C00
> .reloc:0x1600

(注意:SizeOfRawData在下图中称为原始大小):

windows – 如何从页眉和/或页脚确定PE可执行文件的大小

总结一切:

>>> size_of_headers = 0x400
>>> sec_sizes = [0x15400,0x800,0x1a00,0x19c00,0x1600]
>>> size_of_headers + sum(sec_sizes)
207872
>>>

总大小:207872字节.

验证:

windows – 如何从页眉和/或页脚确定PE可执行文件的大小

注意:上述计算不虑PE是否形成错误或是否存在叠加.

大佬总结

以上是大佬教程为你收集整理的windows – 如何从页眉和/或页脚确定PE可执行文件的大小全部内容,希望文章能够帮你解决windows – 如何从页眉和/或页脚确定PE可执行文件的大小所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。