summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/cuchaz/enigma/Constants.java1
-rw-r--r--src/main/java/cuchaz/enigma/Deobfuscator.java2
-rw-r--r--src/main/java/cuchaz/enigma/TranslatingTypeLoader.java8
-rw-r--r--src/main/java/cuchaz/enigma/analysis/JarIndex.java12
-rw-r--r--src/main/java/cuchaz/enigma/convert/ClassIdentity.java2
-rw-r--r--src/main/java/cuchaz/enigma/convert/MappingsConverter.java2
-rw-r--r--src/main/java/cuchaz/enigma/gui/Gui.java8
-rw-r--r--src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java5
-rw-r--r--src/main/java/cuchaz/enigma/mapping/MappingsSRGWriter.java12
9 files changed, 16 insertions, 36 deletions
diff --git a/src/main/java/cuchaz/enigma/Constants.java b/src/main/java/cuchaz/enigma/Constants.java
index 5bdb3af7..04730480 100644
--- a/src/main/java/cuchaz/enigma/Constants.java
+++ b/src/main/java/cuchaz/enigma/Constants.java
@@ -16,5 +16,4 @@ public class Constants {
16 public static final String URL = "http://www.cuchazinteractive.com/enigma"; 16 public static final String URL = "http://www.cuchazinteractive.com/enigma";
17 public static final int MiB = 1024 * 1024; // 1 mebibyte 17 public static final int MiB = 1024 * 1024; // 1 mebibyte
18 public static final int KiB = 1024; // 1 kebibyte 18 public static final int KiB = 1024; // 1 kebibyte
19 public static final String NONE_PACKAGE = "none";
20} 19}
diff --git a/src/main/java/cuchaz/enigma/Deobfuscator.java b/src/main/java/cuchaz/enigma/Deobfuscator.java
index 2207999d..e9a998da 100644
--- a/src/main/java/cuchaz/enigma/Deobfuscator.java
+++ b/src/main/java/cuchaz/enigma/Deobfuscator.java
@@ -146,7 +146,7 @@ public class Deobfuscator {
146 if (!deobfClassEntry.equals(obfClassEntry)) { 146 if (!deobfClassEntry.equals(obfClassEntry)) {
147 // if the class has a mapping, clearly it's deobfuscated 147 // if the class has a mapping, clearly it's deobfuscated
148 deobfClasses.add(deobfClassEntry); 148 deobfClasses.add(deobfClassEntry);
149 } else if (!obfClassEntry.getPackageName().equals(Constants.NONE_PACKAGE)) { 149 } else if (obfClassEntry.getPackageName() != null) {
150 // also call it deobufscated if it's not in the none package 150 // also call it deobufscated if it's not in the none package
151 deobfClasses.add(obfClassEntry); 151 deobfClasses.add(obfClassEntry);
152 } else { 152 } else {
diff --git a/src/main/java/cuchaz/enigma/TranslatingTypeLoader.java b/src/main/java/cuchaz/enigma/TranslatingTypeLoader.java
index 13efbd51..e4c162da 100644
--- a/src/main/java/cuchaz/enigma/TranslatingTypeLoader.java
+++ b/src/main/java/cuchaz/enigma/TranslatingTypeLoader.java
@@ -187,10 +187,6 @@ public class TranslatingTypeLoader implements ITypeLoader {
187 public List<String> getClassNamesToTry(ClassEntry obfClassEntry) { 187 public List<String> getClassNamesToTry(ClassEntry obfClassEntry) {
188 List<String> classNamesToTry = Lists.newArrayList(); 188 List<String> classNamesToTry = Lists.newArrayList();
189 classNamesToTry.add(obfClassEntry.getName()); 189 classNamesToTry.add(obfClassEntry.getName());
190 if (obfClassEntry.getPackageName().equals(Constants.NONE_PACKAGE)) {
191 // taking off the none package, if any
192 classNamesToTry.add(obfClassEntry.getSimpleName());
193 }
194 if (obfClassEntry.isInnerClass()) { 190 if (obfClassEntry.isInnerClass()) {
195 // try just the inner class name 191 // try just the inner class name
196 classNamesToTry.add(obfClassEntry.getInnermostClassName()); 192 classNamesToTry.add(obfClassEntry.getInnermostClassName());
@@ -201,10 +197,6 @@ public class TranslatingTypeLoader implements ITypeLoader {
201 public CtClass transformClass(CtClass c) 197 public CtClass transformClass(CtClass c)
202 throws IOException, NotFoundException, CannotCompileException { 198 throws IOException, NotFoundException, CannotCompileException {
203 199
204 // we moved a lot of classes out of the default package into the none package
205 // make sure all the class references are consistent
206 ClassRenamer.moveAllClassesOutOfDefaultPackage(c, Constants.NONE_PACKAGE);
207
208 // reconstruct inner classes 200 // reconstruct inner classes
209 new InnerClassWriter(this.jarIndex).write(c); 201 new InnerClassWriter(this.jarIndex).write(c);
210 202
diff --git a/src/main/java/cuchaz/enigma/analysis/JarIndex.java b/src/main/java/cuchaz/enigma/analysis/JarIndex.java
index e501540d..619d862c 100644
--- a/src/main/java/cuchaz/enigma/analysis/JarIndex.java
+++ b/src/main/java/cuchaz/enigma/analysis/JarIndex.java
@@ -59,17 +59,10 @@ public class JarIndex {
59 public void indexJar(JarFile jar, boolean buildInnerClasses) { 59 public void indexJar(JarFile jar, boolean buildInnerClasses) {
60 60
61 // step 1: read the class names 61 // step 1: read the class names
62 for (ClassEntry classEntry : JarClassIterator.getClassEntries(jar)) { 62 this.obfClassEntries.addAll(JarClassIterator.getClassEntries(jar));
63 if (classEntry.isInDefaultPackage()) {
64 // move out of default package
65 classEntry = new ClassEntry(Constants.NONE_PACKAGE + "/" + classEntry.getName());
66 }
67 this.obfClassEntries.add(classEntry);
68 }
69 63
70 // step 2: index field/method/constructor access 64 // step 2: index field/method/constructor access
71 for (CtClass c : JarClassIterator.classes(jar)) { 65 for (CtClass c : JarClassIterator.classes(jar)) {
72 ClassRenamer.moveAllClassesOutOfDefaultPackage(c, Constants.NONE_PACKAGE);
73 for (CtField field : c.getDeclaredFields()) { 66 for (CtField field : c.getDeclaredFields()) {
74 FieldEntry fieldEntry = EntryFactory.getFieldEntry(field); 67 FieldEntry fieldEntry = EntryFactory.getFieldEntry(field);
75 this.access.put(fieldEntry, Access.get(field)); 68 this.access.put(fieldEntry, Access.get(field));
@@ -84,7 +77,6 @@ public class JarIndex {
84 77
85 // step 3: index extends, implements, fields, and methods 78 // step 3: index extends, implements, fields, and methods
86 for (CtClass c : JarClassIterator.classes(jar)) { 79 for (CtClass c : JarClassIterator.classes(jar)) {
87 ClassRenamer.moveAllClassesOutOfDefaultPackage(c, Constants.NONE_PACKAGE);
88 this.translationIndex.indexClass(c); 80 this.translationIndex.indexClass(c);
89 String className = Descriptor.toJvmName(c.getName()); 81 String className = Descriptor.toJvmName(c.getName());
90 for (String interfaceName : c.getClassFile().getInterfaces()) { 82 for (String interfaceName : c.getClassFile().getInterfaces()) {
@@ -101,7 +93,6 @@ public class JarIndex {
101 93
102 // step 4: index field, method, constructor references 94 // step 4: index field, method, constructor references
103 for (CtClass c : JarClassIterator.classes(jar)) { 95 for (CtClass c : JarClassIterator.classes(jar)) {
104 ClassRenamer.moveAllClassesOutOfDefaultPackage(c, Constants.NONE_PACKAGE);
105 for (CtBehavior behavior : c.getDeclaredBehaviors()) { 96 for (CtBehavior behavior : c.getDeclaredBehaviors()) {
106 indexBehaviorReferences(behavior); 97 indexBehaviorReferences(behavior);
107 } 98 }
@@ -111,7 +102,6 @@ public class JarIndex {
111 102
112 // step 5: index inner classes and anonymous classes 103 // step 5: index inner classes and anonymous classes
113 for (CtClass c : JarClassIterator.classes(jar)) { 104 for (CtClass c : JarClassIterator.classes(jar)) {
114 ClassRenamer.moveAllClassesOutOfDefaultPackage(c, Constants.NONE_PACKAGE);
115 ClassEntry innerClassEntry = EntryFactory.getClassEntry(c); 105 ClassEntry innerClassEntry = EntryFactory.getClassEntry(c);
116 ClassEntry outerClassEntry = findOuterClass(c); 106 ClassEntry outerClassEntry = findOuterClass(c);
117 if (outerClassEntry != null) { 107 if (outerClassEntry != null) {
diff --git a/src/main/java/cuchaz/enigma/convert/ClassIdentity.java b/src/main/java/cuchaz/enigma/convert/ClassIdentity.java
index 0960c86b..4d1b3caa 100644
--- a/src/main/java/cuchaz/enigma/convert/ClassIdentity.java
+++ b/src/main/java/cuchaz/enigma/convert/ClassIdentity.java
@@ -58,7 +58,7 @@ public class ClassIdentity {
58 58
59 // classes not in the none package can be passed through 59 // classes not in the none package can be passed through
60 ClassEntry classEntry = new ClassEntry(className); 60 ClassEntry classEntry = new ClassEntry(className);
61 if (!classEntry.getPackageName().equals(Constants.NONE_PACKAGE)) { 61 if (!classEntry.getClassName().contains("/")) {
62 return className; 62 return className;
63 } 63 }
64 64
diff --git a/src/main/java/cuchaz/enigma/convert/MappingsConverter.java b/src/main/java/cuchaz/enigma/convert/MappingsConverter.java
index a80d9ce1..01de9a51 100644
--- a/src/main/java/cuchaz/enigma/convert/MappingsConverter.java
+++ b/src/main/java/cuchaz/enigma/convert/MappingsConverter.java
@@ -235,7 +235,7 @@ public class MappingsConverter {
235 235
236 // non obfuscated classes can be migrated 236 // non obfuscated classes can be migrated
237 ClassEntry classEntry = oldObfType.getClassEntry(); 237 ClassEntry classEntry = oldObfType.getClassEntry();
238 if (!classEntry.getPackageName().equals(Constants.NONE_PACKAGE)) { 238 if (!classEntry.getClassName().contains("/")) {
239 return true; 239 return true;
240 } 240 }
241 241
diff --git a/src/main/java/cuchaz/enigma/gui/Gui.java b/src/main/java/cuchaz/enigma/gui/Gui.java
index 0ccb3f79..a81ad066 100644
--- a/src/main/java/cuchaz/enigma/gui/Gui.java
+++ b/src/main/java/cuchaz/enigma/gui/Gui.java
@@ -574,8 +574,7 @@ public class Gui {
574 574
575 int offset = text.getText().lastIndexOf('/') + 1; 575 int offset = text.getText().lastIndexOf('/') + 1;
576 // If it's a class and isn't in the default package, assume that it's deobfuscated. 576 // If it's a class and isn't in the default package, assume that it's deobfuscated.
577 if (m_reference.getNameableEntry() instanceof ClassEntry && !text.getText().startsWith(Constants.NONE_PACKAGE) 577 if (m_reference.getNameableEntry() instanceof ClassEntry && text.getText().contains("/") && offset != 0)
578 && offset != 0)
579 text.select(offset, text.getText().length()); 578 text.select(offset, text.getText().length());
580 else 579 else
581 text.selectAll(); 580 text.selectAll();
@@ -778,9 +777,8 @@ public class Gui {
778 { 777 {
779 String oldEntry = deobfReference.entry.getClassEntry().getPackageName(); 778 String oldEntry = deobfReference.entry.getClassEntry().getPackageName();
780 String newEntry = new ClassEntry(Descriptor.toJvmName(newName)).getPackageName(); 779 String newEntry = new ClassEntry(Descriptor.toJvmName(newName)).getPackageName();
781 if (oldEntry != null && newEntry != null) 780 moveClassTree(deobfReference, newName, oldEntry == null,
782 moveClassTree(deobfReference, newName, oldEntry.equals(Constants.NONE_PACKAGE), 781 newEntry == null);
783 newEntry.equals(Constants.NONE_PACKAGE));
784 } 782 }
785 783
786 public void moveClassTree(EntryReference<Entry, Entry> deobfReference, String newName, boolean isOldOb, boolean isNewOb) 784 public void moveClassTree(EntryReference<Entry, Entry> deobfReference, String newName, boolean isOldOb, boolean isNewOb)
diff --git a/src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java b/src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java
index d2e421e7..30d8a9ca 100644
--- a/src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java
+++ b/src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java
@@ -10,6 +10,7 @@
10 ******************************************************************************/ 10 ******************************************************************************/
11package cuchaz.enigma.gui.node; 11package cuchaz.enigma.gui.node;
12 12
13import com.strobel.annotations.Nullable;
13import javassist.bytecode.Descriptor; 14import javassist.bytecode.Descriptor;
14 15
15import javax.swing.tree.DefaultMutableTreeNode; 16import javax.swing.tree.DefaultMutableTreeNode;
@@ -18,8 +19,8 @@ public class ClassSelectorPackageNode extends DefaultMutableTreeNode {
18 19
19 private String packageName; 20 private String packageName;
20 21
21 public ClassSelectorPackageNode(String packageName) { 22 public ClassSelectorPackageNode(@Nullable String packageName) {
22 this.packageName = packageName; 23 this.packageName = packageName != null ? packageName : "(none)";
23 } 24 }
24 25
25 public String getPackageName() { 26 public String getPackageName() {
diff --git a/src/main/java/cuchaz/enigma/mapping/MappingsSRGWriter.java b/src/main/java/cuchaz/enigma/mapping/MappingsSRGWriter.java
index 229bf464..4d0c2610 100644
--- a/src/main/java/cuchaz/enigma/mapping/MappingsSRGWriter.java
+++ b/src/main/java/cuchaz/enigma/mapping/MappingsSRGWriter.java
@@ -34,25 +34,25 @@ public class MappingsSRGWriter {
34 if(innerClassMapping.getDeobfName() == null || innerClassMapping.getObfSimpleName() == null || innerClassMapping.getDeobfName() == null){ 34 if(innerClassMapping.getDeobfName() == null || innerClassMapping.getObfSimpleName() == null || innerClassMapping.getDeobfName() == null){
35 continue; 35 continue;
36 } 36 }
37 String innerClassName = classMapping.getObfSimpleName() + "$" + innerClassMapping.getObfSimpleName().replace("none/", ""); 37 String innerClassName = classMapping.getObfSimpleName() + "$" + innerClassMapping.getObfSimpleName();
38 String innerDebofClassName = classMapping.getDeobfName() + "$" + innerClassMapping.getDeobfName().replace("none/", ""); 38 String innerDeobfClassName = classMapping.getDeobfName() + "$" + innerClassMapping.getDeobfName();
39 writer.write("CL: " + innerClassName + " " + classMapping.getDeobfName() + "$" + innerClassMapping.getDeobfName()); 39 writer.write("CL: " + innerClassName + " " + classMapping.getDeobfName() + "$" + innerClassMapping.getDeobfName());
40 writer.write(System.lineSeparator()); 40 writer.write(System.lineSeparator());
41 for (FieldMapping fieldMapping : sorted(innerClassMapping.fields())) { 41 for (FieldMapping fieldMapping : sorted(innerClassMapping.fields())) {
42 fieldMappings.add("FD: " + innerClassName + "/" + fieldMapping.getObfName() + " " + innerDebofClassName + "/" + fieldMapping.getDeobfName()); 42 fieldMappings.add("FD: " + innerClassName + "/" + fieldMapping.getObfName() + " " + innerDeobfClassName + "/" + fieldMapping.getDeobfName());
43 } 43 }
44 44
45 for (MethodMapping methodMapping : sorted(innerClassMapping.methods())) { 45 for (MethodMapping methodMapping : sorted(innerClassMapping.methods())) {
46 methodMappings.add("MD: " + innerClassName + "/" + methodMapping.getObfName() + " " + methodMapping.getObfSignature().toString().replace("none/", "") + " " + innerDebofClassName + "/" + methodMapping.getDeobfName() + " " + mappings.getTranslator(TranslationDirection.Deobfuscating, index).translateSignature(methodMapping.getObfSignature())); 46 methodMappings.add("MD: " + innerClassName + "/" + methodMapping.getObfName() + " " + methodMapping.getObfSignature().toString() + " " + innerDeobfClassName + "/" + methodMapping.getDeobfName() + " " + mappings.getTranslator(TranslationDirection.Deobfuscating, index).translateSignature(methodMapping.getObfSignature()));
47 } 47 }
48 } 48 }
49 49
50 for (FieldMapping fieldMapping : sorted(classMapping.fields())) { 50 for (FieldMapping fieldMapping : sorted(classMapping.fields())) {
51 fieldMappings.add("FD: " + classMapping.getObfFullName().replace("none/", "") + "/" + fieldMapping.getObfName() + " " + classMapping.getDeobfName() + "/" + fieldMapping.getDeobfName()); 51 fieldMappings.add("FD: " + classMapping.getObfFullName() + "/" + fieldMapping.getObfName() + " " + classMapping.getDeobfName() + "/" + fieldMapping.getDeobfName());
52 } 52 }
53 53
54 for (MethodMapping methodMapping : sorted(classMapping.methods())) { 54 for (MethodMapping methodMapping : sorted(classMapping.methods())) {
55 methodMappings.add("MD: " + classMapping.getObfFullName().replace("none/", "") + "/" + methodMapping.getObfName() + " " + methodMapping.getObfSignature().toString().replace("none/", "") + " " + classMapping.getDeobfName() + "/" + methodMapping.getDeobfName() + " " + mappings.getTranslator(TranslationDirection.Deobfuscating, index).translateSignature(methodMapping.getObfSignature())); 55 methodMappings.add("MD: " + classMapping.getObfFullName() + "/" + methodMapping.getObfName() + " " + methodMapping.getObfSignature().toString() + " " + classMapping.getDeobfName() + "/" + methodMapping.getDeobfName() + " " + mappings.getTranslator(TranslationDirection.Deobfuscating, index).translateSignature(methodMapping.getObfSignature()));
56 } 56 }
57 } 57 }
58 for(String fd : fieldMappings){ 58 for(String fd : fieldMappings){