Skip to content

Commit b4d4de7

Browse files
committed
Remove ASM 7.1 and replace with ASM 9.1
Fixes issue #295
1 parent 47a0d14 commit b4d4de7

7 files changed

Lines changed: 59 additions & 51 deletions

File tree

README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ Bytecode Viewer - a lightweight user friendly Java Bytecode Viewer.
88
* Added support to Java files compiled using JDK > 13
99
* Migrated to Maven
1010

11-
1211
#### Links
1312
* Website: https://bytecodeviewer.com
1413
* Source Code: https://github.com/konloch/bytecode-viewer
@@ -70,7 +69,7 @@ Open the Maven project (e.g. in IntelliJ, open the ``pom.xml`` as a project file
7069

7170
## Exporting as jar
7271

73-
Using Intellij create a new artifact jar and build it, if the META-INF is overrwitten replace it with the one in resources.
72+
Using Intellij create a new artifact jar and build it, if the META-INF is overrwitten replace it with the one in src/main/resources.
7473

75-
##### Are you a Java Reverse Engineer? Do you want to learn?
74+
#### Are you a Java Reverse Engineer? Do you want to learn?
7675
Join The Bytecode Club Today! - https://the.bytecode.club

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
<groupId>the.bytecode.club</groupId>
55
<artifactId>bytecodeviewer</artifactId>
6-
<version>2.10.10</version>
6+
<version>2.10.11</version>
77

88
<properties>
99
<java.version>8</java.version>
@@ -132,7 +132,7 @@
132132
<artifactId>jd-gui</artifactId>
133133
<version>1.6.6</version>
134134
<scope>system</scope>
135-
<systemPath>${project.basedir}/libs/jd-gui-1.6.6.jar</systemPath>
135+
<systemPath>${project.basedir}/libs/jd-gui-1.6.6-no-asm.jar</systemPath>
136136
</dependency>
137137
<dependency>
138138
<groupId>eu.bibl.banalysis</groupId>

src/main/java/META-INF/MANIFEST.MF

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Manifest-Version: 1.0
2+
Main-Class: the.bytecode.club.bytecodeviewer.BytecodeViewer
3+

src/main/java/the/bytecode/club/bytecodeviewer/BytecodeViewer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -630,15 +630,15 @@ public static void resetRecentFilesMenu() {
630630
});
631631
viewer.recentFilesSecondaryMenu.add(m);
632632
}
633-
viewer.mnRecentPlugins.removeAll();
633+
viewer.recentPluginsSecondaryMenu.removeAll();
634634
for (String s : recentPlugins)
635635
if (!s.isEmpty()) {
636636
JMenuItem m = new JMenuItem(s);
637637
m.addActionListener(e -> {
638638
JMenuItem m1 = (JMenuItem) e.getSource();
639639
startPlugin(new File(m1.getText()));
640640
});
641-
viewer.mnRecentPlugins.add(m);
641+
viewer.recentPluginsSecondaryMenu.add(m);
642642
}
643643
}
644644

src/main/java/the/bytecode/club/bytecodeviewer/Constants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
public class Constants
1717
{
1818
/*per version*/
19-
public static final String VERSION = "2.10.10"; //could be loaded from the pom
19+
public static final String VERSION = "2.10.11"; //could be loaded from the pom
2020
public static String krakatauVersion = "12";
2121
public static String enjarifyVersion = "4";
2222
public static final boolean BLOCK_TAB_MENU = true;

src/main/java/the/bytecode/club/bytecodeviewer/gui/MainViewerGUI.java

Lines changed: 49 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import java.awt.Frame;
77
import java.awt.KeyEventDispatcher;
88
import java.awt.KeyboardFocusManager;
9-
import java.awt.event.ActionListener;
109
import java.awt.event.KeyEvent;
1110
import java.awt.event.WindowAdapter;
1211
import java.awt.event.WindowEvent;
@@ -85,7 +84,7 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier {
8584
//all of the files main menu components
8685
public final JMenu fileMainMenu = new JMenu("File");
8786
public final JMenuItem newWorkSpace = new JMenuItem("New Workspace");
88-
public final JMenuItem addResource = new JMenuItem("Add..");
87+
public final JMenuItem addResource = new JMenuItem("Add...");
8988
public final JMenuItem reloadResources = new JMenuItem("Reload Resources");
9089
public final JMenuItem runButton = new JMenuItem("Run");
9190
public final JMenuItem compileButton = new JMenuItem("Compile");
@@ -105,6 +104,22 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier {
105104
public final ViewPane viewPane2 = new ViewPane(2);
106105
public final ViewPane viewPane3 = new ViewPane(3);
107106

107+
//TODO settings main menu components
108+
109+
//all of the plugins main menu components
110+
public final JMenu pluginsMainMenu = new JMenu("Plugins");
111+
public final JMenuItem openExternalPlugin = new JMenuItem("Open Plugin...");
112+
public final JMenu recentPluginsSecondaryMenu = new JMenu("Recent Plugins");
113+
public final JMenuItem ZKMStringDecrypter = new JMenuItem("ZKM String Decrypter");
114+
public final JMenuItem allatoriStringDecrypter = new JMenuItem("Allatori String Decrypter");
115+
public final JMenuItem codeSequenceDiagram = new JMenuItem("Code Sequence Diagram");
116+
public final JMenuItem maliciousCodeScanner = new JMenuItem("Malicious Code Scanner");
117+
public final JMenuItem showAllStrings = new JMenuItem("Show All Strings");
118+
public final JMenuItem showMainMethods = new JMenuItem("Show Main Methods");
119+
public final JMenuItem replaceStrings = new JMenuItem("Replace Strings");
120+
public final JMenuItem stackFramesRemover = new JMenuItem("StackFrames Remover");
121+
public final JMenuItem zStringArrayDecrypter = new JMenuItem("ZStringArray Decrypter");
122+
108123
public JCheckBoxMenuItem debugHelpers = new JCheckBoxMenuItem("Debug Helpers");
109124
public JSplitPane sp1;
110125
public JSplitPane sp2;
@@ -127,16 +142,7 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier {
127142
public JCheckBoxMenuItem fdi = new JCheckBoxMenuItem("Deinline finally structures");
128143
public JCheckBoxMenuItem asc = new JCheckBoxMenuItem("Allow only ASCII characters in strings");
129144
public JCheckBoxMenuItem ren = new JCheckBoxMenuItem("Rename ambiguous classes and class elements");
130-
public final JMenu mnNewMenu_1 = new JMenu("Plugins");
131-
public final JMenuItem mntmStartExternalPlugin = new JMenuItem("Open Plugin..");
132-
public JMenu mnRecentPlugins = new JMenu("Recent Plugins");
133-
public final JMenuItem mntmStartZkmString = new JMenuItem("ZKM String Decrypter");
134-
public final JMenuItem mntmNewMenuItem_1 = new JMenuItem("Malicious Code Scanner");
135-
public final JMenuItem mntmNewMenuItem_2 = new JMenuItem("Allatori String Decrypter");
136-
public final JMenuItem mntmShowAllStrings = new JMenuItem("Show All Strings");
137-
public final JMenuItem mntmShowMainMethods = new JMenuItem("Show Main Methods");
138-
public final JMenuItem mntmReplaceStrings = new JMenuItem("Replace Strings");
139-
public final JMenuItem mntmStackFramesRemover = new JMenuItem("StackFrames Remover");
145+
140146
public final JMenuItem[] waitIcons;
141147
public final JMenu mnNewMenu_3 = new JMenu("CFR");
142148
public final JMenu mnNewMenu_4 = new JMenu("Procyon");
@@ -213,14 +219,12 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier {
213219
public final JMenu mnSettings = new JMenu("Settings");
214220
public AboutWindow aboutWindow = new AboutWindow();
215221

216-
public final JMenuItem mntmCodeSequenceDiagram = new JMenuItem("Code Sequence Diagram");
217222
public final JCheckBoxMenuItem compileOnSave = new JCheckBoxMenuItem("Compile On Save");
218223
public final JCheckBoxMenuItem showFileInTabTitle = new JCheckBoxMenuItem("Show File In Tab Title");
219224
public final JCheckBoxMenuItem forcePureAsciiAsText = new JCheckBoxMenuItem("Force Pure Ascii As Text");
220225
public final JCheckBoxMenuItem autoCompileOnRefresh = new JCheckBoxMenuItem("Compile On Refresh");
221226
public final JMenuItem mntmSetPythonDirectory = new JMenuItem("Set Python 2.7 Executable");
222227
public final JMenuItem mntmSetJreRt = new JMenuItem("Set JRE RT Library");
223-
public final JMenuItem mntmZstringarrayDecrypter = new JMenuItem("ZStringArray Decrypter");
224228
public final JCheckBoxMenuItem decodeAPKResources = new JCheckBoxMenuItem("Decode APK Resources");
225229
public final JCheckBoxMenuItem synchronizedViewing = new JCheckBoxMenuItem("Synchronized Viewing");
226230
public final JCheckBoxMenuItem showClassMethods = new JCheckBoxMenuItem("Show Class Methods");
@@ -356,6 +360,7 @@ public void windowClosing(WindowEvent e) {
356360
buildMenuBar();
357361
buildFileMenuBar();
358362
buildViewMenuBar();
363+
buildPluginMenuBar();
359364

360365
compileOnSave.setSelected(false);
361366

@@ -694,42 +699,24 @@ public void windowClosing(WindowEvent e) {
694699
mntmNewMenuItem_10.setEnabled(false);
695700
mnNewMenu_5.add(mntmNewMenuItem_10);
696701

697-
rootMenu.add(mnNewMenu_1);
698-
mnNewMenu_1.add(mntmStartExternalPlugin);
699-
mnNewMenu_1.add(new JSeparator());
700-
mnNewMenu_1.add(mnRecentPlugins);
701-
mnNewMenu_1.add(new JSeparator());
702-
mntmCodeSequenceDiagram.addActionListener(arg0 -> {
702+
703+
codeSequenceDiagram.addActionListener(arg0 -> {
703704
if (BytecodeViewer.getLoadedClasses().isEmpty()) {
704705
BytecodeViewer.showMessage("First open a class, jar, zip, apk or dex file.");
705706
return;
706707
}
707708
PluginManager.runPlugin(new CodeSequenceDiagram());
708709
});
709-
710-
mnNewMenu_1.add(mntmCodeSequenceDiagram);
711-
mnNewMenu_1.add(mntmNewMenuItem_1);
712-
mnNewMenu_1.add(mntmShowMainMethods);
713-
mnNewMenu_1.add(mntmShowAllStrings);
714-
mntmReplaceStrings.addActionListener(arg0 -> {
710+
replaceStrings.addActionListener(arg0 -> {
715711
if (BytecodeViewer.getLoadedClasses().isEmpty()) {
716712
BytecodeViewer.showMessage("First open a class, jar, zip, apk or dex file.");
717713
return;
718714
}
719715
new ReplaceStringsOptions().setVisible(true);
720716
});
721-
722-
mnNewMenu_1.add(mntmReplaceStrings);
723717

724-
//allatori and ZKM are disabled since they are just placeholders
725-
//mnNewMenu_1.add(mntmNewMenuItem_2);
726-
//mnNewMenu_1.add(mntmStartZkmString);
727-
728-
mntmZstringarrayDecrypter.addActionListener(arg0 -> PluginManager.runPlugin(new ZStringArrayDecrypter()));
729-
mntmStackFramesRemover.addActionListener(e -> PluginManager.runPlugin(new StackFramesRemover()));
730-
731-
mnNewMenu_1.add(mntmZstringarrayDecrypter);
732-
mnNewMenu_1.add(mntmStackFramesRemover);
718+
zStringArrayDecrypter.addActionListener(arg0 -> PluginManager.runPlugin(new ZStringArrayDecrypter()));
719+
stackFramesRemover.addActionListener(e -> PluginManager.runPlugin(new StackFramesRemover()));
733720

734721
waitIcons = new JMenuItem[10];
735722
for (int i = 0; i < 10; i++) {
@@ -739,7 +726,7 @@ public void windowClosing(WindowEvent e) {
739726
rootMenu.add(waitIcons[i]);
740727
}
741728

742-
mntmStartExternalPlugin.addActionListener(arg0 -> {
729+
openExternalPlugin.addActionListener(arg0 -> {
743730
JFileChooser fc = new JFileChooser();
744731
fc.setFileFilter(PluginManager.fileFilter());
745732
fc.setFileHidingEnabled(false);
@@ -756,11 +743,11 @@ public void windowClosing(WindowEvent e) {
756743
}
757744
});
758745

759-
mntmStartZkmString.addActionListener(e -> PluginManager.runPlugin(new ZKMStringDecrypter()));
760-
mntmNewMenuItem_2.addActionListener(e -> PluginManager.runPlugin(new AllatoriStringDecrypter()));
761-
mntmNewMenuItem_1.addActionListener(e -> MaliciousCodeScannerOptions.showOptionPanel());
762-
mntmShowAllStrings.addActionListener(e -> PluginManager.runPlugin(new ShowAllStrings()));
763-
mntmShowMainMethods.addActionListener(e -> PluginManager.runPlugin(new ShowMainMethods()));
746+
ZKMStringDecrypter.addActionListener(e -> PluginManager.runPlugin(new ZKMStringDecrypter()));
747+
allatoriStringDecrypter.addActionListener(e -> PluginManager.runPlugin(new AllatoriStringDecrypter()));
748+
maliciousCodeScanner.addActionListener(e -> MaliciousCodeScannerOptions.showOptionPanel());
749+
showAllStrings.addActionListener(e -> PluginManager.runPlugin(new ShowAllStrings()));
750+
showMainMethods.addActionListener(e -> PluginManager.runPlugin(new ShowMainMethods()));
764751

765752
setSize(new Dimension(800, 400));
766753
if (PREVIEW_COPY)
@@ -878,6 +865,25 @@ public void buildViewMenuBar()
878865
viewMainMenu.add(viewPane2.menu);
879866
viewMainMenu.add(viewPane3.menu);
880867
}
868+
869+
public void buildPluginMenuBar()
870+
{
871+
rootMenu.add(pluginsMainMenu);
872+
pluginsMainMenu.add(openExternalPlugin);
873+
pluginsMainMenu.add(new JSeparator());
874+
pluginsMainMenu.add(recentPluginsSecondaryMenu);
875+
pluginsMainMenu.add(new JSeparator());
876+
pluginsMainMenu.add(codeSequenceDiagram);
877+
pluginsMainMenu.add(maliciousCodeScanner);
878+
pluginsMainMenu.add(showMainMethods);
879+
pluginsMainMenu.add(showAllStrings);
880+
pluginsMainMenu.add(replaceStrings);
881+
pluginsMainMenu.add(stackFramesRemover);
882+
//allatori and ZKM are disabled since they are just placeholders
883+
//mnNewMenu_1.add(mntmNewMenuItem_2);
884+
//mnNewMenu_1.add(mntmStartZkmString);
885+
pluginsMainMenu.add(zStringArrayDecrypter);
886+
}
881887

882888
@Override
883889
public void openClassFile(final FileContainer container, final String name, final ClassNode cn) {

0 commit comments

Comments
 (0)