最近用 Python 写了个工具,有没有什么办法防止被反编译 - V2EX
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 15327 次点击
    这是一个创建于 3162 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
    boong  
    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     Solana     5476 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 05:48 PVG 13:48 LAX 22:48 JFK 01:48
    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