From 7330fdcafd6029e848060a3094913301e006c496 Mon Sep 17 00:00:00 2001 From: SuspiciousActivity <38253929+SuspiciousActivity@users.noreply.github.com> Date: Wed, 25 Apr 2018 20:13:43 +0200 Subject: [PATCH] Changed Access View to HEX for innerclasses --- src/me/ByteEdit/main/Assembler.java | 101 +++++++++++++------------ src/me/ByteEdit/main/ClassUtil.java | 23 +++++- src/me/ByteEdit/main/Disassembler.java | 3 +- 3 files changed, 77 insertions(+), 50 deletions(-) diff --git a/src/me/ByteEdit/main/Assembler.java b/src/me/ByteEdit/main/Assembler.java index 0b8ef57..5908828 100644 --- a/src/me/ByteEdit/main/Assembler.java +++ b/src/me/ByteEdit/main/Assembler.java @@ -3,6 +3,7 @@ package me.ByteEdit.main; import java.awt.Color; import java.io.StringReader; import java.lang.reflect.Constructor; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -70,7 +71,7 @@ public class Assembler { } else { String split[] = s.split(" "); clazz.innerClasses.add(new InnerClassNode(split[1], split[2].equals("null") ? null : split[2], - split[3].equals("null") ? null : split[3], Integer.parseInt(split[4]))); + split[3].equals("null") ? null : split[3], Integer.parseInt(split[4].substring(2), 16))); } } @@ -345,53 +346,57 @@ public class Assembler { int access = 0; if (split.length > 2) { String cons = consolidateStrings(split, 0, split.length - 2); - if (cons.contains("public")) { - access ^= ClassUtil.ACC_PUBLIC; - } - if (cons.contains("private")) { - access ^= ClassUtil.ACC_PRIVATE; - } - if (cons.contains("protected")) { - access ^= ClassUtil.ACC_PROTECTED; - } - if (cons.contains("static")) { - access ^= ClassUtil.ACC_STATIC; - } - if (cons.contains("final")) { - access ^= ClassUtil.ACC_FINAL; - } - if (cons.contains("synchronized")) { - access ^= ClassUtil.ACC_SYNCHRONIZED; - } - if (cons.contains("bridge")) { - access ^= ClassUtil.ACC_BRIDGE; - } - if (cons.contains("varargs")) { - access ^= ClassUtil.ACC_VARARGS; - } - if (cons.contains("native")) { - access ^= ClassUtil.ACC_NATIVE; - } - if (cons.contains("interface")) { - access ^= ClassUtil.ACC_INTERFACE; - } - if (cons.contains("abstract")) { - access ^= ClassUtil.ACC_ABSTRACT; - } - if (cons.contains("strictfp")) { - access ^= ClassUtil.ACC_STRICTFP; - } - if (cons.contains("synthetic")) { - access ^= ClassUtil.ACC_SYNTHETIC; - } - if (cons.contains("annotation")) { - access ^= ClassUtil.ACC_ANNOTATION; - } - if (cons.contains("enum")) { - access ^= ClassUtil.ACC_ENUM; - } - if (cons.contains("mandated")) { - access ^= ClassUtil.ACC_MANDATED; + if (cons.startsWith("0x")) { + access = Integer.parseInt(cons.substring(2), 16); + } else { + if (cons.contains("public")) { + access ^= ClassUtil.ACC_PUBLIC; + } + if (cons.contains("private")) { + access ^= ClassUtil.ACC_PRIVATE; + } + if (cons.contains("protected")) { + access ^= ClassUtil.ACC_PROTECTED; + } + if (cons.contains("static")) { + access ^= ClassUtil.ACC_STATIC; + } + if (cons.contains("final")) { + access ^= ClassUtil.ACC_FINAL; + } + if (cons.contains("synchronized")) { + access ^= ClassUtil.ACC_SYNCHRONIZED; + } + if (cons.contains("bridge")) { + access ^= ClassUtil.ACC_BRIDGE; + } + if (cons.contains("varargs")) { + access ^= ClassUtil.ACC_VARARGS; + } + if (cons.contains("native")) { + access ^= ClassUtil.ACC_NATIVE; + } + if (cons.contains("interface")) { + access ^= ClassUtil.ACC_INTERFACE; + } + if (cons.contains("abstract")) { + access ^= ClassUtil.ACC_ABSTRACT; + } + if (cons.contains("strictfp")) { + access ^= ClassUtil.ACC_STRICTFP; + } + if (cons.contains("synthetic")) { + access ^= ClassUtil.ACC_SYNTHETIC; + } + if (cons.contains("annotation")) { + access ^= ClassUtil.ACC_ANNOTATION; + } + if (cons.contains("enum")) { + access ^= ClassUtil.ACC_ENUM; + } + if (cons.contains("mandated")) { + access ^= ClassUtil.ACC_MANDATED; + } } } node.access = access; diff --git a/src/me/ByteEdit/main/ClassUtil.java b/src/me/ByteEdit/main/ClassUtil.java index 4998077..134c4ff 100644 --- a/src/me/ByteEdit/main/ClassUtil.java +++ b/src/me/ByteEdit/main/ClassUtil.java @@ -54,56 +54,77 @@ public class ClassUtil { } public static String getAccessFlagsFull(int access) { + int acc = 0; String s = ""; if ((ACC_PUBLIC & access) != 0) { s += "public "; + acc ^= ACC_PUBLIC; } if ((ACC_PRIVATE & access) != 0) { s += "private "; + acc ^= ACC_PRIVATE; } if ((ACC_PROTECTED & access) != 0) { s += "protected "; + acc ^= ACC_PROTECTED; } if ((ACC_STATIC & access) != 0) { s += "static "; + acc ^= ACC_STATIC; } if ((ACC_FINAL & access) != 0) { s += "final "; + acc ^= ACC_FINAL; } if ((ACC_SYNCHRONIZED & access) != 0) { s += "synchronized "; + acc ^= ACC_SYNCHRONIZED; } if ((ACC_VARARGS & access) != 0) { s += "varargs "; + acc ^= ACC_VARARGS; } if ((ACC_NATIVE & access) != 0) { s += "native "; + acc ^= ACC_NATIVE; } if ((ACC_INTERFACE & access) != 0) { s += "interface "; + acc ^= ACC_INTERFACE; } if ((ACC_ABSTRACT & access) != 0) { s += "abstract "; + acc ^= ACC_ABSTRACT; } if ((ACC_STRICTFP & access) != 0) { s += "strictfp "; + acc ^= ACC_STRICTFP; } if ((ACC_SYNTHETIC & access) != 0) { s += "synthetic "; + acc ^= ACC_SYNTHETIC; } if ((ACC_BRIDGE & access) != 0) { s += "bridge "; + acc ^= ACC_BRIDGE; } if ((ACC_ANNOTATION & access) != 0) { s += "annotation "; + acc ^= ACC_ANNOTATION; } if ((ACC_ENUM & access) != 0) { s += "enum "; + acc ^= ACC_ENUM; } if ((ACC_MANDATED & access) != 0) { s += "mandated "; + acc ^= ACC_MANDATED; + } + if (acc == access) { + return s; + } else { + return "0x" + Integer.toHexString(access) + " "; } - return s; } /** diff --git a/src/me/ByteEdit/main/Disassembler.java b/src/me/ByteEdit/main/Disassembler.java index bad9f62..c4ca3ab 100644 --- a/src/me/ByteEdit/main/Disassembler.java +++ b/src/me/ByteEdit/main/Disassembler.java @@ -104,7 +104,8 @@ public class Disassembler { s += "// #InnerClasses:\n"; if (classNode.innerClasses != null) { for (InnerClassNode icn : classNode.innerClasses) { - s += "// " + icn.name + " " + icn.outerName + " " + icn.innerName + " " + icn.access + "\n"; + s += "// " + icn.name + " " + icn.outerName + " " + icn.innerName + " 0x" + + Integer.toHexString(icn.access) + "\n"; } } s += ClassUtil.getAccessFlagsClass(classNode.access) + classNode.name + " ";