我创建与科特林一个桌面应用程序,我试图混淆最终输出
我使用JavaFX和科特林的应用程序。我有摇篮的工作作为构建工具,我在寻找如何混淆我的罐子,以避免对罐子反向enginneering。生成的JAR是脂肪罐子(所有图书馆都罐内)。我已经在我的gradle.build使用ProGuard尝试,但每次我跑我的体型,我得到很多“找不到引用的类”与本地Java库类,如对象,字符串,等等。
这是我当前的ProGuard任务:
def jarNameWithoutExtension = jar.archiveName.with {
it.take(it.lastIndexOf(".")) }
def obfuscatedJarName = "${jarNameWithoutExtension}-release.jar"
def jarFileLocation = jar.archivePath.parent
def obfuscatedFilePath = Paths.get(jarFileLocation, obfuscatedJarName)
task obfuscate(type: ProGuardTask) {
configuration 'proguard.txt'
injars jar.archivePath
outjars obfuscatedFilePath.toString()
libraryjars files(configurations.compile.collect())
libraryjars "/usr/lib/jvm/java-11-oracle/lib/rt.jar"
doLast {
jar.archivePath.renameTo(Paths.get(jarFileLocation, "$jarNameWithoutExtension-original.jar").toFile())
obfuscatedFilePath.toFile().renameTo(jar.archivePath)
}
}
jar.finalizedBy(project.tasks.obfuscate)
该proguard.txt文件目前是空的错误例子是“警告:javafx.animation.Animation:找不到超类或接口java.lang.Object继承”
我希望有我的建设项目时产生的混淆的JAR文件,但我的一切是编译错误
我希望有人能帮助我与我的问题
JShrinker是一个罐子混淆工具,提供了一个图形用户界面。如果你不局限于亲卫队,它可能会解决您的问题。这是非常人性化,并节省您所有的配置和挠头不被其他程序几乎是无法避免的。