我正在用Kotlin创建一个桌面应用程序,并且试图混淆最终输出
我使用JavaFx和Kotlin开发应用程序。我将Gradle作为构建工具使用,并且我正在搜索如何对我的jar进行模糊处理,以避免在jar上进行反向工程。生成的jar是一个胖jar(所有库都在jar中)。我已经尝试在gradle.build中使用proguard,但是每次运行构建时,使用本地Java库类(例如Object,String等)都会出现很多“找不到引用的类”的情况。
这是我当前的保护任务:
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文件,但是我所得到的只是编译错误
我希望有人可以帮助我解决我的问题
答案 0 :(得分:0)
JShrinker是一个jar混淆工具,提供图形用户界面。如果您不限于Pro Guard,它可能会解决您的问题。它非常用户友好,可为您节省所有其他程序几乎无法避免的配置和磁头刮擦。