diff --git a/brut.apktool/apktool-cli/src/main/java/brut/apktool/Main.java b/brut.apktool/apktool-cli/src/main/java/brut/apktool/Main.java index a0fc2c0ec6..b2dbf7f50d 100644 --- a/brut.apktool/apktool-cli/src/main/java/brut/apktool/Main.java +++ b/brut.apktool/apktool-cli/src/main/java/brut/apktool/Main.java @@ -42,6 +42,12 @@ public static void main(String[] args) throws BrutException { // headless System.setProperty("java.awt.headless", "true"); + // Ignore stricter validation on zip files from java 11 onwards as this is a protection technique + // that applications use to thwart disassembly tools. We have protections in place for directory traversal + // and handling of bogus data in the zip header, so we can ignore this. + System.setProperty("jdk.nio.zipfs.allowDotZipEntry", "true"); + System.setProperty("jdk.util.zip.disableZip64ExtraFieldValidation", "true"); + // set verbosity default Verbosity verbosity = Verbosity.NORMAL; diff --git a/build.gradle b/build.gradle index 70f12cd330..4b7f2733e1 100644 --- a/build.gradle +++ b/build.gradle @@ -142,6 +142,10 @@ subprojects { apply plugin: 'java' test { + // https://github.com/iBotPeaches/Apktool/issues/3174 + systemProperty 'jdk.nio.zipfs.allowDotZipEntry', 'true' + systemProperty 'jdk.util.zip.disableZip64ExtraFieldValidation', 'true' + testLogging { exceptionFormat = 'full' }