Python 代码加密保护库 pyprotect - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
go2sleep
V2EX    分享创造

Python 代码加密保护库 pyprotect

  •  
  •   go2sleep 2018-07-29 11:57:54 +08:00 8442 次点击
    这是一个创建于 2683 天前的主题,其中的信息可能已经有所发展或是发生改变。

    github 项目地址

    pyprotect 是一个由 C++ 开发的 python 模块加载器,可以在运行时把事先加密的 python 文件解密出来,增加了被逆向的难度。

    目前只支持 python3

    优势

    • 非侵入,任何已有代码都可以直接集成,无需修改代码,加密之后的 python 工程的调用入口保持不变(比如,原本的 project 通过执行命令 "python3 app.py" 启动,加密之后仍然通过同样的命令启动)
    • 易于使用,只需要执行一个脚本,即可加密整个代码树
    • 提高破解难度,如果想要破解,至少需要基本的二进制逆向知识,无法在 python 层面逆向或者绕过保护 (如果你发现了在 python 层面可以破解的办法,请一定告诉我!谢谢!)
    • 跨平台, mac, linux 测试通过,( windows 应该问题不大,但是没有 windows 开发机,没测试…… 尴尬……)

    路线图

    • [x] 支持 python3.x
    • [ ] 支持 python2.7
    • [ ] 支持简单的反 debug 机制
    • [ ] 支持软件许可证

    使用风险

    只提供基本的加密保护,对于经验丰富的黑客,几乎没啥用。

    如果你觉得有用的话,请帮忙加星,谢谢! 目前还是初期阶段,如果遇到程序 bug 或者安全性问题,欢迎提 Issue 和 PR。

    20 条回复    2020-07-21 20:10:13 +08:00
    herozhang
        1
    herozhang  
       2018-07-29 12:47:28 +08:00   1
    貌似可以放弃对 python2.x 的支持,
    后续官方都不支持了。
    Morriaty
        2
    Morriaty  
       2018-07-29 13:25:44 +08:00   1
    这个和直接打包成 so/dll 文件,哪个安全些?
    40huo
        3
    40huo  
       2018-07-29 14:29:03 +08:00 via Android   1
    说实话,二进制的逆向知识会的人比会 python 逆向的人多
    go2sleep
        4
    go2sleep  
    OP
       2018-07-29 14:43:18 +08:00
    @Morriaty 打包成 so/dll 的方案有很多,得具体分析
    go2sleep
        5
    go2sleep  
    OP
       2018-07-29 14:47:43 +08:00
    @40huo 防君子不防小人吧

    想要的效果是把破解 python 的难度提升到和 c/c++ 差不多,当然目前还达不到。
    ZeoKarl
        6/span>
    ZeoKarl  
       2018-07-29 14:48:44 +08:00 via iPhone
    建议放弃 py2
    go2sleep
        7
    go2sleep  
    OP
       2018-07-29 15:01:31 +08:00
    @nieyujiang
    @herozhang

    我自己平时用 python3 比较多,不过貌似还是挺多人用 python2 吧?
    我公司里面不愿意转去 python3 的 python2 遗老有一大堆啊!
    ZeoKarl
        8
    ZeoKarl  
       2018-07-29 15:21:04 +08:00
    @go2sleep 然而 python2 即将停止支持也是历史进程的选择.
    chroming
        9
    chroming  
       2018-07-29 18:18:46 +08:00
    运行时解密不是又能看到源码了么
    go2sleep
        10
    go2sleep  
    OP
       2018-07-29 19:25:41 +08:00
    @chroming 这并不容易,解密是解密在内存中,不是解密在文件了。还需要读取内存才能取得
    LukeChien
        11
    LukeChien  
       2018-07-29 19:29:33 +08:00 via Android
    得内存 dump 了
    herozhang
        12
    herozhang  
       2018-07-29 21:30:46 +08:00
    @go2sleep 向前看,有所得就要有所失。
    dorothyREN
        13
    dorothyREN  
       2018-08-01 10:00:19 +08:00
    @go2sleep dump 内存 了解一下
    go2sleep
        14
    go2sleep  
    OP
       2018-08-01 10:35:02 +08:00
    @dorothyREN 据我所知,dump 内存的技术比反编译 pyc 要难多了吧?
    另外解密之后的 python 源码在内存中也不是一直存在的,交给 python 解释执行之后很快就释放内存了。

    你有这方面进一步的资料的话,欢迎提供!
    sniper517
        15
    sniper517  
       2018-08-01 19:26:33 +08:00
    哪些建议放弃 PY2 的,你们真的是开发吗
    wzw
        16
    wzw  
       2018-08-16 14:52:22 +08:00 via iPhone
    很需要,不知道能不能弄更好的加密
    wzw
        17
    wzw  
       2018-08-16 14:53:07 +08:00 via iPhone
    和 cython 编译有区别在哪里?哪个安全?
    wzw
        18
    wzw  
       2018-12-06 17:04:51 +08:00
    建议放弃 py2

    还准备继续开发吗?
    xiner
        19
    xiner  
       2020-07-13 11:10:34 +08:00
    Python 代码加密应对的风险包括:反编译 Pyc 、提取算法密钥、授权模块破解、篡改关键代码等。
    几维安全支持对 Python 程序进行源码加密和授权管理,保护知识产权,促进稳定营收。兼容 Python2.7 、3.5 、3.6 、3.7 等小版本。安全强度高、兼容性好、使用便捷。python 代码加密: https://www.kiwisec.com/product/python.html
    jsnjfz
        20
    jsnjfz  
       2020-07-21 20:10:13 +08:00
    请问下楼主,起 tornado 这样的服务时候如果用加密的程序就会停止,不知道有没什么解决方法
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5105 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 01:21 PVG 09:21 LAX 17:21 JFK 20:21
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86