保护python代码免受逆向工程

时间:2017-01-13 10:59:17

标签: python debugging assembly reverse-engineering obfuscation

我在python(2.7)中创建程序,我想保护它免受逆向工程。

我使用brew uninstall ImageMagick gem uninstall rmagick 编译它(提供基本的安全 - 混淆和反调试)

如何添加更多保护功能,如混淆,打包,反调试,加密代码识别VM。

我想可能要加密到有效负载并在运行时解密它,但我不知道该怎么做。

3 个答案:

答案 0 :(得分:4)

一般来说,只要黑客有足够的动机,你几乎不可能让你的程序牢不可破。

但是,您仍然可以更难以进行逆向工程,尝试使用 cython 将核心代码编译为pydso个文件。

答案 1 :(得分:3)

故事时间:很长一段时间我都是Python程序员。最近我作为Python程序员加入了一家公司。我想,我的经理是一名Java程序员已经十年了。他给了我一个项目,在初步审查时,他问我,我们是否在混淆代码?我说过,我们不会在Python中做那种事情。他说我们用Java做那些事情,我们希望在python中实现同样的东西。最终我设法模糊代码只是删除注释和空格并重命名局部变量)但整个python调试过程搞砸了。

然后他问我,我们可以使用ProGuard吗?我不知道到底是怎么回事。经过一些谷歌搜索后,我说它是针对Java的,不能用于Python。我还说我们正在构建的任何内容都部署在我们自己的服务器中,因此我们不需要实际保护代码。但是他不愿意说,我们有一套程序,在部署之前必须遵循这些程序。

最终我辞职后一年厌倦了说服他们说Python不是Java。我也没兴趣让他们在那个时候以不同的方式思考。

TLDR; 由于Python的开源特性,没有可行的工具可用于对代码进行模糊处理或加密。只要您在自己的服务器中部署代码(将软件作为服务提供),我也不认为这不是问题。但是,如果您实际向客户提供产品,则可以使用一些工具来包装代码或字节代码,并将其作为可执行文件提供。但是,如果他们愿意,总是可以查看您的代码。或者,如果绝对有必要保护您的代码,您可以选择其他语言来提供更好的保护。再次请记住,始终可以对代码进行逆向工程。

答案 2 :(得分:2)

现在没有办法让数字安全。

你能做的就是让它难以达到令人沮丧的程度,但我承认我并不了解python的具体实现方法。程序的安全性实际上并不是程序安全的函数,而是心理学的函数。

是的,心理学。

鉴于它是在破解者和反破解者之间的军备竞赛,在这两者之间不断尝试互相攻击,唯一能做的就是尽量让它变得令人沮丧。我们如何实现这一目标?

后面的痛苦!

为确保代码难以破译而采取的每一步都是一个很好的步骤。

例如,您可以将程序转换为单个编译的字节码块,您可以从程序内部调用。使用外部库预先对其进行加密,然后对其进行解密。对功能代码块的额外步骤执行相同操作。或者,预编译块中的函数已准备好但已损坏。在运行时,利用byteplay,根据不同函数的其他字节修复字节码的字节数,这样就可以在修改时阻止程序运行。

如果你在"如何成为一个婊子"的背景​​下思考,有很多方法可以搞砸人们的头脑,而我却无法告诉你任何特定的蟒蛇方式。 ,你会找到最简单的方法来处理你的代码。

有趣的是,这在汇编方面要比python容易得多,所以也许你应该考虑通过ctypes或其他方式执行外部代码。

召唤你的内心巨魔!