用python开发软件是有多不安全?

uio210 2026-10-24 16:26 1

OP从2022年开始用python写某社媒矩阵到现在,从网页版到云手机版,写出的软件一直都有被破解的现象,以下说说OP用python写软件,对于软件保护的历程



  1. 完全无保护


也就是用python写完代码之后,直接用pyinstaller打包出成品,然后就分发出去了。逆向过python软件的人都知道,这基本上就是在裸奔。


尤其现在ai能力非常强,几分钟就能还原代码。



  1. pyarmor+pyinstaller


由于软件被破解的多了,客户反馈给我,我才知道被破解了,然后开始寻求代码保护方案,第一个尝试的就是pyarmor+pyinstaller打包。


这个方案的话,一开始是有效的,但是现在也出现了一键还原的项目,这里就不放出具体地址,可以Github上搜索。


但是一键还原的项目也不是万能的,由于pycdc的天然缺陷,python版本比较高打包出来的代码,还原出来的代码还是有不完整的


但是如果交给ai,ai还是可以去“手动”还原不完整的部分


当然pyarmor也可以用不可逆的方式,比如BCC 模式、RFT模式,但是由于我的项目代码比较大,不适合这两种模式,所以最终没有选择这两种模式



  1. pyarmor+nuitka+pyinstaller


由于上面说的缺陷,所以我第三次尝试的方案是,将核心代码用nuitka先转成pyd,再结合pyarmor进行打包


这种方案基本上可以防住大部分人了,但是还不够,还是前面说的:现在ai能力太强了,即使不能还原代码,但是里面的逻辑还是可以捞出来



  1. pyarmor+vmprotect+nuitka+pyinstaller


这是我目前的方案,就是vmprotect将pyd再次加壳,同时pyarmor的runtime也用vmp加壳,这样前面说的一键还原代码的仓库就失效了


可是,如果用ai去硬攻的话,还是有可能还原代码的,只不过现在的代码已经很高了


对于本地客户端来说,是没有绝对的安全的,只能不断提供逆向成本



  1. pyarmor+vmprotect+nuitka+pyinstaller+远程下发资源


由于纯本地客户端实在防不住ai,所以我现在还把一些重要资源,都通过授权成功之后才进行下发


这种情况,可以防住那些没用授权的人,因为没有授权,就完全没办法从我服务器获取到这些重要资源


但是,对于有我软件授权的人来说,还是可以通过ai获取到这些资源,这真的让我有点沮丧,我基本上每隔一段时间就要去对软件安全性进行升级,可惜还是防不住这种情况。


不过目前的情况是:虽然对于有软件授权的人,可以用ai进行还原部分代码和逻辑,但是已经没办法进行重打包破解版了(也可能是我用ai还没整出来),所以暂时来说不用担心破解版的事情

最新回复 (15)
  • 南城 10-24 16:29
    1楼

    nuitka单独打包不够是吧佬

  • 铁锅炖肥鱼 10-24 16:29
    2楼

    我不理解

    其他语言一样的啊

    不说java/csharp

    cpp/rust该破解还是照样破解

  • uio210 楼主 10-24 16:30
    3楼

    我的代码太多了,全部用nuitka打包,十几个小时都打包不出来,只能将部分用nuitka

  • uio210 楼主 10-24 16:30
    4楼

    是这样,所以纯本地客户端都没有绝对的安全

  • 铁锅炖肥鱼 10-24 16:31
    5楼

    破解



    你这个可以通过魔改字节码和python解释器来实现防破解


    前ai时代效果应该很好的

    但现在嘛估计不太行

  • uio210 楼主 10-24 16:32
    6楼

    可以稍微增加一点难度,但是对于ai来说,应该还是易如反掌

  • soul0932 10-24 16:34
    7楼

    没办法,只能加点服务业的才能防止了。

    你的小巧思,对ai来说都是小儿科

  • quina 10-24 16:36
    8楼

    python这种东西那肯定不靠谱啊,pyc还是pyd很容易反编译的,我觉得要想防止ai反编译,你的最好方法就是把所有功能都放在服务器,让对方攻击的范围就从本地变成了在线了XD

  • uio210 楼主 10-24 16:36
    9楼

    理论上就是要纯在线服务才能防住了

  • 大大怪 10-24 16:42
    10楼

    没法防了,现在都不说逆向你这个软件,把你的功能描述给 AI,然后它巴拉巴拉巴拉就重新给你写一个出来

  • xzu 10-24 16:44
    11楼

    现在除了服务端,客户端哪有安全的道理

  • 南城 10-24 16:45
    12楼

    全部打包和您的第四种哪个更好更安全点?我现在也是全部打包好几个小时

  • Zh.Long 10-24 16:57
    13楼

    啊? 客户端吗, 那js那种electron不是跟python一样逆向吗, electron成套逆向工具都有了, python 还只能一点一点去分析, 运行中的python程序想要 hook 都要从 c api 入手, electron 直接调用 dev tool 和 cdp. 只有那种加虚拟机保护加壳加花指令加安全芯片才不是人玩的.

  • Eric12 10-24 17:03
    14楼

    mark一下!

    面临一模一样的问题!

    只要是本地客户端,就有风险被破解!


    最好的办法就是做成在线的形式(例如SaaS),前端网页展示结果,所有逻辑和代码都在后端。


    但是我面临的是另一个问题:我的程序处理的数据里面,可能带有客户身份信息的敏感数据!

    所以客户感觉SaaS没有离线本地客户端安全!


    头大!

  • PotatoKnight 10-24 17:05
    15楼

    niutka打包容易编译失败,不知道什么原因,后面降级到3.9解决了

* 帖子来源Linux.do
返回