2.9.7 release
07/02/2015 - Added ajustable font size. 07/05/2015 - Started working on the new Boot Screen. 07/06/2015 - Moved the font size to be under the view menu. 07/06/2015 - Fixed a bug with plugins not being able to grab the currently viewed class. 07/07/2015 - Started adding enjarify as an optional APK converter instead of Dex2Jar. 07/07/2015 - Finished the new Boot Screen 07/09/2015 - Fixed a process leak with krakatau decompiler. 07/09/2015 - Finished adding enjarify. 07/09/2015 - Supressed syntax exceptions due to JD-GUI. 07/09/2015 - Fixed refresh on non-refreshable resources. 07/09/2015 - Fixed opening a class and the name is so big, you cannot close because the [X] does not appear. 07/09/2015 - Added support for smaller screens for the boot screen. 07/16/2015 - Removed the FileFilter classes. 07/16/2015 - Updated the decompiler class to make more sense. 07/16/2015 - Started working on BCV CLI. 07/16/2015 - Finished BCV CLI.
This commit is contained in:
parent
fecc98f2f9
commit
3784629fbf
17 changed files with 72 additions and 61 deletions
Binary file not shown.
Binary file not shown.
21
README.txt
21
README.txt
|
@ -361,11 +361,28 @@ Changelog:
|
|||
04/21/2015 - Changed 'View Panes' to simply 'View'.
|
||||
--- 2.9.5 ---:
|
||||
05/01/2015 - Added 'pingback' for statistics (to track how many people globally use BCV)
|
||||
-----2.9.6-----:
|
||||
--- 2.9.6 ---:
|
||||
05/05/2015 - Fixed a typo in the about window
|
||||
05/28/2015 - Started importing JD-GUI Decompiler.
|
||||
05/28/2015 - Compile on refresh and compile on save are now enabled by default.
|
||||
05/28/2015 - Renamed the File>Save As options to be much more informative.
|
||||
06/24/2015 - Fixed a logic error with the Field & Method searchers.
|
||||
06/26/2015 - Updated Procyon & CFR to their latest versions.
|
||||
07/02/2015 - Added JD-GUI Decompiler. - Huge thanks to the guys behind JD-GUI! <3 (FIVE DECOMPILERS NOW LOL)
|
||||
07/02/2015 - Added JD-GUI Decompiler. - Huge thanks to the guys behind JD-GUI! <3 (FIVE DECOMPILERS NOW LOL)
|
||||
--- 2.9.7 ---:
|
||||
07/02/2015 - Added ajustable font size.
|
||||
07/05/2015 - Started working on the new Boot Screen.
|
||||
07/06/2015 - Moved the font size to be under the view menu.
|
||||
07/06/2015 - Fixed a bug with plugins not being able to grab the currently viewed class.
|
||||
07/07/2015 - Started adding enjarify as an optional APK converter instead of Dex2Jar.
|
||||
07/07/2015 - Finished the new Boot Screen
|
||||
07/09/2015 - Fixed a process leak with krakatau decompiler.
|
||||
07/09/2015 - Finished adding enjarify.
|
||||
07/09/2015 - Supressed syntax exceptions due to JD-GUI.
|
||||
07/09/2015 - Fixed refresh on non-refreshable resources.
|
||||
07/09/2015 - Fixed opening a class and the name is so big, you cannot close because the [X] does not appear.
|
||||
07/09/2015 - Added support for smaller screens for the boot screen.
|
||||
07/16/2015 - Removed the FileFilter classes.
|
||||
07/16/2015 - Updated the decompiler class to make more sense.
|
||||
07/16/2015 - Started working on BCV CLI.
|
||||
07/16/2015 - Finished BCV CLI.
|
Binary file not shown.
BIN
libs/apktool_2.0.1_obf.jar
Normal file
BIN
libs/apktool_2.0.1_obf.jar
Normal file
Binary file not shown.
BIN
libs/fernflower2015-1.jar
Normal file
BIN
libs/fernflower2015-1.jar
Normal file
Binary file not shown.
Binary file not shown.
|
@ -86,9 +86,10 @@ import the.bytecode.club.bytecodeviewer.plugin.PluginManager;
|
|||
* add stackmapframes to bytecode decompiler
|
||||
* add stackmapframes remover?
|
||||
* make ez-injection plugin console show all sys.out calls
|
||||
* Command line parameter to save source
|
||||
* add JEB decompiler optionally, requires them to add jeb library jar externally and disable update check
|
||||
* add decompile as zip for krakatau-bytecode and smali for CLI
|
||||
* add decompile as zip for krakatau-bytecode, jd-gui and smali for CLI
|
||||
* fix hook inject for EZ-Injection
|
||||
* fix classfile searcher
|
||||
*
|
||||
* -----2.9.7-----:
|
||||
* 07/02/2015 - Added ajustable font size.
|
||||
|
@ -116,7 +117,7 @@ public class BytecodeViewer {
|
|||
|
||||
/*per version*/
|
||||
public static String version = "2.9.7";
|
||||
public static boolean previewCopy = true;
|
||||
public static boolean previewCopy = false;
|
||||
/*the rest*/
|
||||
public static MainViewerGUI viewer = null;
|
||||
public static ClassNodeLoader loader = new ClassNodeLoader(); //might be insecure due to assholes targeting BCV, however that's highly unlikely.
|
||||
|
@ -145,8 +146,7 @@ public class BytecodeViewer {
|
|||
public static boolean runningObfuscation = false;
|
||||
private static long start = System.currentTimeMillis();
|
||||
public static String lastDirectory = "";
|
||||
public static ArrayList<Process> krakatau = new ArrayList<Process>();
|
||||
public static ArrayList<Process> enjarify = new ArrayList<Process>();
|
||||
public static ArrayList<Process> createdProcesses = new ArrayList<Process>();
|
||||
public static Refactorer refactorer = new Refactorer();
|
||||
public static boolean pingback = false;
|
||||
public static boolean deleteForiegnLibraries = true;
|
||||
|
@ -396,10 +396,8 @@ public class BytecodeViewer {
|
|||
Runtime.getRuntime().addShutdownHook(new Thread() {
|
||||
@Override
|
||||
public void run() {
|
||||
for(Process krakatau : krakatau)
|
||||
krakatau.destroy();
|
||||
for(Process enjarify : enjarify)
|
||||
enjarify.destroy();
|
||||
for(Process proc : createdProcesses)
|
||||
proc.destroy();
|
||||
Settings.saveGUI();
|
||||
cleanup();
|
||||
}
|
||||
|
|
|
@ -82,6 +82,7 @@ public class CommandLineInput {
|
|||
"-decompiler <decompiler> Selects the decompiler, procyon by default",
|
||||
"-i <input file> Selects the input file",
|
||||
"-o <output file> Selects the output file",
|
||||
"-t <target classname> Must either be the fully qualified classname or \"all\" to decompile all as zip",
|
||||
"-nowait Doesn't wait for the user to read the CLI messages"
|
||||
})
|
||||
System.out.println(s);
|
||||
|
@ -302,7 +303,8 @@ public class CommandLineInput {
|
|||
Thread.sleep(5 * 1000);
|
||||
|
||||
if(target.equalsIgnoreCase("all")) {
|
||||
Decompiler.jdgui.decompileToZip(output.getAbsolutePath());
|
||||
System.out.println("Coming soon.");
|
||||
//Decompiler.jdgui.decompileToZip(output.getAbsolutePath());
|
||||
} else {
|
||||
try {
|
||||
ClassNode cn = BytecodeViewer.getClassNode(target);
|
||||
|
|
|
@ -40,7 +40,7 @@ public class Enjarify {
|
|||
pb.directory(new File(BytecodeViewer.enjarifyWorkingDirectory));
|
||||
|
||||
Process process = pb.start();
|
||||
BytecodeViewer.enjarify.add(process);
|
||||
BytecodeViewer.createdProcesses.add(process);
|
||||
|
||||
//Read out dir output
|
||||
InputStream is = process.getInputStream();
|
||||
|
@ -96,7 +96,7 @@ public class Enjarify {
|
|||
|
||||
|
||||
Process process = pb.start();
|
||||
BytecodeViewer.enjarify.add(process);
|
||||
BytecodeViewer.createdProcesses.add(process);
|
||||
|
||||
//Read out dir output
|
||||
InputStream is = process.getInputStream();
|
||||
|
|
|
@ -54,7 +54,7 @@ public class KrakatauAssembler extends Compiler {
|
|||
);
|
||||
|
||||
Process process = pb.start();
|
||||
BytecodeViewer.krakatau.add(process);
|
||||
BytecodeViewer.createdProcesses.add(process);
|
||||
|
||||
//Read out dir output
|
||||
InputStream is = process.getInputStream();
|
||||
|
|
|
@ -65,7 +65,7 @@ public class KrakatauDecompiler extends Decompiler {
|
|||
);
|
||||
|
||||
Process process = pb.start();
|
||||
BytecodeViewer.krakatau.add(process);
|
||||
BytecodeViewer.createdProcesses.add(process);
|
||||
|
||||
//Read out dir output
|
||||
InputStream is = process.getInputStream();
|
||||
|
@ -138,7 +138,7 @@ public class KrakatauDecompiler extends Decompiler {
|
|||
);
|
||||
|
||||
Process process = pb.start();
|
||||
BytecodeViewer.krakatau.add(process);
|
||||
BytecodeViewer.createdProcesses.add(process);
|
||||
|
||||
//Read out dir output
|
||||
InputStream is = process.getInputStream();
|
||||
|
|
|
@ -51,7 +51,7 @@ public class KrakatauDisassembler extends Decompiler {
|
|||
);
|
||||
|
||||
Process process = pb.start();
|
||||
BytecodeViewer.krakatau.add(process);
|
||||
BytecodeViewer.createdProcesses.add(process);
|
||||
|
||||
//Read out dir output
|
||||
InputStream is = process.getInputStream();
|
||||
|
@ -119,7 +119,7 @@ public class KrakatauDisassembler extends Decompiler {
|
|||
);
|
||||
|
||||
Process process = pb.start();
|
||||
BytecodeViewer.krakatau.add(process);
|
||||
BytecodeViewer.createdProcesses.add(process);
|
||||
|
||||
//Read out dir output
|
||||
InputStream is = process.getInputStream();
|
||||
|
|
|
@ -12,6 +12,7 @@ import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
|||
import the.bytecode.club.bytecodeviewer.Resources;
|
||||
|
||||
import java.awt.Color;
|
||||
import javax.swing.JScrollPane;
|
||||
|
||||
/**
|
||||
* The about frame.
|
||||
|
@ -21,17 +22,19 @@ import java.awt.Color;
|
|||
*/
|
||||
|
||||
public class AboutWindow extends JFrame {
|
||||
JTextArea txtrBytecodeViewerIs = new JTextArea();
|
||||
JTextArea textArea = new JTextArea();
|
||||
public AboutWindow() {
|
||||
this.setIconImages(Resources.iconList);
|
||||
setSize(Toolkit.getDefaultToolkit().getScreenSize());
|
||||
setType(Type.UTILITY);
|
||||
setTitle("Bytecode Viewer - About - https://bytecodeviewer.com | https://the.bytecode.club");
|
||||
getContentPane().setLayout(new CardLayout(0, 0));
|
||||
|
||||
txtrBytecodeViewerIs.setDisabledTextColor(Color.BLACK);
|
||||
txtrBytecodeViewerIs.setWrapStyleWord(true);
|
||||
getContentPane().add(txtrBytecodeViewerIs, "name_140466526081695");txtrBytecodeViewerIs.setEnabled(false);
|
||||
JScrollPane scrollPane = new JScrollPane();
|
||||
getContentPane().add(scrollPane, "name_322439757638784");
|
||||
textArea.setWrapStyleWord(true);
|
||||
textArea.setEnabled(false);
|
||||
textArea.setDisabledTextColor(Color.BLACK);
|
||||
scrollPane.setViewportView(textArea);
|
||||
this.setResizable(false);
|
||||
this.setLocationRelativeTo(null);
|
||||
}
|
||||
|
@ -39,28 +42,35 @@ public class AboutWindow extends JFrame {
|
|||
@Override
|
||||
public void setVisible(boolean b) {
|
||||
super.setVisible(b);
|
||||
txtrBytecodeViewerIs.setFont(new Font(Font.MONOSPACED, Font.PLAIN, (int)BytecodeViewer.viewer.fontSpinner.getValue()));
|
||||
txtrBytecodeViewerIs
|
||||
.setText("Bytecode Viewer "+BytecodeViewer.version+" is an open source program developed and maintained by Konloch (konloch@gmail.com)\r\n"+
|
||||
textArea.setFont(new Font(Font.MONOSPACED, Font.PLAIN, (int)BytecodeViewer.viewer.fontSpinner.getValue()));
|
||||
textArea.setText("Bytecode Viewer "+BytecodeViewer.version+" is an open source program developed and maintained by Konloch (konloch@gmail.com)\r\n"+
|
||||
"100% free and open sourced licensed under GPL v3 CopyLeft\r\n\r\n"+
|
||||
"Settings:"+BytecodeViewer.nl+
|
||||
"BCV Dir: " + BytecodeViewer.getBCVDirectory()+BytecodeViewer.nl+
|
||||
"Python 2.7 (or PyPy): " + BytecodeViewer.python+BytecodeViewer.nl+
|
||||
"Python 3.0 (or PyPy): " + BytecodeViewer.python3+BytecodeViewer.nl+
|
||||
"RT.jar:" + BytecodeViewer.rt+BytecodeViewer.nl+
|
||||
"Optional Lib: " + BytecodeViewer.library+BytecodeViewer.nl+
|
||||
"BCV Krakatau: v" + BytecodeViewer.krakatauVersion+BytecodeViewer.nl+
|
||||
"Krakatau Dir: " + BytecodeViewer.krakatauWorkingDirectory+BytecodeViewer.nl+
|
||||
"BCV Enjarify: v" + BytecodeViewer.enjarifyVersion+BytecodeViewer.nl+
|
||||
"Enjarify Dir: " + BytecodeViewer.enjarifyWorkingDirectory+BytecodeViewer.nl+BytecodeViewer.nl+
|
||||
" BCV Dir: " + BytecodeViewer.getBCVDirectory()+BytecodeViewer.nl+
|
||||
" Python 2.7 (or PyPy): " + BytecodeViewer.python+BytecodeViewer.nl+
|
||||
" Python 3.X (or PyPy): " + BytecodeViewer.python3+BytecodeViewer.nl+
|
||||
" RT.jar:" + BytecodeViewer.rt+BytecodeViewer.nl+
|
||||
" Optional Lib: " + BytecodeViewer.library+BytecodeViewer.nl+
|
||||
" BCV Krakatau: v" + BytecodeViewer.krakatauVersion+BytecodeViewer.nl+
|
||||
" Krakatau Dir: " + BytecodeViewer.krakatauWorkingDirectory+BytecodeViewer.nl+
|
||||
" BCV Enjarify: v" + BytecodeViewer.enjarifyVersion+BytecodeViewer.nl+
|
||||
" Enjarify Dir: " + BytecodeViewer.enjarifyWorkingDirectory+BytecodeViewer.nl+BytecodeViewer.nl+
|
||||
"Command Line Input:"+BytecodeViewer.nl+
|
||||
" -help Displays the help menu"+BytecodeViewer.nl+
|
||||
" -list Displays the available decompilers"+BytecodeViewer.nl+
|
||||
" -decompiler <decompiler> Selects the decompiler, procyon by default"+BytecodeViewer.nl+
|
||||
" -i <input file> Selects the input file (Jar, Class, APK, ZIP, DEX all work automatically)"+BytecodeViewer.nl+
|
||||
" -o <output file> Selects the output file (Java or Java-Bytecode)"+BytecodeViewer.nl+
|
||||
" -t <target classname> Must either be the fully qualified classname or \"all\" to decompile all as zip"+BytecodeViewer.nl+
|
||||
" -nowait Doesn't wait for the user to read the CLI messages"+BytecodeViewer.nl+BytecodeViewer.nl+
|
||||
"Keybinds:"+BytecodeViewer.nl+
|
||||
"CTRL + O: Open/add new jar/class/apk"+BytecodeViewer.nl+
|
||||
"CTLR + N: Reset the workspace"+BytecodeViewer.nl+
|
||||
"CTRL + W: Closes the currently opened tab"+BytecodeViewer.nl+
|
||||
"CTRL + T: Compile"+BytecodeViewer.nl+
|
||||
"CTRL + S: Save classes as zip"+BytecodeViewer.nl+
|
||||
"CTRL + R: Run (EZ-Inject) - dynamically load the classes and invoke a main class"+
|
||||
"\r\n\r\nCode from various projects has been used, including but not limited to:\r\n J-RET by WaterWolf\r\n JHexPane by Sam Koivu\r\n RSynaxPane by Robert Futrell\r\n Commons IO by Apache\r\n ASM by OW2\r\n FernFlower by Stiver\r\n Procyon by Mstrobel\r\n CFR by Lee Benfield\r\n CFIDE by Bibl\r\n Smali by JesusFreke\r\n Dex2Jar by pxb1..?\r\n Krakatau by Storyyeller\r\n JD-GUI + JD-Core by The Java-Decompiler Team\r\n Enjarify by Storyyeller\r\n\r\nIf you're interested in Java Reverse Engineering, join The Bytecode Club\r\nhttps://the.bytecode.club");
|
||||
" CTRL + O: Open/add new jar/class/apk"+BytecodeViewer.nl+
|
||||
" CTLR + N: Reset the workspace"+BytecodeViewer.nl+
|
||||
" CTRL + W: Closes the currently opened tab"+BytecodeViewer.nl+
|
||||
" CTRL + T: Compile"+BytecodeViewer.nl+
|
||||
" CTRL + S: Save classes as zip"+BytecodeViewer.nl+
|
||||
" CTRL + R: Run (EZ-Inject) - dynamically load the classes and invoke a main class"+
|
||||
"\r\n\r\nCode from various projects has been used, including but not limited to:\r\n J-RET by WaterWolf\r\n JHexPane by Sam Koivu\r\n RSynaxPane by Robert Futrell\r\n Commons IO by Apache\r\n ASM by OW2\r\n FernFlower by Stiver\r\n Procyon by Mstrobel\r\n CFR by Lee Benfield\r\n CFIDE by Bibl\r\n Smali by JesusFreke\r\n Dex2Jar by pxb1..?\r\n Krakatau by Storyyeller\r\n JD-GUI + JD-Core by The Java-Decompiler Team\r\n Enjarify by Storyyeller\r\n\r\nIf you're interested in Java Reverse Engineering, join The Bytecode Club\r\nhttps://the.bytecode.club");
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -398,7 +398,7 @@ public class FileNavigationPane extends VisibleComponent implements
|
|||
g.setColor(new Color(0, 0, 0, 100));
|
||||
g.fillRect(0, 0, getWidth(), getHeight());
|
||||
g.setColor(Color.white);
|
||||
String s = "Drag class/jar here";
|
||||
String s = "Drag class/jar/zip/APK/DEX here";
|
||||
g.drawString(s,
|
||||
((int) ((getWidth() / 2) - (m.getWidth(s) / 2))),
|
||||
getHeight() / 2);
|
||||
|
|
|
@ -80,22 +80,6 @@ public final class PluginManager {
|
|||
if(p != null) {
|
||||
runPlugin(p);
|
||||
}
|
||||
|
||||
/*if (f.getName().endsWith(".java")) {
|
||||
p = loadJavaScript(f);
|
||||
}
|
||||
if (f.getName().endsWith(".gy") || f.getName().endsWith(".groovy")) {
|
||||
p = loadGroovyScript(f);
|
||||
}
|
||||
if (f.getName().endsWith(".py") || f.getName().endsWith(".python")) {
|
||||
p = loadPythonScript(f);
|
||||
}
|
||||
if (f.getName().endsWith(".rb") || f.getName().endsWith(".ruby")) {
|
||||
p = loadRubyScript(f);
|
||||
}
|
||||
if (p != null) {
|
||||
runPlugin(p);
|
||||
}*/
|
||||
}
|
||||
|
||||
public static void register(String name, PluginLaunchStrategy strat) {
|
||||
|
@ -122,7 +106,7 @@ public final class PluginManager {
|
|||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Plugins";
|
||||
return "BCV Plugins";
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue