如何将 c、cpp 和 python 代码编译为“已发布/最终”版本?

逆向工程 Python C C++ 编译器 软件安全
2021-06-27 06:25:48

我想知道是否有办法编译 C、C++ 和 Python 代码,以便无法在 Linux 上对其进行逆向工程?

我听说在 Windows 上有一些方法可以做到这一点,但我正在使用 Linux。

我想安全地编译我的代码,如已发布或最终版本。

更新

至少我想让普通用户很难拆卸,

我在 C 和 C++ 中使用 GCC,如果你向我介绍最好的 Python 编译器,我将不胜感激。

2个回答

你无法阻止逆向工程。你可以增加或减少它的难度,但你不能阻止它。不。

更新

好的,随着作者用更清晰的问题更新了它……这是人们可以做的:

  1. 从二进制文件中剥离符号。至少。
  2. 混淆代码。这可能会有所帮助:https : //stackoverflow.com/questions/4111808/cc-compiler-generating-obfuscated-code
  3. 打包或保护二进制文件。我不知道 Linux 没有好的可用保护器,抱歉。

至于 Python 代码...如果你足够幸运,你可以使用Shedskin编译为本地代码,然后应用之前讨论的相同技术。如果没有,您可以尝试使用 Cython 而不是 Python。此外,还有一个问题,这里大约混淆Python代码。

PS:无论如何,在我看来,代码保护被高估了。你无法阻止一个决定性的人或团体对一个软件进行逆向工程,有时,这会浪费时间和金钱。

至于C编译器(gcc),首先要确保你没有错误地使用-goption编译它(添加用于调试的符号,基本上是整个源代码)。

-g 以操作系统的本机格式生成调试信息

其次,尝试使用-s选项:

-s 从可执行文件中删除所有符号表和重定位信息。

如果没有函数名称,则很难对其进行逆向工程。看看man strip我没试过,但类似

strip --strip-debug objfile

或者:

strip --strip-不需要的objfile

在您的目标文件上可能很有用。

尽可能多地启用优化-O3阅读优化的程序集真的很困难,这使其成为另一个障碍。确实没有什么好的方法可以防止反汇编和逆向工程,但它使它变得更加困难。

至于 Python,只传送.pyc字节码文件是绝对可以的它是 Python 虚拟机源代码的编译版本。如何创建 .pyc 文件?. 试试这个吧,也许正是你所需要的。用户可以python像使用源代码文件一样轻松地运行字节码文件。

最后,尝试使用 google 进行代码混淆。混淆 C++ 代码是没有意义的,但也许有人知道代码混淆是否是 Python 的一个好策略。