ProGuardを使用してコードを難読化し、出力コードを使用してShadowを使用して、必要な依存性をJARに追加します。ProGuard ObufscationとShadow Dependencies
現在、私は-obf
JARと-all
JARを取得しています。私が必要とするものは、難読化されたコードを持つ-all
JARです。
import proguard.gradle.ProGuardTask
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'java'
buildscript {
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath group: 'net.sf.proguard', name: 'proguard-gradle', version: '5.3.1'
classpath group: 'com.github.jengelman.gradle.plugins', name: 'shadow', version: '1.2.4'
}
}
repositories {
mavenCentral()
jcenter()
}
jar {
manifest { attributes("Main-Class": "com.skcraft.launcher.Launcher") }
}
dependencies {
compile 'org.projectlombok:lombok:1.12.2'
compile 'com.fasterxml.jackson.core:jackson-databind:2.3.0'
compile 'commons-lang:commons-lang:2.6'
compile 'commons-io:commons-io:1.2'
compile 'com.google.guava:guava:15.0'
compile 'com.beust:jcommander:1.32'
compile 'com.miglayout:miglayout:3.7.4'
compile 'com.google.code.findbugs:jsr305:3.0.0'
compile files ('libs/javax-crypto.jar')
}
processResources {
filesMatching('**/*.properties') {
filter {
it.replace('${project.version}', project.version)
}
}
}
task obfuscate(type: proguard.gradle.ProGuardTask) {
configuration '../proguard.txt'
injars jar
outjars "${buildDir}/libs/launcher-${version}-obf.jar"
libraryjars files(configurations.compile.collect())
}
shadowJar {
dependencies {
exclude(dependency('org.projectlombok:lombok'))
}
}
build.dependsOn(obfuscate)
build.dependsOn(shadowJar)
task wrapper(type: Wrapper) { gradleVersion = "3.1" }
私はshadowJar
を使って思いついたのですが、それを難読化しましたが、proguard.txt
を設定してコードを難読化する必要があります。私は以下これを行うにしようとしましたが、それはまだエラーを投げ、すべてのパッケージを難読化してみました:事前
は私にとってはうまくいきませんでした。私は最初に難読化された薄い瓶を作り、それをシャドウジャーのパラメータとして渡しました。しかし、生成されたjarファイルには、難読化されたコードはありませんでした。 ファットジャーを逆コンパイルすることで効果があるかどうかチェックしましたか? – wizneel