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

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

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

    老板要求部署到现场 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   ·   实用小工具   ·   1147 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:36 · PVG 07:36 · LAX 15:36 · JFK 18:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.