这与this question和this question的性质相似;我对启用/禁用哪些编译器设置以使 Visual C++ 更难逆向工程感兴趣。
这里有一些我认为应该设置的编译器标志:
/Ox
完全优化。这似乎相当于 gcc 的 -O3
/Oy
省略帧指针。(仅限 x86)
/GR-
禁用运行时类型信息
/MT
标志用于静态链接各种库。
可见性 - 我认为 MSVC 编译器没有任何选项可以关闭-fvisibility=hidden
gcc 中提供的可见性,但是由于调试符号存储在 PDB 文件中,所以这对 MSVC 是必要的吗?
为了确保在应用程序中分发最少的信息,我还应该包含其他任何内容吗?
(我可能会补充说我正在创建一个独立的可执行文件)