使 Visual C++ 更难逆向工程

逆向工程 视窗 混淆 C++
2021-06-10 10:42:00

这与this questionthis question的性质相似我对启用/禁用哪些编译器设置以使 Visual C++ 更难逆向工程感兴趣。

这里有一些我认为应该设置的编译器标志:
/Ox完全优化。这似乎相当于 gcc 的 -O3
/Oy省略帧指针。(仅限 x86)
/GR-禁用运行时类型信息
/MT标志用于静态链接各种库。

可见性 - 我认为 MSVC 编译器没有任何选项可以关闭-fvisibility=hiddengcc 中提供的可见性,但是由于调试符号存储在 PDB 文件中,所以这对 MSVC 是必要的吗?

为了确保在应用程序中分发最少的信息,我还应该包含其他任何内容吗?

(我可能会补充说我正在创建一个独立的可执行文件)

2个回答

您应该禁用 /DEBUG(链接器选项),即使对于发布配置,默认情况下也是启用的。

请注意,尽管某些编译器/链接器选项会使您的软件逆向工程稍微困难一些,但它们不会对整体可逆性产生太大影响。

除了编译器,因为他们没有 RE 安全的补救措施。您可以使用混淆和反调试技巧。如果你想要有很多好的包装器,使用它们