From 945ce9b3d4a757b4f78dd4e4f7381756c36ac971 Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Sat, 17 Aug 2019 06:59:54 -0400 Subject: [PATCH 1/3] build: update to smali/baksmali 2.3.0 --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index c4c09e386d..0fe7ff11c3 100644 --- a/build.gradle +++ b/build.gradle @@ -109,7 +109,7 @@ subprojects { ext { depends = [ - baksmali: 'org.smali:baksmali:2.2.7', + baksmali: 'org.smali:baksmali:2.3', commons_cli: 'commons-cli:commons-cli:1.4', commons_io: 'commons-io:commons-io:2.4', commons_lang: 'org.apache.commons:commons-lang3:3.1', @@ -117,7 +117,7 @@ subprojects { junit: 'junit:junit:4.12', proguard_gradle: 'net.sf.proguard:proguard-gradle:6.1.1', snakeyaml: 'org.yaml:snakeyaml:1.18:android', - smali: 'org.smali:smali:2.2.7', + smali: 'org.smali:smali:2.3', xmlpull: 'xpp3:xpp3:1.1.4c', xmlunit: 'xmlunit:xmlunit:1.6', ] From fefc5e226ac9868492bca8afd71006162cd1b4a9 Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Sat, 17 Aug 2019 07:00:15 -0400 Subject: [PATCH 2/3] refactor: use MultiDexContainer instead of DexBackedDexFile --- .../java/brut/androlib/src/SmaliDecoder.java | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/src/SmaliDecoder.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/src/SmaliDecoder.java index b569c85dca..4f26759b20 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/src/SmaliDecoder.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/src/SmaliDecoder.java @@ -24,6 +24,7 @@ import org.jf.dexlib2.dexbacked.DexBackedDexFile; import org.jf.dexlib2.dexbacked.DexBackedOdexFile; import org.jf.dexlib2.analysis.InlineMethodResolver; +import org.jf.dexlib2.iface.MultiDexContainer; import java.io.File; import java.io.IOException; @@ -68,10 +69,27 @@ private void decode() throws AndrolibException { jobs = 6; } - // create the dex - DexBackedDexFile dexFile = DexFileFactory.loadDexEntry(mApkFile, mDexFile, true, Opcodes.forApi(mApi)); + // create the container + MultiDexContainer container = DexFileFactory.loadDexContainer(mApkFile, Opcodes.forApi(mApi)); + MultiDexContainer.DexEntry dexEntry; + DexBackedDexFile dexFile; - if (dexFile.isOdexFile()) { + // If we have 1 item, ignore the passed file. Pull the DexFile we need. + if (container.getDexEntryNames().size() == 1) { + dexEntry = container.getEntry(container.getDexEntryNames().get(0)); + } else { + dexEntry = container.getEntry(mDexFile); + } + + // Double check the passed param exists + if (dexEntry == null) { + dexEntry = container.getEntry(container.getDexEntryNames().get(0)); + } + + assert dexEntry != null; + dexFile = dexEntry.getDexFile(); + + if (dexFile.supportsOptimizedOpcodes()) { throw new AndrolibException("Warning: You are disassembling an odex file without deodexing it."); } From d2bfa79a2474be86ad603c468414c1c509c849ca Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Sat, 17 Aug 2019 10:32:44 -0400 Subject: [PATCH 3/3] build: update jdk8 to 221 from 211 --- scripts/travis-ci/clean-tests.sh | 6 +++--- scripts/travis-ci/run-tests.sh | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/travis-ci/clean-tests.sh b/scripts/travis-ci/clean-tests.sh index 31f95b9953..bbc8f7e765 100755 --- a/scripts/travis-ci/clean-tests.sh +++ b/scripts/travis-ci/clean-tests.sh @@ -3,11 +3,11 @@ if [ "$TRAVIS_OS_NAME" = "windows" ]; then export GRADLE_OPTS=-Dorg.gradle.daemon=false choco install jdk8 - export PATH=$PATH:"/c/Program Files/Java/jdk1.8.0_211/bin" - export JAVA_HOME="/c/Program Files/Java/jdk1.8.0_211" + export PATH=$PATH:"/c/Program Files/Java/jdk1.8.0_221/bin" + export JAVA_HOME="/c/Program Files/Java/jdk1.8.0_221" ./gradlew.bat clean else ./gradlew clean fi -exit $? \ No newline at end of file +exit $? diff --git a/scripts/travis-ci/run-tests.sh b/scripts/travis-ci/run-tests.sh index 3467e5740f..3319a62a76 100755 --- a/scripts/travis-ci/run-tests.sh +++ b/scripts/travis-ci/run-tests.sh @@ -2,11 +2,11 @@ if [ "$TRAVIS_OS_NAME" = "windows" ]; then export GRADLE_OPTS=-Dorg.gradle.daemon=false - export PATH=$PATH:"/c/Program Files/Java/jdk1.8.0_211/bin" - export JAVA_HOME="/c/Program Files/Java/jdk1.8.0_211" + export PATH=$PATH:"/c/Program Files/Java/jdk1.8.0_221/bin" + export JAVA_HOME="/c/Program Files/Java/jdk1.8.0_221" ./gradlew.bat build shadowJar proguard else ./gradlew build shadowJar proguard fi -exit $? \ No newline at end of file +exit $?