大家发布到现场的 Java 代码有加密吗?都是咋实现的,可否分享下? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sunboy911
V2EX    Java

大家发布到现场的 Java 代码有加密吗?都是咋实现的,可否分享下?

  •  
  •   sunboy911 2017-11-02 10:14:50 +08:00 9203 次点击
    这是一个创建于 2929 天前的主题,其中的信息可能已经有所发展或是发生改变。

    老板要求部署到现场 tomcat 的代码全部加密,防止客户反编译!!

    31 条回复    2020-07-09 16:19:32 +08:00
    micean
        1
    micean  
       2017-11-02 10:31:20 +08:00
    应该是命名混淆吧
    zorui
        2
    zorui  
       2017-11-02 10:33:57 +08:00
    java 代码加密的好像没有吧。。 只有混淆。。 反编译后看不懂。
    liuminghao233
        3
    liuminghao233  
       2017-11-02 10:36:50 +08:00 via iPhone
    改 jvm 可行

    其他的都是一般的混淆
    AlphaIce
        4
    AlphaIce  
       2017-11-02 10:43:12 +08:00
    没有加密 直接发布的
    sagaxu
        5
    sagaxu  
       2017-11-02 10:45:24 +08:00 via Android
    不加密,有时连代码都一起给他们
    sonyxperia
        6
    sonyxperia  
       2017-11-02 10:57:16 +08:00
    客户要求提供源码
    weics
        7
    weics  
       2017-11-02 11:34:44 +08:00
    proguard
    loshine1992
        8
    loshine1992  
       2017-11-02 12:00:28 +08:00   12


    +1s
    LukeChien
        9
    LukeChien  
       2017-11-02 12:06:23 +08:00 via Android
    得用 jni
    zouqiang
        10
    zouqiang  
       2017-11-02 12:43:27 +08:00 via iPhone
    license4j
    sunboy911
        11
    sunboy911  
    OP
       2017-11-02 12:45:58 +08:00
    @micean 对的差不多一个意思
    sunboy911
        12
    sunboy911  
    OP
       2017-11-02 12:46:05 +08:00
    @zorui 是的
    sunboy911
        13
    sunboy911  
    OP
       2017-11-02 12:46:21 +08:00
    @liuminghao233 你们咋混淆的呢
    sunboy911
        14
    sunboy911  
    OP
       2017-11-02 12:46:46 +08:00
    @loshine1992 大神你们是 咋混淆的呢,用的啥
    sunboy911
        15
    sunboy911  
    OP
       2017-11-02 12:47:06 +08:00
    @LukeChien 搜搜看
    sunboy911
        16
    sunboy911  
    OP
       2017-11-02 12:47:17 +08:00
    @LukeChien 感谢
    sunboy911
        17
    sunboy911  
    OP
       2017-11-02 12:47:24 +08:00
    @zouqiang 感谢
    chocotan
        18
    chocotan  
       2017-11-02 12:49:58 +08:00
    写个脚本在编译之后把 class 文件加密
    然后改 classloader,tomcat 和 spring 的都要改
    notreami
        19
    notreami  
       2017-11-02 12:50:42 +08:00
    混淆就够了。
    bk201
        20
    bk201  
       2017-11-02 12:53:44 +08:00
    我觉得与 tomcat 一起打包编译成 exe 可行。
    wdlth
        21
    wdlth  
       2017-11-02 12:56:52 +08:00 via Android
    混淆、改 class loader,再把 JVM 改了……
    kidult
        22
    kidult  
       2017-11-02 13:11:18 +08:00
    多招两个实习生写写不就完了
    loshine1992
        23
    loshine1992  
       2017-11-02 13:59:27 +08:00
    @sunboy911 proguard
    paragon
        24
    paragon  
       2017-11-02 14:03:10 +08:00
    原则上只能混淆~
    xiaoyu03
        25
    xiaoyu03  
       2017-11-02 15:20:15 +08:00   1
    看到这个帖子还以为是我呢...我们公司软件要产品化接下去我大概要做:
    1.USB key + license ;
    2.混淆代码(效果不好,因为种种原因很多代码不能混淆 QAQ );
    3.写一个小工具给 Jar 中的 Class 加密。在 ClassLoader 中解密,Spring Boot 的 ClassLoader 需要修改;或者 Jni 方式解密
    4.想办法怎么隐藏 ClassLoader,启动时动态生成?
    zpf124
        26
    zpf124  
       2017-11-02 15:46:18 +08:00
    我们曾经做过过一个简单粗暴的方法。

    1,代码根据 机器的网卡 mac 地址 + 硬盘序列号 用自定义的加密规则算一个 激活码。
    2,项目启动如果激活码不正确或者没填激活码,不连接 jdbc,几个关键的 bean 不生成。
    3,将许多乱七八糟的类都一起混淆,混淆后连我们自己都看不懂加密那个类里的代码,混淆工具将许多字符串和变量混淆后都转移到其他类了,同理这个类里还包含了一些其他类用的变量。

    3,部署之后 客户将机器的 网卡 mac 和 硬盘序列号发给我们,我们这边算出激活码在发给他们,用户要换个机器部署都得联系我们。
    yksg
        27
    yksg  
       2017-11-02 16:51:46 +08:00   2
    多招两个实习生就 OK 了
    rswl
        28
    rswl  
       2017-11-02 16:53:53 +08:00
    不是都能反编译的吗
    hsuan
        29
    hsuan  
       2017-11-02 16:54:35 +08:00 via Android
    把关键 jar 加密,运行时揭秘后动态加载
    abcbuzhiming
        30
    abcbuzhiming  
       2017-11-13 21:57:14 +08:00
    这纯粹是老板自己折腾;要么你牛逼到改 jvm 本身,要么 jni 用 c++编程搞 dll 的话,其它方式没啥用,你混淆?改 classloader ?我直接 dump 内存,虚拟机语言拿到内存字节码后反编译 class 源码比纯二进制语言容易多了。而且这年头,你以为你的代码是高科技啊,是个人都想要?
    xiner
        31
    xiner  
       2020-07-09 16:19:32 +08:00
    时隔这么久,不知楼主还是否有 Java 加密需求。
    几维安全 Java 代码加密产品能够帮助到你。
    Java2C:创新 Dex 和 Jar 源码保护方案。将 Java 代码自动翻译为 C 代码,并实施 Native 层的虚拟化加密保护,比传统加固兼容性更好,安全性更高,防止反编译。
    Java2C 是移动端新一代 DEX 加密方案,提交安卓应用包 APK 文件,即可将 DEX 文件中的核心函数翻译成 C 代码,并通过 Native 层的源码加密技术实施代码混淆、代码虚拟化和字符串加密处理,从而提高 Java 层核心代码的安全性。
    与传统的 APP 加固方案相比,不涉及到自定义修改 DEX 文件的加载方式,所以其兼容性非常好;其次 Java 函数被完全转化为 C 函数,直接在 Native 层执行,不存在 Java 层解密执行的步骤,其性能和执行效率更优。
    ,欢迎查阅,java 源码加密: https://www.kiwisec.com/product/java2c.html
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1244 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 23:55 PVG 07:55 LAX 15:55 JFK 18:55
    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