V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zhangshaohan
V2EX  ›  Java

javafx 写的程序如何做混淆

  •  
  •   zhangshaohan · Nov 11, 2024 · 3549 views
    This topic created in 534 days ago, the information mentioned may be changed or developed.

    使用 proguard 尝试了进行混淆,费了好大力气终于弄好了,反编译也看不出原始代码。但是实际运行的时候就报错了。启动的时候找不到方法,估计是混淆导致的。关于 Javafx 还有什么好的混淆方案呢?

    8 replies    2025-09-25 18:29:35 +08:00
    Chinsung
        1
    Chinsung  
       Nov 11, 2024
    java 写的到字节码层面执行,还是挺难把混淆做的很彻底的吧
    感觉不如核心逻辑直接用 JNI 去写
    cJ8SxGOWRH0LSelC
        2
    cJ8SxGOWRH0LSelC  
       Nov 11, 2024
    放弃吧, 不要浪费精力了, 就算你混淆的再完美, 也只不过看起来麻烦一点, 真想研究你的逻辑, 而是轻轻松松。
    zhangshaohan
        3
    zhangshaohan  
    OP
       Nov 11, 2024
    @StinkyTofus
    @Chinsung 好的,谢谢了 o(╥﹏╥)o
    ntdll
        4
    ntdll  
       Nov 11, 2024
    >> 实际运行的时候就报错

    这通常是由于程序中使用反射导致的,proguard 并不知道哪些类、方法、属性被通过反射引用,因此需要你手动 keep 一部分。

    通常来说一些库的作者会告诉你哪些需要被 keep ,当然笨办法可以每次运行的时候,基本提示的应该是 class not found 一类的,把对应的 class ,或者索性它所在的整个 package 都 keep 住,反复多运行几次,就行了。
    zhangshaohan
        5
    zhangshaohan  
    OP
       Nov 11, 2024
    @gam2046 对,应该是这个原因,感谢。
    dimwoodxi27
        6
    dimwoodxi27  
       Nov 12, 2024
    没办法直译,永远都是开源;运行还得带个 jre ,混淆反而影响性能和各种报错,fx 写跨平台 gui 真感觉性能体积连 go 的 gui 都不如
    Nitsuya
        7
    Nitsuya  
       Nov 12, 2024
    GluonFx Native, 不过挺麻烦的.
    CodeCodeStudy
        8
    CodeCodeStudy  
       Sep 25, 2025
    就是因为反射等动态特性导致的,就像 GraalVM 的 native-image 一样,碰到反射的代码就容易出问题
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1236 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 17:40 · PVG 01:40 · LAX 10:40 · JFK 13:40
    ♥ Do have faith in what you're doing.