mirror of
https://github.com/SuspiciousActivity/ByteEdit.git
synced 2026-08-13 17:56:17 +00:00
Removed ".class" from internal classNodes map
This commit is contained in:
1 parent
b86e8658e2
commit
a9612c058c
9 files changed
+26
-36
No files matched your search
@@ -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
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user