- uio210昨天7022
OP从2022年开始用python写某社媒矩阵到现在,从网页版到云手机版,写出的软件一直都有被破解的现象,以下说说OP用python写软件,对于软件保护的历程
- 完全无保护
也就是用python写完代码之后,直接用pyinstaller打包出成品,然后就分发出去了。逆向过python软件的人都知道,这基本上就是在裸奔。
尤其现在ai能力非常强,几分钟就能还原代码。
- pyarmor+pyinstaller
由于软件被破解的多了,客户反馈给我,我才知道被破解了,然后开始寻求代码保护方案,第一个尝试的就是pyarmor+pyinstaller打包。
这个方案的话,一开始是有效的,但是现在也出现了一键还原的项目,这里就不放出具体地址,可以Github上搜索。
但是一键还原的项目也不是万能的,由于pycdc的天然缺陷,python版本比较高打包出来的代码,还原出来的代码还是有不完整的
但是如果交给ai,ai还是可以去“手动”还原不完整的部分
当然pyarmor也可以用不可逆的方式,比如BCC 模式、RFT模式,但是由于我的项目代码比较大,不适合这两种模式,所以最终没有选择这两种模式
- pyarmor+nuitka+pyinstaller
由于上面说的缺陷,所以我第三次尝试的方案是,将核心代码用nuitka先转成pyd,再结合pyarmor进行打包
这种方案基本上可以防住大部分人了,但是还不够,还是前面说的:现在ai能力太强了,即使不能还原代码,但是里面的逻辑还是可以捞出来
- pyarmor+vmprotect+nuitka+pyinstaller
这是我目前的方案,就是vmprotect将pyd再次加壳,同时pyarmor的runtime也用vmp加壳,这样前面说的一键还原代码的仓库就失效了
可是,如果用ai去硬攻的话,还是有可能还原代码的,只不过现在的代码已经很高了
对于本地客户端来说,是没有绝对的安全的,只能不断提供逆向成本
- pyarmor+vmprotect+nuitka+pyinstaller+远程下发资源
由于纯本地客户端实在防不住ai,所以我现在还把一些重要资源,都通过授权成功之后才进行下发
这种情况,可以防住那些没用授权的人,因为没有授权,就完全没办法从我服务器获取到这些重要资源
但是,对于有我软件授权的人来说,还是可以通过ai获取到这些资源,这真的让我有点沮丧,我基本上每隔一段时间就要去对软件安全性进行升级,可惜还是防不住这种情况。
不过目前的情况是:虽然对于有软件授权的人,可以用ai进行还原部分代码和逻辑,但是已经没办法进行重打包破解版了(也可能是我用ai还没整出来),所以暂时来说不用担心破解版的事情
主楼 - 南城昨天7023
nuitka单独打包不够是吧佬
- 铁锅炖肥鱼昨天7024
- uio210昨天7022
我的代码太多了,全部用nuitka打包,十几个小时都打包不出来,只能将部分用nuitka
- uio210昨天7022
是这样,所以纯本地客户端都没有绝对的安全
- 铁锅炖肥鱼昨天7024
- uio210昨天7022
可以稍微增加一点难度,但是对于ai来说,应该还是易如反掌
- soul0932昨天7025
- quina昨天7027
python这种东西那肯定不靠谱啊,pyc还是pyd很容易反编译的,我觉得要想防止ai反编译,你的最好方法就是把所有功能都放在服务器,让对方攻击的范围就从本地变成了在线了XD
- uio210昨天7022
理论上就是要纯在线服务才能防住了
- 大大怪昨天5639
没法防了,现在都不说逆向你这个软件,把你的功能描述给 AI,然后它巴拉巴拉巴拉就重新给你写一个出来
- xzu昨天7029
现在除了服务端,客户端哪有安全的道理
- 南城昨天7023
全部打包和您的第四种哪个更好更安全点?我现在也是全部打包好几个小时
- Zh.Long昨天7031
啊? 客户端吗, 那js那种electron不是跟python一样逆向吗, electron成套逆向工具都有了, python 还只能一点一点去分析, 运行中的python程序想要 hook 都要从 c api 入手, electron 直接调用 dev tool 和 cdp. 只有那种加虚拟机保护加壳加花指令加安全芯片才不是人玩的.
- Eric12昨天4387
mark一下!
面临一模一样的问题!
只要是本地客户端,就有风险被破解!
最好的办法就是做成在线的形式(例如SaaS),前端网页展示结果,所有逻辑和代码都在后端。
但是我面临的是另一个问题:我的程序处理的数据里面,可能带有客户身份信息的敏感数据!
所以客户感觉SaaS没有离线本地客户端安全!
头大!
- 7033
niutka打包容易编译失败,不知道什么原因,后面降级到3.9解决了