aboutsummaryrefslogtreecommitdiff
path: root/baksmali
diff options
context:
space:
mode:
authorBen Gruver <bgruv@google.com>2016-09-18 11:23:26 -0700
committerBen Gruver <bgruv@google.com>2016-09-19 09:08:53 -0700
commitfb10b5731c9b88c1aed0dfa7621dd6648f7a77fe (patch)
tree8910382e09e0ff053daa599686b56bf5e8e3e137 /baksmali
parent7e8afc4d8aee82cbab27abca6f5136df636dfbea (diff)
downloadsmali-fb10b5731c9b88c1aed0dfa7621dd6648f7a77fe.tar.gz
Add AnalysisArguments.loadClassPathForDexFile
Diffstat (limited to 'baksmali')
-rw-r--r--baksmali/src/main/java/org/jf/baksmali/AnalysisArguments.java22
-rw-r--r--baksmali/src/main/java/org/jf/baksmali/DisassembleCommand.java6
-rw-r--r--baksmali/src/main/java/org/jf/baksmali/ListFieldOffsetsCommand.java5
-rw-r--r--baksmali/src/main/java/org/jf/baksmali/ListVtablesCommand.java4
4 files changed, 20 insertions, 17 deletions
diff --git a/baksmali/src/main/java/org/jf/baksmali/AnalysisArguments.java b/baksmali/src/main/java/org/jf/baksmali/AnalysisArguments.java
index 008ec460..5198803c 100644
--- a/baksmali/src/main/java/org/jf/baksmali/AnalysisArguments.java
+++ b/baksmali/src/main/java/org/jf/baksmali/AnalysisArguments.java
@@ -33,9 +33,13 @@ package org.jf.baksmali;
import com.beust.jcommander.Parameter;
import com.google.common.collect.Lists;
+import org.jf.dexlib2.analysis.ClassPath;
+import org.jf.dexlib2.iface.DexFile;
import org.jf.util.jcommander.ColonParameterSplitter;
import org.jf.util.jcommander.ExtendedParameter;
+import javax.annotation.Nonnull;
+import java.io.IOException;
import java.util.List;
public class AnalysisArguments {
@@ -45,17 +49,17 @@ public class AnalysisArguments {
public int apiLevel = 15;
@Parameter(names = {"-b", "--bootclasspath", "--bcp"},
- description = "A colon separated list of the jar/oat files to include in the " +
- "bootclasspath when analyzing the dex file. If not specified, baksmali will attempt to choose an " +
- "appropriate default. This is analogous to Android's BOOTCLASSPATH environment variable.",
+ description = "A colon separated list of the files to include in the bootclasspath when analyzing the dex " +
+ "file. If not specified, baksmali will attempt to choose an " +
+ "appropriate default. When analyzing oat files, this can simply be the path to the device's " +
+ "boot.oat file. See baksmali help classpath for more information.",
splitter = ColonParameterSplitter.class)
@ExtendedParameter(argumentNames = "classpath")
public List<String> bootClassPath = null;
@Parameter(names = {"-c", "--classpath", "--cp"},
- description = "A colon separated list of additional jar/oat files to include in the classpath " +
- "when analyzing the dex file. These will be added to the classpath after any bootclasspath " +
- "entries.",
+ description = "A colon separated list of additional files to include in the classpath when analyzing the " +
+ "dex file. These will be added to the classpath after any bootclasspath entries.",
splitter = ColonParameterSplitter.class)
@ExtendedParameter(argumentNames = "classpath")
public List<String> classPath = Lists.newArrayList();
@@ -72,4 +76,10 @@ public class AnalysisArguments {
"only be needed for 4.2.0 odexes. It was reverted in 4.2.1.")
public boolean checkPackagePrivateAccess = false;
}
+
+ public ClassPath loadClassPathForDexFile(@Nonnull DexFile dexFile, boolean checkPackagePrivateAccess)
+ throws IOException {
+ return ClassPath.loadClassPath(classPathDirectories, bootClassPath, classPath, dexFile, apiLevel,
+ checkPackagePrivateAccess);
+ }
}
diff --git a/baksmali/src/main/java/org/jf/baksmali/DisassembleCommand.java b/baksmali/src/main/java/org/jf/baksmali/DisassembleCommand.java
index b8c9c21d..0733af72 100644
--- a/baksmali/src/main/java/org/jf/baksmali/DisassembleCommand.java
+++ b/baksmali/src/main/java/org/jf/baksmali/DisassembleCommand.java
@@ -38,7 +38,6 @@ import com.beust.jcommander.ParametersDelegate;
import com.beust.jcommander.validators.PositiveInteger;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import org.jf.dexlib2.analysis.ClassPath;
import org.jf.dexlib2.dexbacked.DexBackedDexFile;
import org.jf.dexlib2.iface.DexFile;
import org.jf.dexlib2.util.SyntheticAccessorResolver;
@@ -191,9 +190,8 @@ public class DisassembleCommand extends DexInputCommand {
if (needsClassPath()) {
try {
- options.classPath = ClassPath.loadClassPath(analysisArguments.classPathDirectories,
- analysisArguments.bootClassPath, analysisArguments.classPath, dexFile,
- analysisArguments.apiLevel, shouldCheckPackagePrivateAccess());
+ options.classPath = analysisArguments.loadClassPathForDexFile(dexFile,
+ shouldCheckPackagePrivateAccess());
} catch (Exception ex) {
System.err.println("\n\nError occurred while loading class path files. Aborting.");
ex.printStackTrace(System.err);
diff --git a/baksmali/src/main/java/org/jf/baksmali/ListFieldOffsetsCommand.java b/baksmali/src/main/java/org/jf/baksmali/ListFieldOffsetsCommand.java
index a241c51a..1990204f 100644
--- a/baksmali/src/main/java/org/jf/baksmali/ListFieldOffsetsCommand.java
+++ b/baksmali/src/main/java/org/jf/baksmali/ListFieldOffsetsCommand.java
@@ -35,7 +35,6 @@ import com.beust.jcommander.JCommander;
import com.beust.jcommander.Parameter;
import com.beust.jcommander.Parameters;
import com.beust.jcommander.ParametersDelegate;
-import org.jf.dexlib2.analysis.ClassPath;
import org.jf.dexlib2.analysis.ClassProto;
import org.jf.dexlib2.dexbacked.DexBackedDexFile;
import org.jf.dexlib2.iface.ClassDef;
@@ -106,9 +105,7 @@ public class ListFieldOffsetsCommand extends DexInputCommand {
options.apiLevel = analysisArguments.apiLevel;
try {
- options.classPath = ClassPath.loadClassPath(analysisArguments.classPathDirectories,
- analysisArguments.bootClassPath, analysisArguments.classPath, dexFile, analysisArguments.apiLevel,
- false);
+ options.classPath = analysisArguments.loadClassPathForDexFile(dexFile, false);
} catch (Exception ex) {
System.err.println("Error occurred while loading class path files.");
ex.printStackTrace(System.err);
diff --git a/baksmali/src/main/java/org/jf/baksmali/ListVtablesCommand.java b/baksmali/src/main/java/org/jf/baksmali/ListVtablesCommand.java
index f0d40fda..a0ccea39 100644
--- a/baksmali/src/main/java/org/jf/baksmali/ListVtablesCommand.java
+++ b/baksmali/src/main/java/org/jf/baksmali/ListVtablesCommand.java
@@ -36,7 +36,6 @@ import com.beust.jcommander.Parameter;
import com.beust.jcommander.Parameters;
import com.beust.jcommander.ParametersDelegate;
import org.jf.baksmali.AnalysisArguments.CheckPackagePrivateArgument;
-import org.jf.dexlib2.analysis.ClassPath;
import org.jf.dexlib2.analysis.ClassProto;
import org.jf.dexlib2.dexbacked.DexBackedDexFile;
import org.jf.dexlib2.iface.ClassDef;
@@ -134,8 +133,7 @@ public class ListVtablesCommand extends DexInputCommand {
options.apiLevel = analysisArguments.apiLevel;
try {
- options.classPath = ClassPath.loadClassPath(analysisArguments.classPathDirectories,
- analysisArguments.bootClassPath, analysisArguments.classPath, dexFile, analysisArguments.apiLevel,
+ options.classPath = analysisArguments.loadClassPathForDexFile(dexFile,
checkPackagePrivateArgument.checkPackagePrivateAccess);
} catch (Exception ex) {
System.err.println("Error occurred while loading class path files.");