A few quick updates
This commit is contained in:
parent
60c14f9d2c
commit
0ae50e538b
5 changed files with 107 additions and 6 deletions
|
@ -1,9 +1,12 @@
|
||||||
package the.bytecode.club.bytecodeviewer;
|
package the.bytecode.club.bytecodeviewer;
|
||||||
|
|
||||||
import java.awt.Desktop;
|
import java.awt.Desktop;
|
||||||
|
import java.awt.Font;
|
||||||
|
import java.awt.Graphics;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
|
@ -102,6 +105,7 @@ import the.bytecode.club.bytecodeviewer.plugin.PluginManager;
|
||||||
*
|
*
|
||||||
* before 3.0.0:
|
* before 3.0.0:
|
||||||
* EVERYTHING ON THE FUCKING GITHUB ISSUES LOL
|
* EVERYTHING ON THE FUCKING GITHUB ISSUES LOL
|
||||||
|
* EVERYTHING ON THE BYTECODE CLUB ISSUES LOL
|
||||||
* make it use that global last used inside of export as jar
|
* make it use that global last used inside of export as jar
|
||||||
* Spiffy up the plugin console with hilighted lines
|
* Spiffy up the plugin console with hilighted lines
|
||||||
* Take https://github.com/ptnkjke/Java-Bytecode-Editor visualize
|
* Take https://github.com/ptnkjke/Java-Bytecode-Editor visualize
|
||||||
|
@ -111,9 +115,10 @@ import the.bytecode.club.bytecodeviewer.plugin.PluginManager;
|
||||||
* make ez-injection plugin console show all sys.out calls
|
* make ez-injection plugin console show all sys.out calls
|
||||||
* add JEB decompiler optionally, requires them to add jeb library jar externally and disable update check ?
|
* add JEB decompiler optionally, requires them to add jeb library jar externally and disable update check ?
|
||||||
* add decompile as zip for krakatau-bytecode, jd-gui and smali for CLI
|
* add decompile as zip for krakatau-bytecode, jd-gui and smali for CLI
|
||||||
* fix hook inject for EZ-Injection
|
* fix hook inject for EZ-Injection < Move to JVMCommand?
|
||||||
* fix classfile searcher
|
* fix classfile searcher
|
||||||
* make the decompilers launch in a separate process?
|
* make the decompilers launch in a separate process?
|
||||||
|
* figure out a way to deploy kratau/enjarify versions without downstreaming the latest version via internet for fatjar mode
|
||||||
*
|
*
|
||||||
* -----2.9.9-----:
|
* -----2.9.9-----:
|
||||||
* 08/01/2015 - Fixed a pingback concurrency exception issue.
|
* 08/01/2015 - Fixed a pingback concurrency exception issue.
|
||||||
|
@ -123,6 +128,7 @@ import the.bytecode.club.bytecodeviewer.plugin.PluginManager;
|
||||||
* 08/07/2015 - FernFlower & CFR Decompiler now launch in their own process with the 'slimjar' version.
|
* 08/07/2015 - FernFlower & CFR Decompiler now launch in their own process with the 'slimjar' version.
|
||||||
* 08/07/2015 - Switched the ClassViewer up slightly so it utilizes the event dispatch thread.
|
* 08/07/2015 - Switched the ClassViewer up slightly so it utilizes the event dispatch thread.
|
||||||
* 08/07/2015 - Fixed? CFIDE's Bytecode Decompiler on TableSwitchs
|
* 08/07/2015 - Fixed? CFIDE's Bytecode Decompiler on TableSwitchs
|
||||||
|
* 11/08/2015 - A bunch of changes have been implemented, thanks to all the developers who've helped <3.
|
||||||
*
|
*
|
||||||
* @author Konloch
|
* @author Konloch
|
||||||
*
|
*
|
||||||
|
@ -498,6 +504,17 @@ public class BytecodeViewer {
|
||||||
System.setSecurityManager(sm);
|
System.setSecurityManager(sm);
|
||||||
try {
|
try {
|
||||||
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
||||||
|
|
||||||
|
// HIGHDPI FIX
|
||||||
|
Font font = UIManager.getFont("Tree.font");
|
||||||
|
BufferedImage image = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
|
||||||
|
Graphics g = image.getGraphics();
|
||||||
|
int fontHeight = g.getFontMetrics(font).getHeight();
|
||||||
|
int rowHeight = (int) UIManager.get("Tree.rowHeight");
|
||||||
|
if (rowHeight < fontHeight) {
|
||||||
|
UIManager.getDefaults().put("Tree.rowHeight", fontHeight);
|
||||||
|
}
|
||||||
|
|
||||||
if(previewCopy && !CommandLineInput.containsCommand(args))
|
if(previewCopy && !CommandLineInput.containsCommand(args))
|
||||||
showMessage("WARNING: This is a preview/dev copy, you WON'T be alerted when "+version+" is actually out if you use this."+nl+
|
showMessage("WARNING: This is a preview/dev copy, you WON'T be alerted when "+version+" is actually out if you use this."+nl+
|
||||||
"Make sure to watch the repo: https://github.com/Konloch/bytecode-viewer for "+version+"'s release");
|
"Make sure to watch the repo: https://github.com/Konloch/bytecode-viewer for "+version+"'s release");
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
package the.bytecode.club.bytecodeviewer.gui;
|
||||||
|
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JTextField;
|
||||||
|
|
||||||
|
import the.bytecode.club.bytecodeviewer.Resources;
|
||||||
|
import the.bytecode.club.bytecodeviewer.plugin.PluginManager;
|
||||||
|
import the.bytecode.club.bytecodeviewer.plugin.preinstalled.AllatoriStringDecrypter;
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* 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 <http://www.gnu.org/licenses/>. *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The UI for replace strings plugin.
|
||||||
|
*
|
||||||
|
* @author Konloch
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class AllatoriStringDecryptionOptions extends JFrame {
|
||||||
|
|
||||||
|
public AllatoriStringDecryptionOptions() {
|
||||||
|
this.setIconImages(Resources.iconList);
|
||||||
|
setSize(new Dimension(250, 120));
|
||||||
|
setResizable(false);
|
||||||
|
setTitle("Allatori decrypter");
|
||||||
|
getContentPane().setLayout(null);
|
||||||
|
|
||||||
|
JButton btnNewButton = new JButton("Decrypt");
|
||||||
|
btnNewButton.setBounds(6, 56, 232, 23);
|
||||||
|
getContentPane().add(btnNewButton);
|
||||||
|
|
||||||
|
|
||||||
|
JLabel lblNewLabel = new JLabel("Class:");
|
||||||
|
lblNewLabel.setBounds(6, 20, 67, 14);
|
||||||
|
getContentPane().add(lblNewLabel);
|
||||||
|
|
||||||
|
textField = new JTextField();
|
||||||
|
textField.setToolTipText("* will search all classes");
|
||||||
|
textField.setText("*");
|
||||||
|
textField.setBounds(80, 17, 158, 20);
|
||||||
|
getContentPane().add(textField);
|
||||||
|
textField.setColumns(10);
|
||||||
|
|
||||||
|
|
||||||
|
btnNewButton.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
PluginManager.runPlugin(new AllatoriStringDecrypter(textField.getText()));
|
||||||
|
dispose();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.setLocationRelativeTo(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -2662514582647810868L;
|
||||||
|
private JTextField textField;
|
||||||
|
}
|
|
@ -79,6 +79,8 @@ public class FileNavigationPane extends VisibleComponent implements
|
||||||
JButton open = new JButton("+");
|
JButton open = new JButton("+");
|
||||||
JButton close = new JButton("-");
|
JButton close = new JButton("-");
|
||||||
|
|
||||||
|
boolean doNothing = false;
|
||||||
|
|
||||||
MyTreeNode treeRoot = new MyTreeNode("Loaded Files:");
|
MyTreeNode treeRoot = new MyTreeNode("Loaded Files:");
|
||||||
MyTree tree = new MyTree(treeRoot);
|
MyTree tree = new MyTree(treeRoot);
|
||||||
final String quickSearchText = "Quick file search (no file extension)";
|
final String quickSearchText = "Quick file search (no file extension)";
|
||||||
|
@ -195,16 +197,19 @@ public class FileNavigationPane extends VisibleComponent implements
|
||||||
this.close.addActionListener(new ActionListener() {
|
this.close.addActionListener(new ActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
doNothing = true;
|
||||||
final TreeNode root = (TreeNode) tree.getModel().getRoot();
|
final TreeNode root = (TreeNode) tree.getModel().getRoot();
|
||||||
expandAll(tree, new TreePath(root), false);
|
expandAll(tree, new TreePath(root), false);
|
||||||
tree.expandPath(new TreePath(root));
|
tree.expandPath(new TreePath(root));
|
||||||
|
doNothing = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
this.tree.addMouseListener(new MouseAdapter() {
|
this.tree.addMouseListener(new MouseAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void mousePressed(MouseEvent e) {
|
public void mousePressed(MouseEvent e) {
|
||||||
openPath(tree.getPathForLocation(e.getX(), e.getY()));
|
if(!doNothing)
|
||||||
|
openPath(tree.getPathForLocation(e.getX(), e.getY()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -215,7 +220,9 @@ public class FileNavigationPane extends VisibleComponent implements
|
||||||
cancel = false;
|
cancel = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
openPath(arg0.getPath());
|
|
||||||
|
if(!doNothing)
|
||||||
|
openPath(arg0.getPath());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,6 @@ import the.bytecode.club.bytecodeviewer.obfuscators.rename.RenameFields;
|
||||||
import the.bytecode.club.bytecodeviewer.obfuscators.rename.RenameMethods;
|
import the.bytecode.club.bytecodeviewer.obfuscators.rename.RenameMethods;
|
||||||
import the.bytecode.club.bytecodeviewer.plugin.PluginManager;
|
import the.bytecode.club.bytecodeviewer.plugin.PluginManager;
|
||||||
import the.bytecode.club.bytecodeviewer.plugin.preinstalled.CodeSequenceDiagram;
|
import the.bytecode.club.bytecodeviewer.plugin.preinstalled.CodeSequenceDiagram;
|
||||||
import the.bytecode.club.bytecodeviewer.plugin.preinstalled.AllatoriStringDecrypter;
|
|
||||||
import the.bytecode.club.bytecodeviewer.plugin.preinstalled.ShowAllStrings;
|
import the.bytecode.club.bytecodeviewer.plugin.preinstalled.ShowAllStrings;
|
||||||
import the.bytecode.club.bytecodeviewer.plugin.preinstalled.ShowMainMethods;
|
import the.bytecode.club.bytecodeviewer.plugin.preinstalled.ShowMainMethods;
|
||||||
import the.bytecode.club.bytecodeviewer.plugin.preinstalled.ZKMStringDecrypter;
|
import the.bytecode.club.bytecodeviewer.plugin.preinstalled.ZKMStringDecrypter;
|
||||||
|
@ -2034,7 +2033,7 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier {
|
||||||
BytecodeViewer.showMessage("First open a class, jar, zip, apk or dex file.");
|
BytecodeViewer.showMessage("First open a class, jar, zip, apk or dex file.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
new AllatoriStringDecrypterOptions().setVisible(true);
|
new AllatoriStringDecryptionOptions().setVisible(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
mntmNewMenuItem_1.addActionListener(new ActionListener() {
|
mntmNewMenuItem_1.addActionListener(new ActionListener() {
|
||||||
|
|
|
@ -65,7 +65,7 @@ public class ZStringArrayDecrypter extends Plugin {
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
boolean needsWarning = false;
|
boolean needsWarning = false;
|
||||||
try {
|
try {
|
||||||
for (Class<?> debug : the.bytecode.club.bytecodeviewer.api.BytecodeViewer.loadAllClassesIntoClassLoader()) {
|
for (Class<?> debug : the.bytecode.club.bytecodeviewer.api.BytecodeViewer.loadClassesIntoClassLoader(BytecodeViewer.getLoadedClasses())) {
|
||||||
try {
|
try {
|
||||||
Field[] fields = debug.getDeclaredFields();
|
Field[] fields = debug.getDeclaredFields();
|
||||||
for ( Field field : fields ) {
|
for ( Field field : fields ) {
|
||||||
|
|
Loading…
Reference in a new issue