首页 文章

保护python代码免受逆向工程

提问于
浏览
1

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

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

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

我想也许加密到有效载荷并在运行时解密它,但我不知道如何做到这一点 .

3 回答

  • 3

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

    但是你仍然可以让它更难被逆向工程,尝试使用 cython 将你的核心代码编译成 pydso 文件 .

  • 1

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

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

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

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

  • 4

    现在没有办法让任何数字安全的东西 .

    你能做的就是让它很难知道python特定的方法来实现它 . 程序的安全性实际上并不是程序安全的函数,而是心理学的函数 .

    是的,心理学 .

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

    通过后方的痛苦!

    您采取的每一个额外步骤,以确保您的代码难以破译是一个很好的步骤 .

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

    有很多方法可以搞砸人们的头脑,虽然我不能告诉你任何python的具体方式,如果你在“如何成为一个婊子”的背景下思考,你会找到最奇怪的方法让它变得一团糟处理你的代码 .

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

    召唤你的内心巨魔!

相关问题