PE文件.text节大小

时间:2013-01-05 10:09:11

标签: c portable-executable

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

我正在尝试使用带有LARGER .TEXT部分的二进制文件来修改代码或编译选项结果

我的编译器VisualStudio2010或cl.exe

修补二进制文件更复杂

1 个答案:

答案 0 :(得分:1)

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

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

#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 }