在 link 上将部分添加到可执行文件

Add section to executable on link

我目前正在使用 Visual Studio 2017,并试图让我的应用程序更具防篡改能力。 现在我想要保护的关键代码函数将在运行时解密,为此我试图将它们添加到文件中的自定义部分,例如将称为 .foobar。我正在使用 #pragma 指令添加该部分,然后指定应该在那里链接的函数,但是当我分析 PE 文件时,没有 .foobar 部分。

我尝试添加该功能的代码如下:

#pragma section(".foobar",execute, read, write)
#pragma comment(linker,"/SECTION:.foobar,ERW")
...
Main() function and others...
...
#pragma code_seg(".foobar")
int IWantThisToBeInFoobar() {...}

我还尝试了以下方法:

int IWantThisToBeInFoobar();
...
#pragma alloc_text(".foobar", IWantThisToBeInFoobar)
...
int IWantThisToBeInFoobar() {...}

到目前为止,这些都没有用,我正在使用 ExeInfo PE 查看部分,但在任何地方都没有 .foobar 的迹象。

感谢任何帮助或指导。

弄明白了,必须使用 /OPT:NOREF 和 /LTCG 进行编译。

希望这对以后的人有用。