From 7c1ce8bb6e37a63b84bf1cd736d929110663c791 Mon Sep 17 00:00:00 2001 From: Sunil Shivanand Date: Thu, 28 Apr 2016 16:25:42 +0200 Subject: [PATCH 1/2] Issue 1234 - Use literal value of versionName when used When reference string is used for versionName in AndroidManifest.xml, fetch the literal value of the referened string in the output apk. This patch doesnt modify the original apk. --- .../src/main/java/brut/androlib/ApkDecoder.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/ApkDecoder.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/ApkDecoder.java index a0719e2e..2aa8be2a 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/ApkDecoder.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/ApkDecoder.java @@ -22,10 +22,12 @@ import brut.androlib.err.UndefinedResObject; import brut.androlib.meta.MetaInfo; import brut.androlib.meta.PackageInfo; import brut.androlib.meta.UsesFramework; +import brut.androlib.meta.VersionInfo; import brut.androlib.res.AndrolibResources; import brut.androlib.res.data.ResPackage; import brut.androlib.res.data.ResTable; import brut.androlib.res.util.ExtFile; +import brut.androlib.res.xml.ResXmlPatcher; import brut.common.BrutException; import brut.directory.DirectoryException; import brut.util.OS; @@ -354,7 +356,12 @@ public class ApkDecoder { } private void putVersionInfo(MetaInfo meta) throws AndrolibException { - meta.versionInfo = getResTable().getVersionInfo(); + VersionInfo info = getResTable().getVersionInfo(); + String refValue = ResXmlPatcher.pullValueFromStrings(mOutDir, info.versionName); + if (refValue != null) { + info.versionName = refValue; + } + meta.versionInfo = info; } private void putUnknownInfo(MetaInfo meta) throws AndrolibException { From a7f3e9b4d07349dc86fdaf6a66e4ff75beecddf2 Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Fri, 29 Apr 2016 07:07:33 -0400 Subject: [PATCH 2/2] add unit-test for #1234 --- .../androlib/ReferenceVersionCodeTest.java | 66 ++++++++++++++++++ .../brut/apktool/issue1234/issue1234.apk | Bin 0 -> 32390 bytes 2 files changed, 66 insertions(+) create mode 100644 brut.apktool/apktool-lib/src/test/java/brut/androlib/ReferenceVersionCodeTest.java create mode 100644 brut.apktool/apktool-lib/src/test/resources/brut/apktool/issue1234/issue1234.apk diff --git a/brut.apktool/apktool-lib/src/test/java/brut/androlib/ReferenceVersionCodeTest.java b/brut.apktool/apktool-lib/src/test/java/brut/androlib/ReferenceVersionCodeTest.java new file mode 100644 index 00000000..4fa4193f --- /dev/null +++ b/brut.apktool/apktool-lib/src/test/java/brut/androlib/ReferenceVersionCodeTest.java @@ -0,0 +1,66 @@ +/** + * Copyright 2014 Ryszard Wiśniewski + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package brut.androlib; + +import brut.androlib.meta.MetaInfo; +import brut.androlib.res.util.ExtFile; +import brut.common.BrutException; +import brut.util.OS; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.io.File; +import java.io.IOException; +import java.util.logging.Logger; + +import static org.junit.Assert.assertEquals; + +/** + * @author Connor Tumbleson + */ +public class ReferenceVersionCodeTest { + + @BeforeClass + public static void beforeClass() throws Exception, BrutException { + TestUtils.cleanFrameworkFile(); + sTmpDir = new ExtFile(OS.createTempDirectory()); + TestUtils.copyResourceDir(LargeIntsInManifestTest.class, "brut/apktool/issue1234/", sTmpDir); + } + + @AfterClass + public static void afterClass() throws BrutException { + OS.rmdir(sTmpDir); + } + + @Test + public void referenceBecomesLiteralTest() throws BrutException, IOException { + String apk = "issue1234.apk"; + + // decode issue1234.apk + ApkDecoder apkDecoder = new ApkDecoder(new File(sTmpDir + File.separator + apk)); + ExtFile decodedApk = new ExtFile(sTmpDir + File.separator + apk + ".out"); + apkDecoder.setOutDir(new File(sTmpDir + File.separator + apk + ".out")); + apkDecoder.decode(); + + MetaInfo metaInfo = new Androlib().readMetaFile(decodedApk); + assertEquals("v1.0.0", metaInfo.versionInfo.versionName); + } + + private static ExtFile sTmpDir; + + private final static Logger LOGGER = Logger.getLogger(BuildAndDecodeJarTest.class.getName()); +} \ No newline at end of file diff --git a/brut.apktool/apktool-lib/src/test/resources/brut/apktool/issue1234/issue1234.apk b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/issue1234/issue1234.apk new file mode 100644 index 0000000000000000000000000000000000000000..db82651aded49782f0651f666a0f5c140ce8572a GIT binary patch literal 32390 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 Hn+X38GU!+o literal 0 HcmV?d00001