diff --git a/jadx-core/src/main/java/jadx/api/DefaultJadxArgs.java b/jadx-core/src/main/java/jadx/api/DefaultJadxArgs.java deleted file mode 100644 index c692d16ad66be09c24d7a2ac9ad96c153aaec3e8..0000000000000000000000000000000000000000 --- a/jadx-core/src/main/java/jadx/api/DefaultJadxArgs.java +++ /dev/null @@ -1,76 +0,0 @@ -package jadx.api; - -import java.io.File; - -public class DefaultJadxArgs implements IJadxArgs { - - @Override - public File getOutDir() { - return new File("jadx-output"); - } - - @Override - public int getThreadsCount() { - return Runtime.getRuntime().availableProcessors(); - } - - @Override - public boolean isCFGOutput() { - return false; - } - - @Override - public boolean isRawCFGOutput() { - return false; - } - - @Override - public boolean isFallbackMode() { - return false; - } - - @Override - public boolean isShowInconsistentCode() { - return false; - } - - @Override - public boolean isVerbose() { - return false; - } - - @Override - public boolean isSkipResources() { - return false; - } - - @Override - public boolean isSkipSources() { - return false; - } - - @Override - public boolean isDeobfuscationOn() { - return false; - } - - @Override - public int getDeobfuscationMinLength() { - return Integer.MIN_VALUE + 1; - } - - @Override - public int getDeobfuscationMaxLength() { - return Integer.MAX_VALUE - 1; - } - - @Override - public boolean isDeobfuscationForceSave() { - return false; - } - - @Override - public boolean useSourceNameAsClassAlias() { - return false; - } -} diff --git a/jadx-core/src/main/java/jadx/api/JadxArgs.java b/jadx-core/src/main/java/jadx/api/JadxArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..b09004fca04a1cbc06699a606c5ff2605dc774f7 --- /dev/null +++ b/jadx-core/src/main/java/jadx/api/JadxArgs.java @@ -0,0 +1,152 @@ +package jadx.api; + +import java.io.File; + +public class JadxArgs implements IJadxArgs { + + private File outDir = new File("jadx-output"); + private int threadsCount = Math.max(1, Runtime.getRuntime().availableProcessors() - 1); + + private boolean cfgOutput = false; + private boolean rawCFGOutput = false; + + private boolean isVerbose = false; + private boolean fallbackMode = false; + private boolean showInconsistentCode = false; + + private boolean isSkipResources = false; + private boolean isSkipSources = false; + + private boolean isDeobfuscationOn = false; + private boolean isDeobfuscationForceSave = false; + private boolean useSourceNameAsClassAlias = false; + + private int deobfuscationMinLength = 0; + private int deobfuscationMaxLength = Integer.MAX_VALUE; + + @Override + public File getOutDir() { + return outDir; + } + + public void setOutDir(File outDir) { + this.outDir = outDir; + } + + @Override + public int getThreadsCount() { + return threadsCount; + } + + public void setThreadsCount(int threadsCount) { + this.threadsCount = threadsCount; + } + + @Override + public boolean isCFGOutput() { + return cfgOutput; + } + + public void setCfgOutput(boolean cfgOutput) { + this.cfgOutput = cfgOutput; + } + + @Override + public boolean isRawCFGOutput() { + return rawCFGOutput; + } + + public void setRawCFGOutput(boolean rawCFGOutput) { + this.rawCFGOutput = rawCFGOutput; + } + + @Override + public boolean isFallbackMode() { + return fallbackMode; + } + + public void setFallbackMode(boolean fallbackMode) { + this.fallbackMode = fallbackMode; + } + + @Override + public boolean isShowInconsistentCode() { + return showInconsistentCode; + } + + public void setShowInconsistentCode(boolean showInconsistentCode) { + this.showInconsistentCode = showInconsistentCode; + } + + @Override + public boolean isVerbose() { + return isVerbose; + } + + public void setVerbose(boolean verbose) { + isVerbose = verbose; + } + + @Override + public boolean isSkipResources() { + return isSkipResources; + } + + public void setSkipResources(boolean skipResources) { + isSkipResources = skipResources; + } + + @Override + public boolean isSkipSources() { + return isSkipSources; + } + + public void setSkipSources(boolean skipSources) { + isSkipSources = skipSources; + } + + @Override + public boolean isDeobfuscationOn() { + return isDeobfuscationOn; + } + + public void setDeobfuscationOn(boolean deobfuscationOn) { + isDeobfuscationOn = deobfuscationOn; + } + + @Override + public boolean isDeobfuscationForceSave() { + return isDeobfuscationForceSave; + } + + public void setDeobfuscationForceSave(boolean deobfuscationForceSave) { + isDeobfuscationForceSave = deobfuscationForceSave; + } + + @Override + public boolean useSourceNameAsClassAlias() { + return useSourceNameAsClassAlias; + } + + public void setUseSourceNameAsClassAlias(boolean useSourceNameAsClassAlias) { + this.useSourceNameAsClassAlias = useSourceNameAsClassAlias; + } + + @Override + public int getDeobfuscationMinLength() { + return deobfuscationMinLength; + } + + public void setDeobfuscationMinLength(int deobfuscationMinLength) { + this.deobfuscationMinLength = deobfuscationMinLength; + } + + @Override + public int getDeobfuscationMaxLength() { + return deobfuscationMaxLength; + } + + public void setDeobfuscationMaxLength(int deobfuscationMaxLength) { + this.deobfuscationMaxLength = deobfuscationMaxLength; + } +} diff --git a/jadx-core/src/main/java/jadx/api/JadxDecompiler.java b/jadx-core/src/main/java/jadx/api/JadxDecompiler.java index 9d8399ad2065ff0d70acd7b33a41bb4884bf153b..6a404b601588b58df05c8d534d479294c79ccb7b 100644 --- a/jadx-core/src/main/java/jadx/api/JadxDecompiler.java +++ b/jadx-core/src/main/java/jadx/api/JadxDecompiler.java @@ -69,7 +69,7 @@ public final class JadxDecompiler { private Map fieldsMap = new HashMap(); public JadxDecompiler() { - this(new DefaultJadxArgs()); + this(new JadxArgs()); } public JadxDecompiler(IJadxArgs jadxArgs) { @@ -86,7 +86,7 @@ public final class JadxDecompiler { void init() { if (outDir == null) { - outDir = new DefaultJadxArgs().getOutDir(); + outDir = new JadxArgs().getOutDir(); } this.passes = Jadx.getPassesList(args, outDir); this.codeGen = new CodeGen(args); diff --git a/jadx-core/src/main/java/jadx/core/clsp/ConvertToClsSet.java b/jadx-core/src/main/java/jadx/core/clsp/ConvertToClsSet.java index f497d4b73678db8f7714acd968c6bcdc8d01363d..48df74fa7c4672bd1d8e5844a22a51a348713cfe 100644 --- a/jadx-core/src/main/java/jadx/core/clsp/ConvertToClsSet.java +++ b/jadx-core/src/main/java/jadx/core/clsp/ConvertToClsSet.java @@ -1,6 +1,6 @@ package jadx.core.clsp; -import jadx.api.DefaultJadxArgs; +import jadx.api.JadxArgs; import jadx.core.dex.nodes.RootNode; import jadx.core.utils.exceptions.DecodeException; import jadx.core.utils.files.InputFile; @@ -43,7 +43,7 @@ public class ConvertToClsSet { LOG.info("Loaded: {}", inputFile.getFile()); } - RootNode root = new RootNode(new DefaultJadxArgs()); + RootNode root = new RootNode(new JadxArgs()); root.load(inputFiles); ClsSet set = new ClsSet(); diff --git a/jadx-core/src/test/java/jadx/tests/api/IntegrationTest.java b/jadx-core/src/test/java/jadx/tests/api/IntegrationTest.java index 969950dfaabfa45c5ff6690a469978ab277eb0d9..c9a5321a09d83a286dc85465880c753b11a96afb 100644 --- a/jadx-core/src/test/java/jadx/tests/api/IntegrationTest.java +++ b/jadx-core/src/test/java/jadx/tests/api/IntegrationTest.java @@ -1,6 +1,7 @@ package jadx.tests.api; -import jadx.api.DefaultJadxArgs; +import jadx.api.IJadxArgs; +import jadx.api.JadxArgs; import jadx.api.JadxDecompiler; import jadx.api.JadxInternalAccess; import jadx.core.Jadx; @@ -135,38 +136,15 @@ public abstract class IntegrationTest extends TestUtils { assertThat(cls.getCode().toString(), not(containsString("inconsistent"))); } - private DefaultJadxArgs getArgs() { - return new DefaultJadxArgs() { - @Override - public boolean isCFGOutput() { - return outputCFG; - } - - @Override - public boolean isRawCFGOutput() { - return outputCFG; - } - - @Override - public boolean isFallbackMode() { - return isFallback; - } - - @Override - public boolean isShowInconsistentCode() { - return true; - } - - @Override - public int getThreadsCount() { - return 1; - } - - @Override - public boolean isSkipResources() { - return true; - } - }; + private IJadxArgs getArgs() { + JadxArgs args = new JadxArgs(); + args.setCfgOutput(outputCFG); + args.setRawCFGOutput(outputCFG); + args.setFallbackMode(isFallback); + args.setShowInconsistentCode(true); + args.setThreadsCount(1); + args.setSkipResources(true); + return args; } private void runAutoCheck(String clsName) { diff --git a/jadx-core/src/test/java/jadx/tests/functional/JadxVisitorsOrderTest.java b/jadx-core/src/test/java/jadx/tests/functional/JadxVisitorsOrderTest.java index 90e1cf3f94ce432b335626b422b88c7b1b684cd6..7cc92d17d09904b8342dcee15f372aa3d7717ee7 100644 --- a/jadx-core/src/test/java/jadx/tests/functional/JadxVisitorsOrderTest.java +++ b/jadx-core/src/test/java/jadx/tests/functional/JadxVisitorsOrderTest.java @@ -1,6 +1,6 @@ package jadx.tests.functional; -import jadx.api.DefaultJadxArgs; +import jadx.api.JadxArgs; import jadx.core.Jadx; import jadx.core.dex.visitors.IDexTreeVisitor; import jadx.core.dex.visitors.JadxVisitor; @@ -24,7 +24,7 @@ public class JadxVisitorsOrderTest { @Test public void testOrder() { - List passes = Jadx.getPassesList(new DefaultJadxArgs(), new File("out")); + List passes = Jadx.getPassesList(new JadxArgs(), new File("out")); List errors = check(passes); for (String str : errors) {