V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
bozong
V2EX  ›  Python

最近用 Python 写了个工具,有没有什么办法防止被反编译

  •  
  •   bozong · 2017-03-01 13:43:04 +08:00 · 14800 次点击
    这是一个创建于 2829 天前的主题,其中的信息可能已经有所发展或是发生改变。
    41 条回复    2017-03-03 10:46:29 +08:00
    bozong
        1
    bozong  
    OP
       2017-03-01 13:43:31 +08:00
    代码混淆?
    bozong
        2
    bozong  
    OP
       2017-03-01 13:44:37 +08:00
    请大牛们指导下
    kumakiti
        3
    kumakiti  
       2017-03-01 13:49:48 +08:00
    我印象中好像没啥好办法,不过 google 了一下,在知乎上找到了一个问题,你可以参考下
    https://www.zhihu.com/question/20069661
    bozong
        4
    bozong  
    OP
       2017-03-01 13:50:54 +08:00
    @kumakiti #3 好的
    beginor
        5
    beginor  
       2017-03-01 13:56:08 +08:00 via Android   ❤️ 1
    关键代码包装成服务, http 调用
    50vip
        6
    50vip  
       2017-03-01 14:00:25 +08:00   ❤️ 4
    开源就不会被反编译了。
    bozong
        7
    bozong  
    OP
       2017-03-01 14:01:22 +08:00
    @50vip #6
    bozong
        8
    bozong  
    OP
       2017-03-01 14:05:51 +08:00
    @beginor #5 额。这是个办法、、、
    slideclick
        9
    slideclick  
       2017-03-01 14:09:34 +08:00
    python 大神去那公司有这技术,叫什么 dropbox 公司
    BiggerLonger
        10
    BiggerLonger  
       2017-03-01 14:10:07 +08:00 via Android
    用 Cython 編譯代碼然後打包成 egg 或者 wheel 文件
    bozong
        11
    bozong  
    OP
       2017-03-01 14:11:15 +08:00
    @BiggerLonger #10 我想打包成在 windwos 下执行的
    xuboying
        12
    xuboying  
       2017-03-01 14:12:03 +08:00 via Android   ❤️ 1
    带有这种目的的 task 我都尽量尝试用 c++来完成。
    bozong
        13
    bozong  
    OP
       2017-03-01 14:12:48 +08:00
    @xuboying #12 大牛
    nicevar
        14
    nicevar  
       2017-03-01 14:46:03 +08:00
    真要反编译你的程序,不做加壳之类的一些加固处理也是分分钟的事,用啥语言都一样,做了防护处理也得看是那群人盯上你的程序了
    BiggerLonger
        15
    BiggerLonger  
       2017-03-01 14:58:11 +08:00
    @bozong wheel 文件可以跨平台的, 現在 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 上面都是 wheel 文件了
    kaneg
        16
    kaneg  
       2017-03-01 15:05:42 +08:00
    自带 bug ,漏洞百出的程序不怕被人抄袭。如果真是写程序的高人,也不怕抄, Linux , Python 之父都是搞开源的
    newworld
        17
    newworld  
       2017-03-01 15:08:31 +08:00
    @nicevar #14 比较赞同 你得看是什么人顶上你的程序 真正的逆向高手那里...哪些商业软件被爆菊都是正常的 只是别人搞不搞你
    ijustdo
        18
    ijustdo  
       2017-03-01 15:27:45 +08:00
    #include <python.h>
    #include <stdio.h>
    #include <stdlib.h>


    int main(int argc, char *argv[])
    {

    Py_Initialize();

    FILE * fp = NULL;

    PyRun_SimpleString("execfile('test.py')");


    Py_Finalize();

    printf("---------------------END--------------------\n");

    return 0;
    }

    有启发没 明显你没看过 python 的源代码
    bozong
        19
    bozong  
    OP
       2017-03-01 15:42:02 +08:00
    @ijustdo #18 知道了。拜拜
    lrxiao
        20
    lrxiao  
       2017-03-01 16:12:28 +08:00
    混淆字节码
    Lycnir
        21
    Lycnir  
       2017-03-01 16:15:26 +08:00
    最安全的办法就是用自己写的 python 解析器 /斜眼笑
    bozong
        22
    bozong  
    OP
       2017-03-01 16:46:06 +08:00
    @Lycnir #21
    noNOno
        23
    noNOno  
       2017-03-01 17:12:34 +08:00
    没有,下一题 23333
    qybei
        24
    qybei  
       2017-03-01 19:53:12 +08:00 via Android
    用 cython 编译成 c
    phithon
        25
    phithon  
       2017-03-01 20:02:40 +08:00
    某公司出售的分布式扫描器就是自己研发的 python 解释器,改了字节码。别无他法。
    falseen
        26
    falseen  
       2017-03-01 20:08:43 +08:00
    或许可以试试用 http://nuitka.net/ 编译成 c ?
    xenme
        27
    xenme  
       2017-03-01 20:14:48 +08:00 via iPhone
    转成 exe ,然后加加密壳,能防住大多数人了
    yeasy
        28
    yeasy  
       2017-03-01 20:39:22 +08:00
    nuitka
    likuku
        29
    likuku  
       2017-03-01 20:42:14 +08:00
    这个只有法律手段了。
    jadecoder
        30
    jadecoder  
       2017-03-01 20:45:10 +08:00
    IronPython ,编译成 .NET ?
    bozong
        31
    bozong  
    OP
       2017-03-01 21:00:38 +08:00
    @jadecoder #30 不行吧
    loading
        32
    loading  
       2017-03-01 21:14:24 +08:00 via Android
    现在有工具能编译成 golang ,再编译。
    suikatw
        33
    suikatw  
       2017-03-01 21:30:50 +08:00   ❤️ 1
    没什么办法能够完全阻止反编译。给予足够的付出,任何程序都可以逆向出来

    你首先要考虑别人反编译你的程序会得到什么好处,如果能够降低其逆向价值,先降低其逆向给人带来的价值

    如果不能,那么你只要找到一个逆向代价比这个价值高的保护手段就可以了
    bozong
        34
    bozong  
    OP
       2017-03-01 21:40:40 +08:00
    @suikatw #33 赞
    kokutou
        35
    kokutou  
       2017-03-01 21:52:20 +08:00
    nuitka 编译。。。
    zmj1316
        36
    zmj1316  
       2017-03-01 21:56:07 +08:00
    同意 lss 观点,真的有人想破根本没办法防的,想想这么多单机游戏怎么被破解,还被汉化的...
    应该有不少游戏也是用 Python 当逻辑脚本的,不得不承认的确有人看汇编就像看代码一样
    hasdream
        37
    hasdream  
       2017-03-01 22:38:43 +08:00 via Android
    编译成 pyo 然后打包成 exe
    solidx
        38
    solidx  
       2017-03-02 11:44:53 +08:00
    @phithon 某公司是?
    bozong
        39
    bozong  
    OP
       2017-03-02 21:56:38 +08:00 via iPhone
    @MichaelJY 感谢
    lovemfc
        40
    lovemfc  
       2017-03-03 10:42:05 +08:00
    用 cython 把文件转换成二进制的 pyd 不就行了么,看这里 https://www.hajiaoshou.com/10.html
    bozong
        41
    bozong  
    OP
       2017-03-03 10:46:29 +08:00
    @lovemfc #40 我试试
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3403 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:35 · PVG 19:35 · LAX 03:35 · JFK 06:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.