zhangshaohan
V2EX  ›  Java

javafx 写的程序如何做混淆

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

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

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

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

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