保护python代码不受逆向工程的影响



我正在python(2.7)中创建一个程序,我想保护它免受逆向工程的影响。

我使用cx_freeze(提供基本的安全-混淆和反调试)编译了它

如何添加更多的保护,如模糊处理、打包、反调试、加密代码识别VM。

我想也许可以加密到有效载荷并在运行时解密,但我不知道该怎么做

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

但是,您仍然可以使反向工程变得更加困难,请尝试使用cython将核心代码编译为pydso文件。

现在没有办法确保任何东西的数字安全。

你能做的是让它变得困难到令人沮丧的地步,但我承认我不知道用python实现这一点的具体方法。程序的安全性实际上不是程序安全性的函数,而是心理的函数。

是的,心理学。

考虑到这是一场饼干和反饼干之间的军备竞赛,两者都不断试图超越对方,唯一能做的就是尽可能让人沮丧。我们如何做到这一点?

成为后方的疼痛!

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

例如,您可以将程序变成一个已编译的字节码块,从程序内部调用该块。使用外部库预先对其进行加密,然后再对其进行解密。对函数的代码块执行同样的步骤。或者,让预编译块中的函数准备好,但已损坏。在运行时,利用字节播放,修复字节码,字节数取决于不同函数的其他字节,这将使程序在修改时停止工作。

有很多方法可以扰乱人们的头脑,虽然我不能告诉你任何特定于python的方法,但如果你在"如何变得困难"的背景下思考,你会发现最奇怪的方法可以让你的代码变得一团糟。

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

召唤你内心的巨魔!

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

然后他问我,我们可以使用ProGuard吗?我不知道那到底是什么。经过一些谷歌搜索,我说这是为Java,不能在Python中使用。我还说过,无论我们在构建什么,我们都会在自己的服务器中部署,所以我们不需要真正保护代码。但他不情愿地说,我们有一套程序,在部署之前必须遵守这些程序。

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

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

最新更新