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

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

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

    帮客户实施的时候不交付产品源码,想通过混淆或者加密的方式对我们产品的 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   ·   实用小工具   ·   1070 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:12 · PVG 03:12 · LAX 11:12 · JFK 14:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.