Removed ".class" from internal classNodes map

This commit is contained in:
SuspiciousActivity committed 2021-03-12 23:29:47 +01:00
1 parent b86e8658e2
commit a9612c058c
9 files changed
+26 -36

No files matched your search

+2 -2
View File
@@ -130,7 +130,7 @@ public class CompilationBox extends JFrame {
synchronized (Main.classNodes) { synchronized (Main.classNodes) {
classNodes = new HashMap<>(Main.classNodes); classNodes = new HashMap<>(Main.classNodes);
} }
classNodes.put("Compiled.class", node); classNodes.put("Compiled", node);
File[] files = tmpFolder.listFiles(); File[] files = tmpFolder.listFiles();
if (files != null) if (files != null)
for (File f : files) { for (File f : files) {
@@ -145,7 +145,7 @@ public class CompilationBox extends JFrame {
read = new ClassReader(baos.toByteArray()); read = new ClassReader(baos.toByteArray());
node = new ClassNode(); node = new ClassNode();
read.accept(node, 0); read.accept(node, 0);
classNodes.put(f.getName(), node); classNodes.put(node.name, node);
} }
compSuccess.textArea compSuccess.textArea
.setText(decompiler.getDecompiler().decompile(mainNode, classNodes)); .setText(decompiler.getDecompiler().decompile(mainNode, classNodes));
@@ -40,7 +40,7 @@ public class GlobalSearchOpenBox extends JFrame {
SingleThreadedExecutor.submit(() -> { SingleThreadedExecutor.submit(() -> {
Info val = list.getSelectedValue(); Info val = list.getSelectedValue();
if (val != null && !val.owner.equals(Main.currentNodeName)) { if (val != null && !val.owner.equals(Main.currentNodeName)) {
Main.selectFile(val.nodePath); Main.selectFile(val.owner);
} }
}); });
} }
@@ -59,14 +59,12 @@ public class GlobalSearchOpenBox extends JFrame {
String name; String name;
String desc; String desc;
MethodNode mn; MethodNode mn;
String nodePath;
public Info(String owner, String name, String desc, MethodNode mn) { public Info(String owner, String name, String desc, MethodNode mn) {
this.owner = owner; this.owner = owner;
this.name = name; this.name = name;
this.desc = desc; this.desc = desc;
this.mn = mn; this.mn = mn;
nodePath = Main.getFullName(owner);
} }
@Override @Override
+3 -3
View File
@@ -79,7 +79,7 @@ public class RenameBox extends JFrame {
JOptionPane.showMessageDialog(null, "Desc not set!", "Error!", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(null, "Desc not set!", "Error!", JOptionPane.ERROR_MESSAGE);
return; return;
} }
ClassNode clazz = Main.classNodes.get(Main.getFullName(className)); ClassNode clazz = Main.classNodes.get(className);
if (clazz == null) { if (clazz == null) {
JOptionPane.showMessageDialog(null, "ClassNode not found!", "Error!", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(null, "ClassNode not found!", "Error!", JOptionPane.ERROR_MESSAGE);
return; return;
@@ -94,7 +94,7 @@ public class RenameBox extends JFrame {
if (newDesc.startsWith("(")) { // method if (newDesc.startsWith("(")) { // method
ClassNode lastHit = clazz; ClassNode lastHit = clazz;
while (clazz != null && clazz.superName != null) { while (clazz != null && clazz.superName != null) {
ClassNode tmp = Main.classNodes.get(Main.getFullName(clazz.superName)); ClassNode tmp = Main.classNodes.get(clazz.superName);
if (tmp != null) { if (tmp != null) {
boolean found = false; boolean found = false;
for (MethodNode mn : clazz.methods) { for (MethodNode mn : clazz.methods) {
@@ -127,7 +127,7 @@ public class RenameBox extends JFrame {
extendsMyClass = true; extendsMyClass = true;
break; break;
} }
ClassNode tmp = Main.classNodes.get(Main.getFullName(checkCN.superName)); ClassNode tmp = Main.classNodes.get(checkCN.superName);
if (tmp != null) { if (tmp != null) {
checkCN = tmp; checkCN = tmp;
} else { } else {
+6 -8
View File
@@ -79,19 +79,17 @@ public class TypeOpenBox extends JFrame {
} }
String search = UnicodeUtils.unescape(null, txtSearch.getText(), true).toLowerCase(); String search = UnicodeUtils.unescape(null, txtSearch.getText(), true).toLowerCase();
if (search.contains("/")) { if (search.contains("/")) {
for (String s : Main.classNodes.keySet()) { for (String className : Main.classNodes.keySet()) {
String className = s.substring(0, s.length() - 6);
if (!className.contains("$") && className.toLowerCase().startsWith(search)) { if (!className.contains("$") && className.toLowerCase().startsWith(search)) {
model.addElement(s); model.addElement(className);
} }
} }
} else { } else {
for (String s : Main.classNodes.keySet()) { for (String className : Main.classNodes.keySet()) {
String[] split = s.split("/"); String[] split = className.split("/");
String className = split[split.length - 1]; className = split[split.length - 1];
className = className.substring(0, className.length() - 6);
if (!className.contains("$") && className.toLowerCase().startsWith(search)) { if (!className.contains("$") && className.toLowerCase().startsWith(search)) {
model.addElement(s); model.addElement(className);
} }
} }
} }
@@ -110,7 +110,7 @@ public class CFRDecompiler implements IDecompiler {
// try loading other classes from jar // try loading other classes from jar
ClassNode node; ClassNode node;
synchronized (classNodes) { synchronized (classNodes) {
node = classNodes.get(name + ".class"); node = classNodes.get(name);
} }
if (node != null) if (node != null)
return Pair.make(IDecompiler.getBytes(node), name); return Pair.make(IDecompiler.getBytes(node), name);
+2 -2
View File
@@ -42,7 +42,7 @@ public class JDDecompiler implements Loader, Printer, IDecompiler {
@Override @Override
public boolean canLoad(String internalName) { public boolean canLoad(String internalName) {
synchronized (classNodes) { synchronized (classNodes) {
return classNodes.containsKey(internalName + ".class"); return classNodes.containsKey(internalName);
} }
} }
@@ -50,7 +50,7 @@ public class JDDecompiler implements Loader, Printer, IDecompiler {
public byte[] load(String internalName) throws LoaderException { public byte[] load(String internalName) throws LoaderException {
ClassNode node; ClassNode node;
synchronized (classNodes) { synchronized (classNodes) {
node = classNodes.get(internalName + ".class"); node = classNodes.get(internalName);
} }
if (node != null) if (node != null)
return IDecompiler.getBytes(node); return IDecompiler.getBytes(node);
@@ -51,7 +51,7 @@ public class ProcyonDecompiler implements IDecompiler {
} }
ClassNode node; ClassNode node;
synchronized (classNodes) { synchronized (classNodes) {
node = classNodes.get(s + ".class"); node = classNodes.get(s);
} }
if (node != null) { if (node != null) {
byte[] data = IDecompiler.getBytes(node); byte[] data = IDecompiler.getBytes(node);
+2 -2
View File
@@ -61,7 +61,7 @@ public class ArchiveTreeModel extends DefaultTreeModel {
ClassReader reader = new ClassReader(data); ClassReader reader = new ClassReader(data);
ClassNode node = new ClassNode(); ClassNode node = new ClassNode();
reader.accept(node, 0); reader.accept(node, 0);
classNodes.put(Main.getFullName(node.name), node); classNodes.put(node.name, node);
if ((next.getName().contains("/") if ((next.getName().contains("/")
? (!Main.patternSlash ? (!Main.patternSlash
@@ -70,7 +70,7 @@ public class ArchiveTreeModel extends DefaultTreeModel {
: (!next.getName().contains("$"))) : (!next.getName().contains("$")))
|| (next.getName().startsWith("$") || next.getName().contains("$$") || (next.getName().startsWith("$") || next.getName().contains("$$")
|| next.getName().endsWith("$"))) { || next.getName().endsWith("$"))) {
paths.add(Main.getFullName(node.name)); paths.add(node.name + ".class");
} }
} catch (Exception e) { } catch (Exception e) {
otherFiles.put(next.getName(), data); otherFiles.put(next.getName(), data);
+8 -14
View File
@@ -483,12 +483,11 @@ public class Main extends JFrame {
String s = ((ByteEditTreeNode) tree.getSelectionPath().getLastPathComponent()).path; String s = ((ByteEditTreeNode) tree.getSelectionPath().getLastPathComponent()).path;
if (JOptionPane.showConfirmDialog(INSTANCE, "Do you want to delete\n\"" + s + "\"?", "Delete", if (JOptionPane.showConfirmDialog(INSTANCE, "Do you want to delete\n\"" + s + "\"?", "Delete",
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
String substr = s.substring(0, s.length() - 6);
ArrayList<String> toRemove = new ArrayList<>(); ArrayList<String> toRemove = new ArrayList<>();
for (String key : Main.classNodes.keySet()) { for (String key : Main.classNodes.keySet()) {
if (key.contains("$")) { if (key.contains("$")) {
String[] split = key.split("\\$"); String[] split = key.split("\\$");
if (split[0].equals(substr)) { if (split[0].equals(s)) {
toRemove.add(key); toRemove.add(key);
} }
} }
@@ -757,15 +756,15 @@ public class Main extends JFrame {
if (node == null) { if (node == null) {
continue; continue;
} }
if (classNodes.replace(getFullName(node.name), node) == null) { if (classNodes.replace(node.name, node) == null) {
classNodes.put(getFullName(node.name), node); classNodes.put(node.name, node);
ArchiveTreeModel model; ArchiveTreeModel model;
if (tree.getModel().getClass().equals(DefaultTreeModel.class)) { if (tree.getModel().getClass().equals(DefaultTreeModel.class)) {
tree.setModel(model = new ArchiveTreeModel(classNodes, otherFiles)); tree.setModel(model = new ArchiveTreeModel(classNodes, otherFiles));
} else { } else {
model = (ArchiveTreeModel) tree.getModel(); model = (ArchiveTreeModel) tree.getModel();
} }
String name = getFullName(node.name); String name = node.name + ".class";
if (name.contains("/") ? (!name.split("/")[name.split("/").length - 1].contains("$")) if (name.contains("/") ? (!name.split("/")[name.split("/").length - 1].contains("$"))
: (!name.contains("$"))) { : (!name.contains("$"))) {
model.paths.add(name); model.paths.add(name);
@@ -801,6 +800,7 @@ public class Main extends JFrame {
public static void selectFile(String s) { public static void selectFile(String s) {
if (s != null && s.endsWith(".class")) { if (s != null && s.endsWith(".class")) {
s = s.substring(0, s.length() - 6);
currentNodeName = s; currentNodeName = s;
decompileCurrentNode(); decompileCurrentNode();
txtByteEditView.setCaretPosition(0); txtByteEditView.setCaretPosition(0);
@@ -855,10 +855,8 @@ public class Main extends JFrame {
try { try {
EventQueue.invokeAndWait(new Runnable() { EventQueue.invokeAndWait(new Runnable() {
public void run() { public void run() {
synchronized (treeLock) { isChangingFile = false;
isChangingFile = false; Main.this.setTitle("ByteEdit");
Main.this.setTitle("ByteEdit");
}
} }
}); });
} catch (Exception e) { } catch (Exception e) {
@@ -917,7 +915,7 @@ public class Main extends JFrame {
for (ClassNode node : classes) { for (ClassNode node : classes) {
ClassWriter writer = new ClassWriter(computeFlags); ClassWriter writer = new ClassWriter(computeFlags);
node.accept(writer); node.accept(writer);
output.putNextEntry(new ZipEntry(getFullName(node.name))); output.putNextEntry(new ZipEntry(node.name + ".class"));
output.write(writer.toByteArray()); output.write(writer.toByteArray());
output.closeEntry(); output.closeEntry();
} }
@@ -943,8 +941,4 @@ public class Main extends JFrame {
public static void showError(String s) { public static void showError(String s) {
JOptionPane.showMessageDialog(INSTANCE, s, "Error!", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(INSTANCE, s, "Error!", JOptionPane.ERROR_MESSAGE);
} }
public static String getFullName(String s) {
return s + ".class";
}
} }