我正在使用Python(2.7)编写程序,并希望保护它免受逆向工程的影响。我使用了cx_freeze进行编译(提供基本的安全性-混淆和反调试)。如何添加更多保护措施,例如混淆、打包、反调试、加密代码以识别虚拟机?我想过在运行时加密有效载荷并解密,但我不知道该如何实现。
一般来说,只要黑客有足够的动机,你的程序几乎不可能做到无法破解。
但是你可以让它更难被反向工程,尝试使用cython
将核心代码编译成pyd
或so
文件。
现在没有办法使任何数字内容变得安全。
你能做的是让它变得难以处理到令人沮丧的程度,但我承认我不知道 Python 具体实现这一点的方法。程序的安全性并不仅仅与代码的安全性有关,更重要的是心理因素。
没错,就是心理因素。
考虑到黑客和反黑客之间的竞赛,两者都在不断尝试超越对方,我们唯一能做的就是尽可能地增加对方的烦恼。怎么做到呢?
压制对方!
每多添加一步骤来确保您的代码难以破解,都是一个好的选择。
例如,您可以将程序转换为单个编译后的字节块,并从程序内部调用该块。使用外部库事先加密它并在之后解密它。 对于函数的代码块也可采取同样的额外步骤。或者,准备好预编译的函数块,但是将其打乱。在运行时,利用 byteplay,根据不同功能的其他字节修复字节码,这会在修改代码时阻止程序正常工作。
有很多方法来搞乱人们的头脑,虽然我不能告诉你任何 Python 具体的方法,但如果你从“如何变得困难”这个角度思考,你会找到最奇怪的方式来搞乱代码。
有趣的是,在汇编语言中做这件事比在 Python 中简单得多,所以也许你应该研究一下通过 ctypes 或其他方式执行外部代码。
召唤您内心的巨魔吧!