求一款可以混淆或加密 jar 的工具及说明文档 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
24Arise
1.18D
V2EX    Java

求一款可以混淆或加密 jar 的工具及说明文档

  •  
  •   24Arise 2023-07-04 15:38:00 +08:00 2811 次点击
    这是一个创建于 883 天前的主题,其中的信息可能已经有所发展或是发生改变。

    帮客户实施的时候不交付产品源码,想通过混淆或者加密的方式对我们产品的 jar 进行保护,避免客户多渠道分发,

    请教各位见多识广的 V 友,有木有对这块有经验的望提点一二

    有哪些开源的工具,顺便告知下相关文档,跪谢 ~

    19 条回复    2023-08-24 11:57:29 +08:00
    GitTao
        1
    GitTao  
       2023-07-04 17:58:37 +08:00
    OutOfMemoryError
        2
    OutOfMemoryError  
       2023-07-04 18:02:53 +08:00
    allatori
    virusdefender
        3
    virusdefender  
       2023-07-04 18:02:55 +08:00
    1. 混淆是指将变量改成 a b c d 这样的,这个建议用 proguard

    2. 加密是用户解压你的 jar 之后也无法直接看 a b c d 的代码,这个楼上 xjar 可以,加密字节码,但是 xjar 也非常容易破解。

    3. 防止用户多渠道分发,这个混淆或者加密无法解决吧。得考虑 license 的方案,比如绑定机器码、在线验证之类的,当然也只是提高成本,无法彻底解决。
    LeegoYih
        4
    LeegoYih  
       2023-07-04 18:04:43 +08:00
    murmur
        5
    murmur  
       2023-07-04 18:32:24 +08:00
    光 jar 不行,jni 里得走起,一堆业务扔 c 里,c 能干的更多,必要的时候还可以考虑 lua 虚拟机或者其他的自编虚拟机这种老传统
    Kipp
        6
    Kipp  
       2023-07-04 19:27:15 +08:00 via iPhone
    Java 估计挺麻烦,我们之前公司也有类似的需求。被我 arthas 上去反编译加热更新跳过了
    24Arise
        7
    24Arise  
    OP
       2023-07-04 20:19:31 +08:00 via iPhone
    @GitTao 感谢 ~
    24Arise
        8
    24Arise  
    OP
       2023-07-04 20:20:30 +08:00 via iPhone
    @OutOfMemoryError 你这名字让我很难过 今儿临近下班客户一个服务 GC 了 又得通宵 ~
    24Arise
        9
    24Arise  
    OP
       2023-07-04 20:21:17 +08:00 via iPhone
    @virusdefender 感谢感谢 其实 license 也考虑搞 准备双管齐下 ~
    24Arise
        10
    24Arise  
    OP
       2023-07-04 20:22:20 +08:00 via iPhone
    @LeegoYih 感谢 ~
    24Arise
        11
    24Arise  
    OP
       2023-07-04 20:22:56 +08:00 via iPhone
    @murmur 你这成本不可控啊~
    OutOfMemoryError
        12
    OutOfMemoryError  
       2023-07-04 20:47:02 +08:00
    @24Arise 哈哈哈哈 笑死

    强烈建议 allatori 很成熟的商用方案
    另外就是 jni 了
    maokabc
        13
    maokabc  
       2023-07-05 05:50:50 +08:00 via Android
    可以尝试用安卓上一些加固改改,需要保护的 class 到 dex ,dex 再转成 c 或者自定义 vm ,只是依赖 jni 接口兼容性没大问题。又或者像 pdd 那样直接虚拟化 java 字节码。
    murmur
        14
    murmur  
       2023-07-05 07:58:22 +08:00
    @24Arise 正版化本身就是律师的活,光靠技术是搞不定的
    flyqie
        15
    flyqie  
       2023-07-05 13:12:52 +08:00 via Android
    toB 业务?

    toB 在混淆或者加密这边得适度,有些混淆或者加密可能会影响可用性。

    toB 真要想防止客户多渠道分发,最关键的还是得靠法务,技术上不是最优解。
    mijindu1
        16
    mijindu1  
       2023-07-06 14:38:05 +08:00
    https://gitee.com/roseboy/classfinal
    xjar 还有这个都是开源的,不过两者用的原理不一样
    ffLoveJava
        17
    ffLoveJava  
       2023-07-06 15:55:55 +08:00
    license 有开源的解决方案吗?
    jni 有开源的参考吗?
    没搜到啊
    ABAndC
        18
    ABAndC  
       2023-07-11 10:23:53 +08:00
    最近有类似需求,但是有些项目都不更新了
    impanghu
        19
    impanghu  
       2023-08-24 11:57:29 +08:00
    protector4j
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3940 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 05:25 PVG 13:25 LAX 21:25 JFK 00:25
    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