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.
19
README.txt
19
README.txt
|
@ -361,7 +361,7 @@ Changelog:
|
||||||
04/21/2015 - Changed 'View Panes' to simply 'View'.
|
04/21/2015 - Changed 'View Panes' to simply 'View'.
|
||||||
--- 2.9.5 ---:
|
--- 2.9.5 ---:
|
||||||
05/01/2015 - Added 'pingback' for statistics (to track how many people globally use BCV)
|
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/05/2015 - Fixed a typo in the about window
|
||||||
05/28/2015 - Started importing JD-GUI Decompiler.
|
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 - Compile on refresh and compile on save are now enabled by default.
|
||||||
|
@ -369,3 +369,20 @@ Changelog:
|
||||||
06/24/2015 - Fixed a logic error with the Field & Method searchers.
|
06/24/2015 - Fixed a logic error with the Field & Method searchers.
|
||||||
06/26/2015 - Updated Procyon & CFR to their latest versions.
|
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 to bytecode decompiler
|
||||||
* add stackmapframes remover?
|
* add stackmapframes remover?
|
||||||
* make ez-injection plugin console show all sys.out calls
|
* 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 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-----:
|
* -----2.9.7-----:
|
||||||
* 07/02/2015 - Added ajustable font size.
|
* 07/02/2015 - Added ajustable font size.
|
||||||
|
@ -116,7 +117,7 @@ public class BytecodeViewer {
|
||||||
|
|
||||||
/*per version*/
|
/*per version*/
|
||||||
public static String version = "2.9.7";
|
public static String version = "2.9.7";
|
||||||
public static boolean previewCopy = true;
|
public static boolean previewCopy = false;
|
||||||
/*the rest*/
|
/*the rest*/
|
||||||
public static MainViewerGUI viewer = null;
|
public static MainViewerGUI viewer = null;
|
||||||
public static ClassNodeLoader loader = new ClassNodeLoader(); //might be insecure due to assholes targeting BCV, however that's highly unlikely.
|
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;
|
public static boolean runningObfuscation = false;
|
||||||
private static long start = System.currentTimeMillis();
|
private static long start = System.currentTimeMillis();
|
||||||
public static String lastDirectory = "";
|
public static String lastDirectory = "";
|
||||||
public static ArrayList<Process> krakatau = new ArrayList<Process>();
|
public static ArrayList<Process> createdProcesses = new ArrayList<Process>();
|
||||||
public static ArrayList<Process> enjarify = new ArrayList<Process>();
|
|
||||||
public static Refactorer refactorer = new Refactorer();
|
public static Refactorer refactorer = new Refactorer();
|
||||||
public static boolean pingback = false;
|
public static boolean pingback = false;
|
||||||
public static boolean deleteForiegnLibraries = true;
|
public static boolean deleteForiegnLibraries = true;
|
||||||
|
@ -396,10 +396,8 @@ public class BytecodeViewer {
|
||||||
Runtime.getRuntime().addShutdownHook(new Thread() {
|
Runtime.getRuntime().addShutdownHook(new Thread() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
for(Process krakatau : krakatau)
|
for(Process proc : createdProcesses)
|
||||||
krakatau.destroy();
|
proc.destroy();
|
||||||
for(Process enjarify : enjarify)
|
|
||||||
enjarify.destroy();
|
|
||||||
Settings.saveGUI();
|
Settings.saveGUI();
|
||||||
cleanup();
|
cleanup();
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,6 +82,7 @@ public class CommandLineInput {
|
||||||
"-decompiler <decompiler> Selects the decompiler, procyon by default",
|
"-decompiler <decompiler> Selects the decompiler, procyon by default",
|
||||||
"-i <input file> Selects the input file",
|
"-i <input file> Selects the input file",
|
||||||
"-o <output file> Selects the output 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"
|
"-nowait Doesn't wait for the user to read the CLI messages"
|
||||||
})
|
})
|
||||||
System.out.println(s);
|
System.out.println(s);
|
||||||
|
@ -302,7 +303,8 @@ public class CommandLineInput {
|
||||||
Thread.sleep(5 * 1000);
|
Thread.sleep(5 * 1000);
|
||||||
|
|
||||||
if(target.equalsIgnoreCase("all")) {
|
if(target.equalsIgnoreCase("all")) {
|
||||||
Decompiler.jdgui.decompileToZip(output.getAbsolutePath());
|
System.out.println("Coming soon.");
|
||||||
|
//Decompiler.jdgui.decompileToZip(output.getAbsolutePath());
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
ClassNode cn = BytecodeViewer.getClassNode(target);
|
ClassNode cn = BytecodeViewer.getClassNode(target);
|
||||||
|
|
|
@ -40,7 +40,7 @@ public class Enjarify {
|
||||||
pb.directory(new File(BytecodeViewer.enjarifyWorkingDirectory));
|
pb.directory(new File(BytecodeViewer.enjarifyWorkingDirectory));
|
||||||
|
|
||||||
Process process = pb.start();
|
Process process = pb.start();
|
||||||
BytecodeViewer.enjarify.add(process);
|
BytecodeViewer.createdProcesses.add(process);
|
||||||
|
|
||||||
//Read out dir output
|
//Read out dir output
|
||||||
InputStream is = process.getInputStream();
|
InputStream is = process.getInputStream();
|
||||||
|
@ -96,7 +96,7 @@ public class Enjarify {
|
||||||
|
|
||||||
|
|
||||||
Process process = pb.start();
|
Process process = pb.start();
|
||||||
BytecodeViewer.enjarify.add(process);
|
BytecodeViewer.createdProcesses.add(process);
|
||||||
|
|
||||||
//Read out dir output
|
//Read out dir output
|
||||||
InputStream is = process.getInputStream();
|
InputStream is = process.getInputStream();
|
||||||
|
|
|
@ -54,7 +54,7 @@ public class KrakatauAssembler extends Compiler {
|
||||||
);
|
);
|
||||||
|
|
||||||
Process process = pb.start();
|
Process process = pb.start();
|
||||||
BytecodeViewer.krakatau.add(process);
|
BytecodeViewer.createdProcesses.add(process);
|
||||||
|
|
||||||
//Read out dir output
|
//Read out dir output
|
||||||
InputStream is = process.getInputStream();
|
InputStream is = process.getInputStream();
|
||||||
|
|
|
@ -65,7 +65,7 @@ public class KrakatauDecompiler extends Decompiler {
|
||||||
);
|
);
|
||||||
|
|
||||||
Process process = pb.start();
|
Process process = pb.start();
|
||||||
BytecodeViewer.krakatau.add(process);
|
BytecodeViewer.createdProcesses.add(process);
|
||||||
|
|
||||||
//Read out dir output
|
//Read out dir output
|
||||||
InputStream is = process.getInputStream();
|
InputStream is = process.getInputStream();
|
||||||
|
@ -138,7 +138,7 @@ public class KrakatauDecompiler extends Decompiler {
|
||||||
);
|
);
|
||||||
|
|
||||||
Process process = pb.start();
|
Process process = pb.start();
|
||||||
BytecodeViewer.krakatau.add(process);
|
BytecodeViewer.createdProcesses.add(process);
|
||||||
|
|
||||||
//Read out dir output
|
//Read out dir output
|
||||||
InputStream is = process.getInputStream();
|
InputStream is = process.getInputStream();
|
||||||
|
|
|
@ -51,7 +51,7 @@ public class KrakatauDisassembler extends Decompiler {
|
||||||
);
|
);
|
||||||
|
|
||||||
Process process = pb.start();
|
Process process = pb.start();
|
||||||
BytecodeViewer.krakatau.add(process);
|
BytecodeViewer.createdProcesses.add(process);
|
||||||
|
|
||||||
//Read out dir output
|
//Read out dir output
|
||||||
InputStream is = process.getInputStream();
|
InputStream is = process.getInputStream();
|
||||||
|
@ -119,7 +119,7 @@ public class KrakatauDisassembler extends Decompiler {
|
||||||
);
|
);
|
||||||
|
|
||||||
Process process = pb.start();
|
Process process = pb.start();
|
||||||
BytecodeViewer.krakatau.add(process);
|
BytecodeViewer.createdProcesses.add(process);
|
||||||
|
|
||||||
//Read out dir output
|
//Read out dir output
|
||||||
InputStream is = process.getInputStream();
|
InputStream is = process.getInputStream();
|
||||||
|
|
|
@ -12,6 +12,7 @@ import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
||||||
import the.bytecode.club.bytecodeviewer.Resources;
|
import the.bytecode.club.bytecodeviewer.Resources;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
import javax.swing.JScrollPane;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The about frame.
|
* The about frame.
|
||||||
|
@ -21,17 +22,19 @@ import java.awt.Color;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class AboutWindow extends JFrame {
|
public class AboutWindow extends JFrame {
|
||||||
JTextArea txtrBytecodeViewerIs = new JTextArea();
|
JTextArea textArea = new JTextArea();
|
||||||
public AboutWindow() {
|
public AboutWindow() {
|
||||||
this.setIconImages(Resources.iconList);
|
this.setIconImages(Resources.iconList);
|
||||||
setSize(Toolkit.getDefaultToolkit().getScreenSize());
|
setSize(Toolkit.getDefaultToolkit().getScreenSize());
|
||||||
setType(Type.UTILITY);
|
setType(Type.UTILITY);
|
||||||
setTitle("Bytecode Viewer - About - https://bytecodeviewer.com | https://the.bytecode.club");
|
setTitle("Bytecode Viewer - About - https://bytecodeviewer.com | https://the.bytecode.club");
|
||||||
getContentPane().setLayout(new CardLayout(0, 0));
|
getContentPane().setLayout(new CardLayout(0, 0));
|
||||||
|
JScrollPane scrollPane = new JScrollPane();
|
||||||
txtrBytecodeViewerIs.setDisabledTextColor(Color.BLACK);
|
getContentPane().add(scrollPane, "name_322439757638784");
|
||||||
txtrBytecodeViewerIs.setWrapStyleWord(true);
|
textArea.setWrapStyleWord(true);
|
||||||
getContentPane().add(txtrBytecodeViewerIs, "name_140466526081695");txtrBytecodeViewerIs.setEnabled(false);
|
textArea.setEnabled(false);
|
||||||
|
textArea.setDisabledTextColor(Color.BLACK);
|
||||||
|
scrollPane.setViewportView(textArea);
|
||||||
this.setResizable(false);
|
this.setResizable(false);
|
||||||
this.setLocationRelativeTo(null);
|
this.setLocationRelativeTo(null);
|
||||||
}
|
}
|
||||||
|
@ -39,20 +42,27 @@ public class AboutWindow extends JFrame {
|
||||||
@Override
|
@Override
|
||||||
public void setVisible(boolean b) {
|
public void setVisible(boolean b) {
|
||||||
super.setVisible(b);
|
super.setVisible(b);
|
||||||
txtrBytecodeViewerIs.setFont(new Font(Font.MONOSPACED, Font.PLAIN, (int)BytecodeViewer.viewer.fontSpinner.getValue()));
|
textArea.setFont(new Font(Font.MONOSPACED, Font.PLAIN, (int)BytecodeViewer.viewer.fontSpinner.getValue()));
|
||||||
txtrBytecodeViewerIs
|
textArea.setText("Bytecode Viewer "+BytecodeViewer.version+" is an open source program developed and maintained by Konloch (konloch@gmail.com)\r\n"+
|
||||||
.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"+
|
"100% free and open sourced licensed under GPL v3 CopyLeft\r\n\r\n"+
|
||||||
"Settings:"+BytecodeViewer.nl+
|
"Settings:"+BytecodeViewer.nl+
|
||||||
" BCV Dir: " + BytecodeViewer.getBCVDirectory()+BytecodeViewer.nl+
|
" BCV Dir: " + BytecodeViewer.getBCVDirectory()+BytecodeViewer.nl+
|
||||||
" Python 2.7 (or PyPy): " + BytecodeViewer.python+BytecodeViewer.nl+
|
" Python 2.7 (or PyPy): " + BytecodeViewer.python+BytecodeViewer.nl+
|
||||||
"Python 3.0 (or PyPy): " + BytecodeViewer.python3+BytecodeViewer.nl+
|
" Python 3.X (or PyPy): " + BytecodeViewer.python3+BytecodeViewer.nl+
|
||||||
" RT.jar:" + BytecodeViewer.rt+BytecodeViewer.nl+
|
" RT.jar:" + BytecodeViewer.rt+BytecodeViewer.nl+
|
||||||
" Optional Lib: " + BytecodeViewer.library+BytecodeViewer.nl+
|
" Optional Lib: " + BytecodeViewer.library+BytecodeViewer.nl+
|
||||||
" BCV Krakatau: v" + BytecodeViewer.krakatauVersion+BytecodeViewer.nl+
|
" BCV Krakatau: v" + BytecodeViewer.krakatauVersion+BytecodeViewer.nl+
|
||||||
" Krakatau Dir: " + BytecodeViewer.krakatauWorkingDirectory+BytecodeViewer.nl+
|
" Krakatau Dir: " + BytecodeViewer.krakatauWorkingDirectory+BytecodeViewer.nl+
|
||||||
" BCV Enjarify: v" + BytecodeViewer.enjarifyVersion+BytecodeViewer.nl+
|
" BCV Enjarify: v" + BytecodeViewer.enjarifyVersion+BytecodeViewer.nl+
|
||||||
" Enjarify Dir: " + BytecodeViewer.enjarifyWorkingDirectory+BytecodeViewer.nl+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+
|
"Keybinds:"+BytecodeViewer.nl+
|
||||||
" CTRL + O: Open/add new jar/class/apk"+BytecodeViewer.nl+
|
" CTRL + O: Open/add new jar/class/apk"+BytecodeViewer.nl+
|
||||||
" CTLR + N: Reset the workspace"+BytecodeViewer.nl+
|
" CTLR + N: Reset the workspace"+BytecodeViewer.nl+
|
||||||
|
|
|
@ -398,7 +398,7 @@ public class FileNavigationPane extends VisibleComponent implements
|
||||||
g.setColor(new Color(0, 0, 0, 100));
|
g.setColor(new Color(0, 0, 0, 100));
|
||||||
g.fillRect(0, 0, getWidth(), getHeight());
|
g.fillRect(0, 0, getWidth(), getHeight());
|
||||||
g.setColor(Color.white);
|
g.setColor(Color.white);
|
||||||
String s = "Drag class/jar here";
|
String s = "Drag class/jar/zip/APK/DEX here";
|
||||||
g.drawString(s,
|
g.drawString(s,
|
||||||
((int) ((getWidth() / 2) - (m.getWidth(s) / 2))),
|
((int) ((getWidth() / 2) - (m.getWidth(s) / 2))),
|
||||||
getHeight() / 2);
|
getHeight() / 2);
|
||||||
|
|
|
@ -80,22 +80,6 @@ public final class PluginManager {
|
||||||
if(p != null) {
|
if(p != null) {
|
||||||
runPlugin(p);
|
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) {
|
public static void register(String name, PluginLaunchStrategy strat) {
|
||||||
|
@ -122,7 +106,7 @@ public final class PluginManager {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
return "Plugins";
|
return "BCV Plugins";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue