【问题标题】:Virtualsize and alignment PE sectionsVirtualsize 和对齐 PE 部分
【发布时间】:2021-12-13 03:46:37
【问题描述】:

您好,我想了解为什么我应该将我的部分的 Virtualsize 对齐到 0x1000(4096 dec),并且还有其他部分使用的 Virtualsize 空间更少,这些空间根本没有与 SectionAlignment 对齐并且仍然可以正常工作。

这是我正在谈论的一个例子,我基本上是这样做的:

unsigned int align_to_boundary(unsigned int address, unsigned int boundary) {
return (((address + boundary - 1) / boundary) * boundary);}

并传递例如 0x30a 作为我的代码的地址,也就是我的代码大小,并将 SectionAlignment 作为边界参数。

我可以将任何值传递给未对齐的虚拟大小吗?

【问题讨论】:

  • “地址又名大小”呃不。地址和大小是完全不同的东西。
  • @nobody 但它们都需要通过部分对齐和文件对齐来对齐。所以它只是一个计算给定数字的倍数的函数并不重要。

标签: c windows portable-executable


【解决方案1】:

在搜索 VirtualSize 成员后发现不需要对齐,因为加载器会将其映射并对齐到页面大小,这正是 Alignment 部分的全部内容。所以无论如何加载器都不需要对齐它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多