我想知道是否有办法编译 C、C++ 和 Python 代码,以便无法在 Linux 上对其进行逆向工程?
我听说在 Windows 上有一些方法可以做到这一点,但我正在使用 Linux。
我想安全地编译我的代码,如已发布或最终版本。
更新
至少我想让普通用户很难拆卸,
我在 C 和 C++ 中使用 GCC,如果你向我介绍最好的 Python 编译器,我将不胜感激。
我想知道是否有办法编译 C、C++ 和 Python 代码,以便无法在 Linux 上对其进行逆向工程?
我听说在 Windows 上有一些方法可以做到这一点,但我正在使用 Linux。
我想安全地编译我的代码,如已发布或最终版本。
更新
至少我想让普通用户很难拆卸,
我在 C 和 C++ 中使用 GCC,如果你向我介绍最好的 Python 编译器,我将不胜感激。
你无法阻止逆向工程。你可以增加或减少它的难度,但你不能阻止它。不。
更新
好的,随着作者用更清晰的问题更新了它……这是人们可以做的:
至于 Python 代码...如果你足够幸运,你可以使用Shedskin编译为本地代码,然后应用之前讨论的相同技术。如果没有,您可以尝试使用 Cython 而不是 Python。此外,还有一个问题,这里大约混淆Python代码。
PS:无论如何,在我看来,代码保护被高估了。你无法阻止一个决定性的人或团体对一个软件进行逆向工程,有时,这会浪费时间和金钱。
至于C编译器(gcc),首先要确保你没有错误地使用-g
option编译它(添加用于调试的符号,基本上是整个源代码)。
-g 以操作系统的本机格式生成调试信息
其次,尝试使用-s
选项:
-s 从可执行文件中删除所有符号表和重定位信息。
如果没有函数名称,则很难对其进行逆向工程。看看man strip
。我没试过,但类似
strip --strip-debug objfile
或者:
strip --strip-不需要的objfile
在您的目标文件上可能很有用。
尽可能多地启用优化-O3
。阅读优化的程序集真的很困难,这使其成为另一个障碍。确实没有什么好的方法可以防止反汇编和逆向工程,但它使它变得更加困难。
至于 Python,只传送.pyc
字节码文件是绝对可以的。它是 Python 虚拟机源代码的编译版本。如何创建 .pyc 文件?. 试试这个吧,也许正是你所需要的。用户可以python
像使用源代码文件一样轻松地运行字节码文件。
最后,尝试使用 google 进行代码混淆。混淆 C++ 代码是没有意义的,但也许有人知道代码混淆是否是 Python 的一个好策略。