V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
okwork
V2EX  ›  程序员

有一个想法,解决动态语言源代码被抄袭的方式,大家看看可不可行

  •  
  •   okwork · 2018-07-29 21:30:42 +08:00 · 5528 次点击
    这是一个创建于 2070 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大致思路是这样的:给别人部署的时候,其实只时给对方一个启动脚本,在服务器启动的时候,通过一次性密钥(启动脚本中)从指定服务器上下载源代码,然后运行之后,脚本命令就把源代码文件目录删除。

    好处:源代码不用存放在对方服务器上
    坏处:服务器断电重启,服务就完蛋不能用了。你必须给对方再分发一个新的一次性密钥,再下载一次。
    42 条回复    2018-07-31 10:06:37 +08:00
    ysc3839
        1
    ysc3839  
       2018-07-29 21:33:09 +08:00 via Android
    可以禁止删除文件。
    t6attack
        2
    t6attack  
       2018-07-29 21:36:15 +08:00
    这不又是 防君子不防小人么。
    niubee1
        3
    niubee1  
       2018-07-29 21:39:48 +08:00
    很早前这么干过, 但是如果是单机部署没有热备的话, 会出事故的, 所以后面还是放弃了这个方案
    xy90321
        4
    xy90321  
       2018-07-29 21:44:54 +08:00
    只要到过对方服务器,那主动权就根本不在你手上了
    对方在自己服务器上部署个监视目录自动拷贝留档备份什么的那都不是个事儿
    除非你把业务逻辑都做成 rpc 根本不经过对方服务器(可是那样又是性能噩梦)
    jowuIM
        5
    jowuIM  
       2018-07-29 21:46:21 +08:00
    。。。都下下来了,你害怕他拿不到?
    okwork
        6
    okwork  
    OP
       2018-07-29 21:47:09 +08:00
    @ysc3839 这个问题可以在部署的时候验证的。可以在脚本程序中先行验证,如果被禁止了删除文件的功能,就不进行源代码下载和安装的工作。

    @niubee1 那后面你是用什么方案怎么解决的?
    standin000
        7
    standin000  
       2018-07-29 21:49:38 +08:00
    混淆代码工具
    murmur
        8
    murmur  
       2018-07-29 21:53:49 +08:00
    dump 内存了解下
    inframe
        9
    inframe  
       2018-07-29 22:02:37 +08:00 via Android
    真的有必要就做成服务提供,不要下发代码了
    tomfs
        10
    tomfs  
       2018-07-29 22:08:41 +08:00
    增加自己的工作量,感觉没其他效果.
    真的有必要的话,就直接做 api 接口提供吧.
    LukeChien
        11
    LukeChien  
       2018-07-29 22:09:03 +08:00 via Android
    做游戏 SF 才这么做
    sujin190
        12
    sujin190  
       2018-07-29 22:10:26 +08:00 via Android
    没用吧,内存中照样弄得出来,再说你都需要下载启动后才删除,那弄出来更是轻而易举了
    innoink
        13
    innoink  
       2018-07-29 22:20:59 +08:00 via Android
    10 年前这种做法就已经过时
    aver4vex
        14
    aver4vex  
       2018-07-29 22:26:13 +08:00
    管你是什么语言,没有不能破解的,只是难度大小的区别。所以还是别瞎折腾了。
    lenqu
        15
    lenqu  
       2018-07-29 22:27:52 +08:00   ❤️ 1
    防 copy ?
    我只相信二进制,所以 python -> exe ?
    linux 上就不要搞什么闭源了吧 ,大家都闭源,还发展个屁。。。。。
    miao1007
        16
    miao1007  
       2018-07-29 22:29:05 +08:00 via Android
    还是类似于 aot 的方式构建为二进制更好
    bomb77
        17
    bomb77  
       2018-07-29 22:40:19 +08:00
    真的这么在意代码被 copy,要么服务化,要么用静态语言重写个
    xuboying
        18
    xuboying  
       2018-07-29 22:50:14 +08:00
    kill -6 <processID>
    ysc3839
        19
    ysc3839  
       2018-07-29 23:20:19 +08:00 via Android
    @okwork 把删除操作改成移动文件到别的地方。这样子你检测不出来,实际文件也没被删掉。
    tuimaochang
        20
    tuimaochang  
       2018-07-29 23:41:07 +08:00
    哈哈不可行,所有在客户端上执行的代码,都有被反编译的可能,只是看 cracker 耐心与否……
    Mac
        21
    Mac  
       2018-07-30 02:02:22 +08:00 via Android
    有这个带宽和服务器资源,还不如搞成 API,本地就只能解析数据。后台全控在你手。
    msg7086
        22
    msg7086  
       2018-07-30 04:26:28 +08:00
    不说别的高深的做法,我底层写个监控程序启动时自动对文件系统做快照的脚本就行了。
    ahhui
        23
    ahhui  
       2018-07-30 06:23:11 +08:00 via iPhone   ❤️ 1
    楼主没想过下载劫持?直接 dns 到本地服务器中转一下,中转过程中缓存记录一下。大概也就第一次要访问你的服务器,后面就直接本地读取外加拿到源代码了。上 https 也不是个事,都本地部署了,给个自签证书系统信任分分钟的事情。
    waruqi
        24
    waruqi  
       2018-07-30 07:14:28 +08:00 via Android
    内存 dump 下不就好了
    shuax
        25
    shuax  
       2018-07-30 07:34:46 +08:00
    你不会用矛,你的盾也设计不好
    fyyz
        26
    fyyz  
       2018-07-30 07:51:10 +08:00 via Android
    反编译你的启动脚本看汇编不就好了?
    fyyz
        27
    fyyz  
       2018-07-30 07:51:27 +08:00 via Android
    启动程序
    znood
        28
    znood  
       2018-07-30 08:00:56 +08:00 via iPhone
    你自己写个静态程序,动态代码解压出来执行
    reus
        29
    reus  
       2018-07-30 08:42:18 +08:00
    没用的,防君子不防小人的东西
    sarices
        30
    sarices  
       2018-07-30 08:56:09 +08:00
    还不如你直接在服务器计算,这样盗版也没用,非允许 ip 不允许请求
    cyspy
        31
    cyspy  
       2018-07-30 09:17:38 +08:00 via Android
    记得有个 Python 模块可以直接在进程里开 repl
    zhzer
        32
    zhzer  
       2018-07-30 09:29:14 +08:00
    没用,连混淆都防不住"有心人",更何况这个呢
    yufpga
        33
    yufpga  
       2018-07-30 09:35:25 +08:00
    那你还不如弄一个 docker 镜像给它部署呢
    dorothyREN
        34
    dorothyREN  
       2018-07-30 09:39:41 +08:00
    linux 下的 alias 命令了解一下,alias rm='mv !:1 /tmp'
    xxxy
        35
    xxxy  
       2018-07-30 10:08:24 +08:00
    在 dump 内存面前一切都无所遁形
    2pang
        36
    2pang  
       2018-07-30 10:11:38 +08:00
    修改虚拟机中的操作码和指令,然后发布的时候发布修改后的虚拟机以及编译出来的字节码
    liudaqi
        37
    liudaqi  
       2018-07-30 11:25:23 +08:00
    @yufpga docker 镜像不能被反编译吗?
    ShareDuck
        38
    ShareDuck  
       2018-07-30 13:05:03 +08:00 via Android
    @liudaqi 能!
    yufpga
        39
    yufpga  
       2018-07-30 14:03:16 +08:00
    @liudaqi 能够搞出来 Dockfile. 这个得看你的镜像怎么做了,docker 设计的初衷也不是这个,只是没那么容易被别人看到源码。基于楼主这个场景,我觉得 docker 是一种性价比比较高的交付方式。正如你们所说,只要想办法,总有人能够
    反编译你的代码,但是他们这么做的目的是什么,真有这个必要么?不见得吧
    fulvaz
        40
    fulvaz  
       2018-07-30 15:43:08 +08:00
    ...........你干脆弄成云服务算了.
    whnzy
        41
    whnzy  
       2018-07-30 15:57:15 +08:00
    像 python,报错的时候会读源文件的
    PythonAnswer
        42
    PythonAnswer  
       2018-07-31 10:06:37 +08:00
    关键算法部分搞成 api 啊。其他调用操作什么的,抄就抄了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2469 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 15:48 · PVG 23:48 · LAX 08:48 · JFK 11:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.