【问题标题】:PE File .text Section SizePE 文件 .text 部分大小
【发布时间】:2012-12-19 16:40:23
【问题描述】:

我写了代码并编译为exe,现在.text部分需要更大, 如果我有代码并且我想在编译之前从代码的 .text 部分分配更多空间,该怎么做?分配一些缓冲区?

我正在尝试更改代码或编译选项以生成带有 LARGER .TEXT 部分的二进制文件

我的编译器 VisualStudio2010 或 cl.exe

给二进制文件打补丁比较复杂

【问题讨论】:

标签: c portable-executable


【解决方案1】:

假设它确实是您想要的,您可以使用内联汇编。例如。对于 gcc+gas:void unused_global() { __asm(".space 10000"); }

对于 Visual Studio 的 cl.exe,它似乎更棘手:内联 asm 中没有指令,甚至 REPT 都不可用。我会用 masm 分别编译一堆 nop;否则我们必须这样做:

#define NOP __asm { NOP } ;
#define NOP8 NOP NOP NOP NOP NOP NOP NOP NOP
#define NOP64 NOP8 NOP8 NOP8 NOP8 NOP8 NOP8 NOP8 NOP8 
#define NOP512 NOP64 NOP64 NOP64 NOP64 NOP64 NOP64 NOP64 NOP64
#define NOP4096 NOP512 NOP512 NOP512 NOP512 NOP512 NOP512 NOP512 NOP512
#define NOP32768 NOP4096 NOP4096 NOP4096 NOP4096 NOP4096 NOP4096 NOP4096 NOP4096
void unused_global() { NOP32768 }

【讨论】:

  • 我刚刚补充说我正在使用 cl.exe ,Visual Studio 2012 抱歉之前没有指定
猜你喜欢
  • 1970-01-01
  • 2014-09-25
  • 2012-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多