diff options
| author | 2018-06-23 15:56:05 +0200 | |
|---|---|---|
| committer | 2018-06-23 15:56:05 +0200 | |
| commit | 236c79260e965d6cd6ca6b4e5a72a8125b132920 (patch) | |
| tree | e78cd28d94da3a71ad108916d024e0ab40450656 | |
| parent | Resolve all failed tests (diff) | |
| download | enigma-236c79260e965d6cd6ca6b4e5a72a8125b132920.tar.gz enigma-236c79260e965d6cd6ca6b4e5a72a8125b132920.tar.xz enigma-236c79260e965d6cd6ca6b4e5a72a8125b132920.zip | |
Apply deobfuscated name to transformed classes
| -rw-r--r-- | src/main/java/cuchaz/enigma/Deobfuscator.java | 18 | ||||
| -rw-r--r-- | src/main/java/cuchaz/enigma/TranslatingTypeLoader.java | 5 |
2 files changed, 15 insertions, 8 deletions
diff --git a/src/main/java/cuchaz/enigma/Deobfuscator.java b/src/main/java/cuchaz/enigma/Deobfuscator.java index bdd8873f..ccd099c6 100644 --- a/src/main/java/cuchaz/enigma/Deobfuscator.java +++ b/src/main/java/cuchaz/enigma/Deobfuscator.java | |||
| @@ -393,15 +393,21 @@ public class Deobfuscator { | |||
| 393 | 393 | ||
| 394 | 394 | ||
| 395 | public void writeJar(File out, ProgressListener progress) { | 395 | public void writeJar(File out, ProgressListener progress) { |
| 396 | transformJar(out, progress, createTypeLoader()::createTransformer); | 396 | transformJar(out, progress, createTypeLoader()::transformInto); |
| 397 | } | 397 | } |
| 398 | 398 | ||
| 399 | public void protectifyJar(File out, ProgressListener progress) { | 399 | public void protectifyJar(File out, ProgressListener progress) { |
| 400 | transformJar(out, progress, (node, writer) -> node.accept(new ClassProtectifier(Opcodes.ASM5, writer))); | 400 | transformJar(out, progress, (node, writer) -> { |
| 401 | node.accept(new ClassProtectifier(Opcodes.ASM5, writer)); | ||
| 402 | return node.name; | ||
| 403 | }); | ||
| 401 | } | 404 | } |
| 402 | 405 | ||
| 403 | public void publifyJar(File out, ProgressListener progress) { | 406 | public void publifyJar(File out, ProgressListener progress) { |
| 404 | transformJar(out, progress, (node, writer) -> node.accept(new ClassPublifier(Opcodes.ASM5, writer))); | 407 | transformJar(out, progress, (node, writer) -> { |
| 408 | node.accept(new ClassPublifier(Opcodes.ASM5, writer)); | ||
| 409 | return node.name; | ||
| 410 | }); | ||
| 405 | } | 411 | } |
| 406 | 412 | ||
| 407 | public void transformJar(File out, ProgressListener progress, ClassTransformer transformer) { | 413 | public void transformJar(File out, ProgressListener progress, ClassTransformer transformer) { |
| @@ -418,8 +424,8 @@ public class Deobfuscator { | |||
| 418 | 424 | ||
| 419 | try { | 425 | try { |
| 420 | ClassWriter writer = new ClassWriter(0); | 426 | ClassWriter writer = new ClassWriter(0); |
| 421 | transformer.write(node, writer); | 427 | String transformedName = transformer.transform(node, writer); |
| 422 | outJar.putNextEntry(new JarEntry(node.name.replace('.', '/') + ".class")); | 428 | outJar.putNextEntry(new JarEntry(transformedName.replace('.', '/') + ".class")); |
| 423 | outJar.write(writer.toByteArray()); | 429 | outJar.write(writer.toByteArray()); |
| 424 | outJar.closeEntry(); | 430 | outJar.closeEntry(); |
| 425 | } catch (Throwable t) { | 431 | } catch (Throwable t) { |
| @@ -646,6 +652,6 @@ public class Deobfuscator { | |||
| 646 | } | 652 | } |
| 647 | 653 | ||
| 648 | public interface ClassTransformer { | 654 | public interface ClassTransformer { |
| 649 | void write(ClassNode node, ClassWriter writer); | 655 | String transform(ClassNode node, ClassWriter writer); |
| 650 | } | 656 | } |
| 651 | } | 657 | } |
diff --git a/src/main/java/cuchaz/enigma/TranslatingTypeLoader.java b/src/main/java/cuchaz/enigma/TranslatingTypeLoader.java index 3f1ff7a1..34901d52 100644 --- a/src/main/java/cuchaz/enigma/TranslatingTypeLoader.java +++ b/src/main/java/cuchaz/enigma/TranslatingTypeLoader.java | |||
| @@ -111,7 +111,7 @@ public class TranslatingTypeLoader implements ITypeLoader { | |||
| 111 | } | 111 | } |
| 112 | 112 | ||
| 113 | ClassWriter writer = new ClassWriter(0); | 113 | ClassWriter writer = new ClassWriter(0); |
| 114 | createTransformer(node, writer); | 114 | transformInto(node, writer); |
| 115 | 115 | ||
| 116 | // we have a transformed class! | 116 | // we have a transformed class! |
| 117 | return writer.toByteArray(); | 117 | return writer.toByteArray(); |
| @@ -145,7 +145,8 @@ public class TranslatingTypeLoader implements ITypeLoader { | |||
| 145 | return classNamesToTry; | 145 | return classNamesToTry; |
| 146 | } | 146 | } |
| 147 | 147 | ||
| 148 | public void createTransformer(ClassNode node, ClassWriter writer) { | 148 | public String transformInto(ClassNode node, ClassWriter writer) { |
| 149 | node.accept(new TranslationClassVisitor(deobfuscatingTranslator, jarIndex, entryPool, Opcodes.ASM5, writer)); | 149 | node.accept(new TranslationClassVisitor(deobfuscatingTranslator, jarIndex, entryPool, Opcodes.ASM5, writer)); |
| 150 | return deobfuscatingTranslator.getTranslatedClass(new ClassEntry(node.name)).getName(); | ||
| 150 | } | 151 | } |
| 151 | } | 152 | } |