V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
go2sleep
V2EX  ›  分享创造

Python 代码加密保护库 pyprotect

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

    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++ 差不多,当然目前还达不到。
    nieyujiang
        6
    nieyujiang  
       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 遗老有一大堆啊!
    nieyujiang
        8
    nieyujiang  
       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   ·   实用小工具   ·   4477 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 10:09 · PVG 18:09 · LAX 02:09 · JFK 05:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.