From 7b26b620846491d7b55c127c23963e6a7910b925 Mon Sep 17 00:00:00 2001 From: Konloch Date: Sat, 3 Jul 2021 23:18:06 -0700 Subject: [PATCH] Decompiler Cleanup --- .../decompilers/Decompiler.java | 4 +- .../bytecode/ClassNodeDecompiler.java | 15 +------ .../{ => impl}/ASMTextifierDecompiler.java | 3 +- .../impl/BytecodeDisassembler.java | 43 +++++++++++++++++++ .../decompilers/{ => impl}/CFRDecompiler.java | 3 +- .../{ => impl}/FernFlowerDecompiler.java | 3 +- .../{ => impl}/JADXDecompiler.java | 3 +- .../{ => impl}/JDGUIDecompiler.java | 4 +- .../{ => impl}/KrakatauDecompiler.java | 3 +- .../{ => impl}/KrakatauDisassembler.java | 3 +- .../{ => impl}/ProcyonDecompiler.java | 3 +- .../{ => impl}/SmaliDisassembler.java | 3 +- .../gui/resourceviewer/ResourceViewPanel.java | 2 +- 13 files changed, 67 insertions(+), 25 deletions(-) rename src/main/java/the/bytecode/club/bytecodeviewer/decompilers/{ => impl}/ASMTextifierDecompiler.java (93%) create mode 100644 src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/BytecodeDisassembler.java rename src/main/java/the/bytecode/club/bytecodeviewer/decompilers/{ => impl}/CFRDecompiler.java (99%) rename src/main/java/the/bytecode/club/bytecodeviewer/decompilers/{ => impl}/FernFlowerDecompiler.java (98%) rename src/main/java/the/bytecode/club/bytecodeviewer/decompilers/{ => impl}/JADXDecompiler.java (97%) rename src/main/java/the/bytecode/club/bytecodeviewer/decompilers/{ => impl}/JDGUIDecompiler.java (97%) rename src/main/java/the/bytecode/club/bytecodeviewer/decompilers/{ => impl}/KrakatauDecompiler.java (98%) rename src/main/java/the/bytecode/club/bytecodeviewer/decompilers/{ => impl}/KrakatauDisassembler.java (98%) rename src/main/java/the/bytecode/club/bytecodeviewer/decompilers/{ => impl}/ProcyonDecompiler.java (98%) rename src/main/java/the/bytecode/club/bytecodeviewer/decompilers/{ => impl}/SmaliDisassembler.java (97%) diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/Decompiler.java b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/Decompiler.java index 82c4e631..b4679827 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/Decompiler.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/Decompiler.java @@ -1,7 +1,7 @@ package the.bytecode.club.bytecodeviewer.decompilers; import the.bytecode.club.bytecodeviewer.BytecodeViewer; -import the.bytecode.club.bytecodeviewer.decompilers.bytecode.ClassNodeDecompiler; +import the.bytecode.club.bytecodeviewer.decompilers.impl.*; import the.bytecode.club.bytecodeviewer.gui.components.DecompilerViewComponent; import javax.swing.*; @@ -35,7 +35,7 @@ public enum Decompiler PROCYON_DECOMPILER("Procyon Decompiler", new ProcyonDecompiler(), new DecompilerViewComponent("Procyon")), CFR_DECOMPILER("CFR Decompiler", new CFRDecompiler(), new DecompilerViewComponent("Procyon")), FERNFLOWER_DECOMPILER("FernFlower Decompiler", new FernFlowerDecompiler(), new DecompilerViewComponent("Procyon")), - BYTECODE_DISASSEMBLER("Bytecode Disassembler", new ClassNodeDecompiler(), new JRadioButtonMenuItem("Bytecode")), + BYTECODE_DISASSEMBLER("Bytecode Disassembler", new BytecodeDisassembler(), new JRadioButtonMenuItem("Bytecode")), HEXCODE_VIEWER("Hexcode Viewer", null, new JRadioButtonMenuItem("Hexcode")), SMALI_DISASSEMBLER("Smali Decompiler", new SmaliDisassembler(), new DecompilerViewComponent("Smali")), KRAKATAU_DECOMPILER("Krakatau Decompiler", new KrakatauDecompiler(), BytecodeViewer.krakatau), diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/bytecode/ClassNodeDecompiler.java b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/bytecode/ClassNodeDecompiler.java index 71b5391d..3670f38c 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/bytecode/ClassNodeDecompiler.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/bytecode/ClassNodeDecompiler.java @@ -36,16 +36,9 @@ import static the.bytecode.club.bytecodeviewer.Constants.*; * @author Bibl */ -public class ClassNodeDecompiler extends InternalDecompiler +public class ClassNodeDecompiler { - - @Override - public String decompileClassNode(ClassNode cn, byte[] b) { - return decompile(new PrefixedStringBuilder(), - new ArrayList<>(), cn).toString(); - } - - protected static PrefixedStringBuilder decompile( + public static PrefixedStringBuilder decompile( PrefixedStringBuilder sb, ArrayList decompiledClasses, ClassNode cn) { ArrayList unableToDecompile = new ArrayList<>(); @@ -181,8 +174,4 @@ public class ClassNodeDecompiler extends InternalDecompiler } return sb.toString(); } - - @Override - public void decompileToZip(String sourceJar, String zipName) { - } } \ No newline at end of file diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/ASMTextifierDecompiler.java b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/ASMTextifierDecompiler.java similarity index 93% rename from src/main/java/the/bytecode/club/bytecodeviewer/decompilers/ASMTextifierDecompiler.java rename to src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/ASMTextifierDecompiler.java index cc46551c..b8c5a400 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/ASMTextifierDecompiler.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/ASMTextifierDecompiler.java @@ -1,10 +1,11 @@ -package the.bytecode.club.bytecodeviewer.decompilers; +package the.bytecode.club.bytecodeviewer.decompilers.impl; import java.io.PrintWriter; import java.io.StringWriter; import org.objectweb.asm.tree.ClassNode; import org.objectweb.asm.util.Textifier; import org.objectweb.asm.util.TraceClassVisitor; +import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler; /*************************************************************************** * Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite * diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/BytecodeDisassembler.java b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/BytecodeDisassembler.java new file mode 100644 index 00000000..4fa45e78 --- /dev/null +++ b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/BytecodeDisassembler.java @@ -0,0 +1,43 @@ +package the.bytecode.club.bytecodeviewer.decompilers.impl; + +import org.objectweb.asm.tree.ClassNode; +import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler; +import the.bytecode.club.bytecodeviewer.decompilers.bytecode.ClassNodeDecompiler; +import the.bytecode.club.bytecodeviewer.decompilers.bytecode.PrefixedStringBuilder; + +import java.util.ArrayList; + +/*************************************************************************** + * Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite * + * Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +/** + * @author Konloch + * @since 7/3/2021 + */ +public class BytecodeDisassembler extends InternalDecompiler +{ + @Override + public String decompileClassNode(ClassNode cn, byte[] b) { + return ClassNodeDecompiler.decompile(new PrefixedStringBuilder(), + new ArrayList<>(), cn).toString(); + } + + @Override + public void decompileToZip(String sourceJar, String zipName) { + } +} diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/CFRDecompiler.java b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/CFRDecompiler.java similarity index 99% rename from src/main/java/the/bytecode/club/bytecodeviewer/decompilers/CFRDecompiler.java rename to src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/CFRDecompiler.java index e830e65c..63b7d410 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/CFRDecompiler.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/CFRDecompiler.java @@ -1,4 +1,4 @@ -package the.bytecode.club.bytecodeviewer.decompilers; +package the.bytecode.club.bytecodeviewer.decompilers.impl; import java.io.Closeable; import java.io.File; @@ -18,6 +18,7 @@ import java.util.zip.ZipOutputStream; import me.konloch.kontainer.io.DiskReader; import org.objectweb.asm.tree.ClassNode; import the.bytecode.club.bytecodeviewer.BytecodeViewer; +import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler; import the.bytecode.club.bytecodeviewer.util.MiscUtils; import static the.bytecode.club.bytecodeviewer.Constants.*; diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/FernFlowerDecompiler.java b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/FernFlowerDecompiler.java similarity index 98% rename from src/main/java/the/bytecode/club/bytecodeviewer/decompilers/FernFlowerDecompiler.java rename to src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/FernFlowerDecompiler.java index f85bbfcd..aa6d1fa8 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/FernFlowerDecompiler.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/FernFlowerDecompiler.java @@ -1,4 +1,4 @@ -package the.bytecode.club.bytecodeviewer.decompilers; +package the.bytecode.club.bytecodeviewer.decompilers.impl; import java.io.File; import java.io.FileOutputStream; @@ -10,6 +10,7 @@ import org.apache.commons.lang3.ArrayUtils; import org.objectweb.asm.tree.ClassNode; import the.bytecode.club.bytecodeviewer.BytecodeViewer; import the.bytecode.club.bytecodeviewer.Resources; +import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler; import the.bytecode.club.bytecodeviewer.util.MiscUtils; import static the.bytecode.club.bytecodeviewer.Constants.*; diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/JADXDecompiler.java b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/JADXDecompiler.java similarity index 97% rename from src/main/java/the/bytecode/club/bytecodeviewer/decompilers/JADXDecompiler.java rename to src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/JADXDecompiler.java index b310b70f..e0311264 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/JADXDecompiler.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/JADXDecompiler.java @@ -1,4 +1,4 @@ -package the.bytecode.club.bytecodeviewer.decompilers; +package the.bytecode.club.bytecodeviewer.decompilers.impl; import jadx.api.JadxArgs; import jadx.api.JadxDecompiler; @@ -11,6 +11,7 @@ import java.util.Objects; import java.util.Random; import me.konloch.kontainer.io.DiskReader; import org.objectweb.asm.tree.ClassNode; +import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler; import the.bytecode.club.bytecodeviewer.util.MiscUtils; import static the.bytecode.club.bytecodeviewer.Constants.*; diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/JDGUIDecompiler.java b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/JDGUIDecompiler.java similarity index 97% rename from src/main/java/the/bytecode/club/bytecodeviewer/decompilers/JDGUIDecompiler.java rename to src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/JDGUIDecompiler.java index 8427a679..99228073 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/JDGUIDecompiler.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/JDGUIDecompiler.java @@ -1,4 +1,4 @@ -package the.bytecode.club.bytecodeviewer.decompilers; +package the.bytecode.club.bytecodeviewer.decompilers.impl; import java.io.File; import java.io.FileOutputStream; @@ -6,6 +6,8 @@ import java.io.IOException; import java.io.PrintStream; import java.io.PrintWriter; import java.io.StringWriter; + +import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler; import the.bytecode.club.bytecodeviewer.decompilers.jdgui.DirectoryLoader; import the.bytecode.club.bytecodeviewer.decompilers.jdgui.CommonPreferences; import the.bytecode.club.bytecodeviewer.decompilers.jdgui.PlainTextPrinter; diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/KrakatauDecompiler.java b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/KrakatauDecompiler.java similarity index 98% rename from src/main/java/the/bytecode/club/bytecodeviewer/decompilers/KrakatauDecompiler.java rename to src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/KrakatauDecompiler.java index 6afd8a4d..0ad1b44c 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/KrakatauDecompiler.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/KrakatauDecompiler.java @@ -1,4 +1,4 @@ -package the.bytecode.club.bytecodeviewer.decompilers; +package the.bytecode.club.bytecodeviewer.decompilers.impl; import java.io.BufferedReader; import java.io.File; @@ -13,6 +13,7 @@ import org.objectweb.asm.tree.ClassNode; import the.bytecode.club.bytecodeviewer.BytecodeViewer; import the.bytecode.club.bytecodeviewer.Configuration; import the.bytecode.club.bytecodeviewer.Constants; +import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler; import the.bytecode.club.bytecodeviewer.util.JarUtils; import the.bytecode.club.bytecodeviewer.util.MiscUtils; import the.bytecode.club.bytecodeviewer.util.ZipUtils; diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/KrakatauDisassembler.java b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/KrakatauDisassembler.java similarity index 98% rename from src/main/java/the/bytecode/club/bytecodeviewer/decompilers/KrakatauDisassembler.java rename to src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/KrakatauDisassembler.java index 5e138c4f..307dfe9d 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/KrakatauDisassembler.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/KrakatauDisassembler.java @@ -1,4 +1,4 @@ -package the.bytecode.club.bytecodeviewer.decompilers; +package the.bytecode.club.bytecodeviewer.decompilers.impl; import java.io.BufferedReader; import java.io.File; @@ -11,6 +11,7 @@ import org.objectweb.asm.tree.ClassNode; import the.bytecode.club.bytecodeviewer.BytecodeViewer; import the.bytecode.club.bytecodeviewer.Configuration; import the.bytecode.club.bytecodeviewer.Constants; +import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler; import the.bytecode.club.bytecodeviewer.util.JarUtils; import the.bytecode.club.bytecodeviewer.util.MiscUtils; import the.bytecode.club.bytecodeviewer.util.ZipUtils; diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/ProcyonDecompiler.java b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/ProcyonDecompiler.java similarity index 98% rename from src/main/java/the/bytecode/club/bytecodeviewer/decompilers/ProcyonDecompiler.java rename to src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/ProcyonDecompiler.java index 90a7553f..2f895884 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/ProcyonDecompiler.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/ProcyonDecompiler.java @@ -1,4 +1,4 @@ -package the.bytecode.club.bytecodeviewer.decompilers; +package the.bytecode.club.bytecodeviewer.decompilers.impl; import com.strobel.assembler.InputTypeLoader; import com.strobel.assembler.metadata.Buffer; @@ -32,6 +32,7 @@ import java.util.zip.ZipException; import java.util.zip.ZipOutputStream; import org.objectweb.asm.tree.ClassNode; import the.bytecode.club.bytecodeviewer.BytecodeViewer; +import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler; import the.bytecode.club.bytecodeviewer.util.EncodeUtils; import the.bytecode.club.bytecodeviewer.util.MiscUtils; diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/SmaliDisassembler.java b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/SmaliDisassembler.java similarity index 97% rename from src/main/java/the/bytecode/club/bytecodeviewer/decompilers/SmaliDisassembler.java rename to src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/SmaliDisassembler.java index ad5ad15e..0d4bb935 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/SmaliDisassembler.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/impl/SmaliDisassembler.java @@ -1,4 +1,4 @@ -package the.bytecode.club.bytecodeviewer.decompilers; +package the.bytecode.club.bytecodeviewer.decompilers.impl; import java.io.File; import java.io.FileOutputStream; @@ -9,6 +9,7 @@ import java.util.Objects; import me.konloch.kontainer.io.DiskReader; import org.apache.commons.io.FileUtils; import org.objectweb.asm.tree.ClassNode; +import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler; import the.bytecode.club.bytecodeviewer.util.Dex2Jar; import the.bytecode.club.bytecodeviewer.util.FileContainer; import the.bytecode.club.bytecodeviewer.util.MiscUtils; diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/gui/resourceviewer/ResourceViewPanel.java b/src/main/java/the/bytecode/club/bytecodeviewer/gui/resourceviewer/ResourceViewPanel.java index 7b4d8942..e14cc853 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/gui/resourceviewer/ResourceViewPanel.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/gui/resourceviewer/ResourceViewPanel.java @@ -51,7 +51,7 @@ public class ResourceViewPanel if(viewer.cn == null) { - panel.add(new JLabel("This file has been removed from the reload.")); + panel.add(new JLabel("This resource has been removed.")); } }