diff --git a/jadx-cli/src/main/java/jadx/cli/JadxCLIArgs.java b/jadx-cli/src/main/java/jadx/cli/JadxCLIArgs.java index 7381cf0760b2a2cbc49953b14cb03d7d64395ed6..25eaed00b45b5cca24758309c30f84f220f8095e 100644 --- a/jadx-cli/src/main/java/jadx/cli/JadxCLIArgs.java +++ b/jadx-cli/src/main/java/jadx/cli/JadxCLIArgs.java @@ -64,7 +64,7 @@ public class JadxCLIArgs { protected boolean deobfuscationOn = false; @Parameter(names = {"--deobf-min"}, description = "min length of name, renamed if shorter") - protected int deobfuscationMinLength = 2; + protected int deobfuscationMinLength = 4; @Parameter(names = {"--deobf-max"}, description = "max length of name, renamed if longer") protected int deobfuscationMaxLength = 64; @@ -73,7 +73,7 @@ public class JadxCLIArgs { protected boolean deobfuscationForceSave = false; @Parameter(names = {"--deobf-use-sourcename"}, description = "use source file name as class name alias") - protected boolean deobfuscationUseSourceNameAsAlias = false; + protected boolean deobfuscationUseSourceNameAsAlias = true; @Parameter(names = {"--cfg"}, description = "save methods control flow graph to dot file") protected boolean cfgOutput = false; diff --git a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java index 716d09347f00f4d2f54f5a5b03ec256f0219ecf4..8711e1f6d097688c97262ca5fae265746a99ac4a 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java @@ -10,21 +10,24 @@ import java.util.Map; import java.util.Set; import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import jadx.api.JadxArgs; import jadx.cli.JadxCLIArgs; public class JadxSettings extends JadxCLIArgs { + private static final Logger LOG = LoggerFactory.getLogger(JadxSettings.class); private static final String USER_HOME = System.getProperty("user.home"); private static final int RECENT_FILES_COUNT = 15; + private static final int CURRENT_SETTINGS_VERSION = 1; private static final Font DEFAULT_FONT = new RSyntaxTextArea().getFont(); static final Set SKIP_FIELDS = new HashSet<>(Arrays.asList( "files", "input", "outputDir", "verbose", "printHelp" )); - private String lastOpenFilePath = USER_HOME; private String lastSaveFilePath = USER_HOME; private boolean flattenPackage = false; @@ -33,10 +36,11 @@ public class JadxSettings extends JadxCLIArgs { private String fontStr = ""; private boolean autoStartJobs = false; + private int settingsVersion = 0; + private Map windowPos = new HashMap<>(); public JadxSettings() { - setSkipResources(true); } public void sync() { @@ -47,6 +51,9 @@ public class JadxSettings extends JadxCLIArgs { if (threadsCount <= 0) { threadsCount = JadxArgs.DEFAULT_THREADS_COUNT; } + if (settingsVersion != CURRENT_SETTINGS_VERSION) { + upgradeSettings(settingsVersion); + } } public String getLastOpenFilePath() { @@ -213,4 +220,20 @@ public class JadxSettings extends JadxCLIArgs { return ""; } } + + private void upgradeSettings(int fromVersion) { + LOG.debug("upgrade settings from version: {} to {}", fromVersion, CURRENT_SETTINGS_VERSION); + if (fromVersion == 0) { + setDeobfuscationMinLength(4); + setDeobfuscationUseSourceNameAsAlias(true); + setDeobfuscationForceSave(true); + setThreadsCount(1); + setReplaceConsts(true); + setSkipResources(false); + setAutoStartJobs(false); +// fromVersion++; + } + settingsVersion = CURRENT_SETTINGS_VERSION; + sync(); + } } diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JLoadableNode.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JLoadableNode.java index b9aebdb29b8af3c9c85b51aae9b9e8253be52975..eccc12231df3e539089bee5fa0ee98d8f5d84362 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JLoadableNode.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JLoadableNode.java @@ -1,5 +1,7 @@ package jadx.gui.treemodel; public abstract class JLoadableNode extends JNode { + private static final long serialVersionUID = 5543590584166374958L; + public abstract void loadNode(); }