Merge branch 'master' into rename
This commit is contained in:
@@ -279,6 +279,10 @@ public class JadxSettings extends JadxCLIArgs {
|
||||
this.deobfuscationUseSourceNameAsAlias = deobfuscationUseSourceNameAsAlias;
|
||||
}
|
||||
|
||||
public void setDeobfuscationParseKotlinMetadata(boolean deobfuscationParseKotlinMetadata) {
|
||||
this.deobfuscationParseKotlinMetadata = deobfuscationParseKotlinMetadata;
|
||||
}
|
||||
|
||||
public void updateRenameFlag(JadxArgs.RenameEnum flag, boolean enabled) {
|
||||
if (enabled) {
|
||||
renameFlags.add(flag);
|
||||
@@ -387,6 +391,7 @@ public class JadxSettings extends JadxCLIArgs {
|
||||
if (fromVersion == 0) {
|
||||
setDeobfuscationMinLength(3);
|
||||
setDeobfuscationUseSourceNameAsAlias(true);
|
||||
setDeobfuscationParseKotlinMetadata(true);
|
||||
setDeobfuscationForceSave(true);
|
||||
setThreadsCount(1);
|
||||
setReplaceConsts(true);
|
||||
|
||||
@@ -167,15 +167,24 @@ public class JadxSettingsWindow extends JDialog {
|
||||
needReload();
|
||||
});
|
||||
|
||||
JCheckBox deobfKotlinMetadata = new JCheckBox();
|
||||
deobfKotlinMetadata.setSelected(settings.isDeobfuscationParseKotlinMetadata());
|
||||
deobfKotlinMetadata.addItemListener(e -> {
|
||||
settings.setDeobfuscationParseKotlinMetadata(e.getStateChange() == ItemEvent.SELECTED);
|
||||
needReload();
|
||||
});
|
||||
|
||||
SettingsGroup deobfGroup = new SettingsGroup(NLS.str("preferences.deobfuscation"));
|
||||
deobfGroup.addRow(NLS.str("preferences.deobfuscation_on"), deobfOn);
|
||||
deobfGroup.addRow(NLS.str("preferences.deobfuscation_force"), deobfForce);
|
||||
deobfGroup.addRow(NLS.str("preferences.deobfuscation_min_len"), minLenSpinner);
|
||||
deobfGroup.addRow(NLS.str("preferences.deobfuscation_max_len"), maxLenSpinner);
|
||||
deobfGroup.addRow(NLS.str("preferences.deobfuscation_source_alias"), deobfSourceAlias);
|
||||
deobfGroup.addRow(NLS.str("preferences.deobfuscation_kotlin_metadata"), deobfKotlinMetadata);
|
||||
deobfGroup.end();
|
||||
|
||||
Collection<JComponent> connectedComponents = Arrays.asList(deobfForce, minLenSpinner, maxLenSpinner, deobfSourceAlias);
|
||||
Collection<JComponent> connectedComponents =
|
||||
Arrays.asList(deobfForce, minLenSpinner, maxLenSpinner, deobfSourceAlias, deobfKotlinMetadata);
|
||||
deobfOn.addItemListener(e -> enableComponentList(connectedComponents, e.getStateChange() == ItemEvent.SELECTED));
|
||||
enableComponentList(connectedComponents, settings.isDeobfuscationOn());
|
||||
return deobfGroup;
|
||||
|
||||
@@ -17,11 +17,14 @@ import jadx.api.ResourceFileContent;
|
||||
import jadx.api.ResourceType;
|
||||
import jadx.api.ResourcesLoader;
|
||||
import jadx.api.impl.SimpleCodeInfo;
|
||||
import jadx.core.utils.Utils;
|
||||
import jadx.core.xmlgen.ResContainer;
|
||||
import jadx.gui.utils.NLS;
|
||||
import jadx.gui.utils.OverlayIcon;
|
||||
import jadx.gui.utils.UiUtils;
|
||||
|
||||
import static jadx.core.codegen.CodeWriter.NL;
|
||||
|
||||
public class JResource extends JLoadableNode implements Comparable<JResource> {
|
||||
private static final long serialVersionUID = -201018424302612434L;
|
||||
|
||||
@@ -151,7 +154,7 @@ public class JResource extends JLoadableNode implements Comparable<JResource> {
|
||||
return ResourcesLoader.loadToCodeWriter(is);
|
||||
});
|
||||
} catch (Exception e) {
|
||||
return new SimpleCodeInfo("Failed to load resource file: \n" + jadx.core.utils.Utils.getStackTrace(e));
|
||||
return new SimpleCodeInfo("Failed to load resource file:" + NL + Utils.getStackTrace(e));
|
||||
}
|
||||
|
||||
case DECODED_DATA:
|
||||
|
||||
@@ -18,6 +18,8 @@ import jadx.core.xmlgen.ResContainer;
|
||||
import jadx.gui.treemodel.JResource;
|
||||
import jadx.gui.ui.codearea.AbstractCodeArea;
|
||||
|
||||
import static jadx.core.codegen.CodeWriter.NL;
|
||||
|
||||
public class ImagePanel extends ContentPanel {
|
||||
private static final long serialVersionUID = 4071356367073142688L;
|
||||
|
||||
@@ -30,7 +32,7 @@ public class ImagePanel extends ContentPanel {
|
||||
add(imageViewer.getComponent());
|
||||
} catch (Exception e) {
|
||||
RSyntaxTextArea textArea = AbstractCodeArea.getDefaultArea(panel.getMainWindow());
|
||||
textArea.setText("Image load error: \n" + Utils.getStackTrace(e));
|
||||
textArea.setText("Image load error:" + NL + Utils.getStackTrace(e));
|
||||
add(textArea);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@ import java.util.Set;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
import jadx.gui.utils.CodeUsageInfo;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -41,6 +40,7 @@ import jadx.gui.ui.codearea.ClassCodeContentPanel;
|
||||
import jadx.gui.ui.codearea.CodeArea;
|
||||
import jadx.gui.ui.codearea.CodePanel;
|
||||
import jadx.gui.utils.CacheObject;
|
||||
import jadx.gui.utils.CodeUsageInfo;
|
||||
import jadx.gui.utils.NLS;
|
||||
import jadx.gui.utils.TextStandardActions;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package jadx.gui.utils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import jadx.api.JavaClass;
|
||||
import jadx.api.JavaField;
|
||||
@@ -15,7 +15,7 @@ import jadx.gui.treemodel.JNode;
|
||||
|
||||
public class JNodeCache {
|
||||
|
||||
private final Map<JavaNode, JNode> cache = new HashMap<>();
|
||||
private final Map<JavaNode, JNode> cache = new ConcurrentHashMap<>();
|
||||
|
||||
public JNode makeFrom(JavaNode javaNode) {
|
||||
if (javaNode == null) {
|
||||
|
||||
@@ -118,6 +118,7 @@ preferences.deobfuscation_force=Deobfuscationskartendatei umschreiben erzwingen
|
||||
preferences.deobfuscation_min_len=Minimale Namenlänge
|
||||
preferences.deobfuscation_max_len=Maximale Namenlänge
|
||||
preferences.deobfuscation_source_alias=Quelldateiname als Klassennamen-Alias verwenden
|
||||
preferences.deobfuscation_kotlin_metadata=Analysieren Sie Kotlin-Metadaten nach Klassen- und Paketnamen
|
||||
preferences.save=Speichern
|
||||
preferences.cancel=Abbrechen
|
||||
preferences.reset=Zurücksetzen
|
||||
|
||||
@@ -118,6 +118,7 @@ preferences.deobfuscation_force=Force rewrite deobfuscation map file
|
||||
preferences.deobfuscation_min_len=Minimum name length
|
||||
preferences.deobfuscation_max_len=Maximum name length
|
||||
preferences.deobfuscation_source_alias=Use source file name as class name alias
|
||||
preferences.deobfuscation_kotlin_metadata=Parse Kotlin metadata for class and package names
|
||||
preferences.save=Save
|
||||
preferences.cancel=Cancel
|
||||
preferences.reset=Reset
|
||||
|
||||
@@ -118,6 +118,7 @@ preferences.deobfuscation_force=Forzar reescritura del fichero de ofuscación
|
||||
preferences.deobfuscation_min_len=Longitud mínima del nombre
|
||||
preferences.deobfuscation_max_len=Longitud máxima del nombre
|
||||
preferences.deobfuscation_source_alias=Usar el nombre del source como alias para la clase
|
||||
preferences.deobfuscation_kotlin_metadata=Parse Kotlin metadatos para nombres de clase y paquete
|
||||
preferences.save=Guardar
|
||||
preferences.cancel=Cancelar
|
||||
preferences.reset=Reestablecer
|
||||
|
||||
@@ -118,6 +118,7 @@ preferences.deobfuscation_force=强制覆盖反混淆映射文件
|
||||
preferences.deobfuscation_min_len=最小命名长度
|
||||
preferences.deobfuscation_max_len=最大命名长度
|
||||
preferences.deobfuscation_source_alias=使用资源名作为类的别名
|
||||
preferences.deobfuscation_kotlin_metadata=解析Kotlin元数据以获得类和包名
|
||||
preferences.save=保存
|
||||
preferences.cancel=取消
|
||||
preferences.reset=重置
|
||||
|
||||
Reference in New Issue
Block a user