我编写代码并将其编译为exe,现在.text部分需要更大, 如果我有代码,并且希望在编译之前在代码的.text节中分配更多空间它,如何做到这一点?分配一些缓冲区?PE文件.text部分大小
我试图改变代码或者编译选项来产生与较大的.text段
我的编译器VisualStudio2010或cl.exe时
修补二进制文件是更复杂的二进制文件
我编写代码并将其编译为exe,现在.text部分需要更大, 如果我有代码,并且希望在编译之前在代码的.text节中分配更多空间它,如何做到这一点?分配一些缓冲区?PE文件.text部分大小
我试图改变代码或者编译选项来产生与较大的.text段
我的编译器VisualStudio2010或cl.exe时
修补二进制文件是更复杂的二进制文件
假设它真的是你想要的,你可以使用内联汇编。例如。对于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 }
我刚刚补充说,我正在使用cl.exe,Visual Studio 2012 对不起,没有指定之前 – bit8bug
刚刚编辑cl.exe的答案。 –
你能解释一下你在做什么吗? –
@MatsPetersson我编辑过上面的问题 – bit8bug
编译选项取决于你使用的编译器。哪一个? – DCoder