Merge/resolving conflicts.
This commit is contained in:
commit
1f92ccf4ab
38
pom.xml
38
pom.xml
|
@ -20,33 +20,33 @@
|
|||
<byteanalysis.version>1.0bcv</byteanalysis.version>
|
||||
<cfr.version>0.152</cfr.version>
|
||||
<cloning.version>1.9.12</cloning.version>
|
||||
<commons-cli.version>1.6.0</commons-cli.version>
|
||||
<commons-codec.version>1.16.1</commons-codec.version>
|
||||
<commons-cli.version>1.9.0</commons-cli.version>
|
||||
<commons-codec.version>1.17.1</commons-codec.version>
|
||||
<commons-compiler.version>3.1.12</commons-compiler.version>
|
||||
<commons-compress.version>1.26.1</commons-compress.version>
|
||||
<commons-compress.version>1.27.1</commons-compress.version>
|
||||
<commons-io.version>2.16.1</commons-io.version>
|
||||
<commons-lang3.version>3.14.0</commons-lang3.version>
|
||||
<commons-text.version>1.11.0</commons-text.version>
|
||||
<commons-lang3.version>3.17.0</commons-lang3.version>
|
||||
<commons-text.version>1.12.0</commons-text.version>
|
||||
<darklaf.version>3.0.2</darklaf.version>
|
||||
<darklaf-extensions-rsta.version>0.4.1</darklaf-extensions-rsta.version>
|
||||
<decompiler-fernflower.version>6.3.7.Final</decompiler-fernflower.version>
|
||||
<dex2jar.version>2.4.17</dex2jar.version>
|
||||
<decompiler-fernflower.version>6.3.9.Final</decompiler-fernflower.version>
|
||||
<dex2jar.version>2.4.22</dex2jar.version>
|
||||
<fernflower.version>e0d44f4</fernflower.version>
|
||||
<gson.version>2.10.1</gson.version>
|
||||
<guava.version>33.1.0-jre</guava.version>
|
||||
<gson.version>2.11.0</gson.version>
|
||||
<guava.version>33.3.0-jre</guava.version>
|
||||
<httprequest.version>2.2.0</httprequest.version>
|
||||
<imgscalr-lib.version>4.2</imgscalr-lib.version>
|
||||
<jadx.version>1.4.7</jadx.version>
|
||||
<jadx.version>1.4.7</jadx.version> <!-- Newer versions require Java 11+ -->
|
||||
<jd-gui.version>1.6.6bcv</jd-gui.version>
|
||||
<jgraphx.version>3.4.1.3</jgraphx.version>
|
||||
<js.version>21.2.0</js.version>
|
||||
<objenesis.version>3.3</objenesis.version>
|
||||
<objenesis.version>3.4</objenesis.version>
|
||||
<binary-data.version>0.2.1</binary-data.version>
|
||||
<procyon.version>0.6.0</procyon.version>
|
||||
<rsyntaxtextarea.version>3.4.0</rsyntaxtextarea.version>
|
||||
<rsyntaxtextarea.version>3.5.1</rsyntaxtextarea.version>
|
||||
<semantic-version.version>2.1.1</semantic-version.version>
|
||||
<slf4j.version>2.0.12</slf4j.version>
|
||||
<smali.version>3.0.5</smali.version>
|
||||
<slf4j.version>2.0.16</slf4j.version>
|
||||
<smali.version>3.0.8</smali.version>
|
||||
<safeyaml.version>1.34.1</safeyaml.version>
|
||||
<treelayout.version>1.0.3</treelayout.version>
|
||||
<webp-imageio.version>a8f700b</webp-imageio.version>
|
||||
|
@ -372,6 +372,16 @@
|
|||
<artifactId>org.abego.treelayout.core</artifactId>
|
||||
<version>${treelayout.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.javaparser</groupId>
|
||||
<artifactId>javaparser-core</artifactId>
|
||||
<version>3.26.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.javaparser</groupId>
|
||||
<artifactId>javaparser-symbol-solver-core</artifactId>
|
||||
<version>3.26.1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- TODO Re-add for Graal.JS support -->
|
||||
<!--<dependency>
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
|
@ -46,24 +64,6 @@ import static the.bytecode.club.bytecodeviewer.Constants.FAT_JAR;
|
|||
import static the.bytecode.club.bytecodeviewer.Constants.VERSION;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.tempDirectory;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* A lightweight Java Reverse Engineering suite, developed by Konloch - http://konloch.me
|
||||
*
|
||||
|
@ -168,13 +168,13 @@ public class BytecodeViewer
|
|||
{
|
||||
launchArgs = args;
|
||||
|
||||
//welcome message
|
||||
//CLI startup banner
|
||||
System.out.print("Bytecode Viewer " + VERSION);
|
||||
|
||||
if (FAT_JAR)
|
||||
System.out.print(" [Fat Jar]");
|
||||
|
||||
System.out.println(" - Created by @Konloch");
|
||||
System.out.println("https://bytecodeviewer.com - https://the.bytecode.club");
|
||||
System.out.println(" - https://bytecodeviewer.com\r\nCreated by @Konloch - https://konloch.com\r\nPresented by https://the.bytecode.club");
|
||||
|
||||
// Set the security manager
|
||||
try {
|
||||
|
@ -291,10 +291,9 @@ public class BytecodeViewer
|
|||
viewer.requestFocus();
|
||||
|
||||
//open files from launch args
|
||||
if (!cli)
|
||||
if (launchArgs.length >= 1)
|
||||
for (String s : launchArgs)
|
||||
openFiles(new File[]{new File(s)}, true);
|
||||
if (!cli && launchArgs.length >= 1)
|
||||
for (String s : launchArgs)
|
||||
openFiles(new File[]{new File(s)}, true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -522,7 +521,7 @@ public class BytecodeViewer
|
|||
* @param files the file(s) you wish to open
|
||||
* @param recentFiles if it should append to the recent files menu
|
||||
*/
|
||||
public static void openFiles(final File[] files, boolean recentFiles)
|
||||
public static void openFiles(File[] files, boolean recentFiles)
|
||||
{
|
||||
if (recentFiles)
|
||||
{
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer;
|
||||
|
||||
import java.io.File;
|
||||
|
@ -17,24 +35,6 @@ import static the.bytecode.club.bytecodeviewer.Constants.VERSION;
|
|||
import static the.bytecode.club.bytecodeviewer.Constants.fs;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.tempDirectory;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* Used to allow BCV to be integrated as CLI instead of GUI.
|
||||
*
|
||||
|
|
|
@ -1,17 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Locale;
|
||||
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.BootState;
|
||||
import the.bytecode.club.bytecodeviewer.gui.theme.LAFTheme;
|
||||
import the.bytecode.club.bytecodeviewer.gui.theme.RSTATheme;
|
||||
import the.bytecode.club.bytecodeviewer.translation.Language;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -27,6 +16,17 @@ import the.bytecode.club.bytecodeviewer.translation.Language;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Locale;
|
||||
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.BootState;
|
||||
import the.bytecode.club.bytecodeviewer.gui.theme.LAFTheme;
|
||||
import the.bytecode.club.bytecodeviewer.gui.theme.RSTATheme;
|
||||
import the.bytecode.club.bytecodeviewer.translation.Language;
|
||||
|
||||
/**
|
||||
* A collection of variables that can be configured through the settings menu or some form of UI/plugin
|
||||
*
|
||||
|
|
|
@ -1,14 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.PrintStream;
|
||||
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import the.bytecode.club.bytecodeviewer.resources.ResourceType;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -24,6 +16,14 @@ import the.bytecode.club.bytecodeviewer.resources.ResourceType;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.PrintStream;
|
||||
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import the.bytecode.club.bytecodeviewer.resources.ResourceType;
|
||||
|
||||
/**
|
||||
* General program constants, to use this class include everything as a wildcard static import:
|
||||
* import static the.bytecode.club.bytecodeviewer.Constants.*;
|
||||
|
|
|
@ -1,17 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer;
|
||||
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.io.File;
|
||||
import javax.swing.JFileChooser;
|
||||
import the.bytecode.club.bytecodeviewer.gui.components.FileChooser;
|
||||
import the.bytecode.club.bytecodeviewer.gui.components.RunOptions;
|
||||
import the.bytecode.club.bytecodeviewer.util.DialogUtils;
|
||||
import the.bytecode.club.bytecodeviewer.util.JarUtils;
|
||||
import the.bytecode.club.bytecodeviewer.util.MiscUtils;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -27,6 +16,17 @@ import the.bytecode.club.bytecodeviewer.util.MiscUtils;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer;
|
||||
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.io.File;
|
||||
import javax.swing.JFileChooser;
|
||||
import the.bytecode.club.bytecodeviewer.gui.components.FileChooser;
|
||||
import the.bytecode.club.bytecodeviewer.gui.components.RunOptions;
|
||||
import the.bytecode.club.bytecodeviewer.util.DialogUtils;
|
||||
import the.bytecode.club.bytecodeviewer.util.JarUtils;
|
||||
import the.bytecode.club.bytecodeviewer.util.MiscUtils;
|
||||
|
||||
/**
|
||||
* Whenever a key is pressed on the swing UI it should get logged here
|
||||
*
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer;
|
||||
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
@ -16,24 +34,6 @@ import static the.bytecode.club.bytecodeviewer.Constants.fs;
|
|||
import static the.bytecode.club.bytecodeviewer.Constants.getBCVDirectory;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.pluginsName;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @since 6/29/2021
|
||||
|
|
|
@ -1,20 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer;
|
||||
|
||||
import java.io.File;
|
||||
import javax.swing.JFrame;
|
||||
import me.konloch.kontainer.io.DiskReader;
|
||||
import me.konloch.kontainer.io.DiskWriter;
|
||||
import the.bytecode.club.bytecodeviewer.decompilers.Decompiler;
|
||||
import the.bytecode.club.bytecodeviewer.gui.theme.LAFTheme;
|
||||
import the.bytecode.club.bytecodeviewer.gui.theme.RSTATheme;
|
||||
import the.bytecode.club.bytecodeviewer.translation.Language;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.VERSION;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.settingsName;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -30,6 +16,20 @@ import static the.bytecode.club.bytecodeviewer.Constants.settingsName;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer;
|
||||
|
||||
import java.io.File;
|
||||
import javax.swing.JFrame;
|
||||
import me.konloch.kontainer.io.DiskReader;
|
||||
import me.konloch.kontainer.io.DiskWriter;
|
||||
import the.bytecode.club.bytecodeviewer.decompilers.Decompiler;
|
||||
import the.bytecode.club.bytecodeviewer.gui.theme.LAFTheme;
|
||||
import the.bytecode.club.bytecodeviewer.gui.theme.RSTATheme;
|
||||
import the.bytecode.club.bytecodeviewer.translation.Language;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.VERSION;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.settingsName;
|
||||
|
||||
/**
|
||||
* Used to handle loading/saving the GUI (options).
|
||||
*
|
||||
|
|
|
@ -1,19 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.api;
|
||||
|
||||
import org.objectweb.asm.tree.AbstractInsnNode;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import org.objectweb.asm.tree.FieldInsnNode;
|
||||
import org.objectweb.asm.tree.FieldNode;
|
||||
import org.objectweb.asm.tree.InnerClassNode;
|
||||
import org.objectweb.asm.tree.LocalVariableNode;
|
||||
import org.objectweb.asm.tree.MethodInsnNode;
|
||||
import org.objectweb.asm.tree.MethodNode;
|
||||
import org.objectweb.asm.tree.TypeInsnNode;
|
||||
import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -29,6 +16,19 @@ import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.api;
|
||||
|
||||
import org.objectweb.asm.tree.AbstractInsnNode;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import org.objectweb.asm.tree.FieldInsnNode;
|
||||
import org.objectweb.asm.tree.FieldNode;
|
||||
import org.objectweb.asm.tree.InnerClassNode;
|
||||
import org.objectweb.asm.tree.LocalVariableNode;
|
||||
import org.objectweb.asm.tree.MethodInsnNode;
|
||||
import org.objectweb.asm.tree.MethodNode;
|
||||
import org.objectweb.asm.tree.TypeInsnNode;
|
||||
import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
||||
|
||||
/**
|
||||
* Used to interact with classnodes loaded inside of BCV as resources
|
||||
*
|
||||
|
@ -38,7 +38,7 @@ import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
|||
public final class ASMResourceUtil
|
||||
{
|
||||
/**
|
||||
* Attempts to a method main inside of the loaded resources and returns the fully qualified name
|
||||
* Attempts to a method main inside the loaded resources and returns the fully qualified name
|
||||
*/
|
||||
public static String findMainMethod(String defaultFQN)
|
||||
{
|
||||
|
@ -143,8 +143,7 @@ public final class ASMResourceUtil
|
|||
}
|
||||
}
|
||||
|
||||
public static void renameClassNode(final String oldName,
|
||||
final String newName)
|
||||
public static void renameClassNode(String oldName, String newName)
|
||||
{
|
||||
for (ClassNode c : BytecodeViewer.getLoadedClasses())
|
||||
{
|
||||
|
|
|
@ -1,13 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.api;
|
||||
|
||||
import org.objectweb.asm.ClassReader;
|
||||
import org.objectweb.asm.ClassWriter;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import org.objectweb.asm.tree.MethodNode;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -23,6 +16,13 @@ import org.objectweb.asm.tree.MethodNode;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.api;
|
||||
|
||||
import org.objectweb.asm.ClassReader;
|
||||
import org.objectweb.asm.ClassWriter;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import org.objectweb.asm.tree.MethodNode;
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @since 6/27/2021
|
||||
|
@ -32,7 +32,7 @@ public class ASMUtil
|
|||
/**
|
||||
* Creates a new ClassNode instances from the provided byte[]
|
||||
*/
|
||||
public static ClassNode bytesToNode(final byte[] b)
|
||||
public static ClassNode bytesToNode(byte[] b)
|
||||
{
|
||||
ClassReader cr = new ClassReader(b);
|
||||
ClassNode cn = new ClassNode();
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.api;
|
||||
|
||||
import java.io.File;
|
||||
|
@ -22,29 +40,12 @@ import the.bytecode.club.bytecodeviewer.plugin.preinstalled.EZInjection;
|
|||
import the.bytecode.club.bytecodeviewer.util.DialogUtils;
|
||||
import the.bytecode.club.bytecodeviewer.util.JarUtils;
|
||||
import the.bytecode.club.bytecodeviewer.util.MiscUtils;
|
||||
import the.bytecode.club.bytecodeviewer.util.SleepUtil;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.DEV_MODE;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.fs;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.tempDirectory;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* An easier to use version of the BCV API, this is designed for anyone who wants to extend BCV, in any shape
|
||||
* or form. One way of doing that is through the plugin system.
|
||||
|
@ -59,7 +60,7 @@ public class BCV
|
|||
/**
|
||||
* Grab the loader instance
|
||||
*
|
||||
* @return
|
||||
* @return the static ClassNodeLoader instance
|
||||
*/
|
||||
public static ClassNodeLoader getClassNodeLoader() {
|
||||
return loader;
|
||||
|
@ -95,7 +96,7 @@ public class BCV
|
|||
|
||||
return cl.loadClass(cn.name);
|
||||
} catch (Exception classLoadException) {
|
||||
the.bytecode.club.bytecodeviewer.BytecodeViewer.handleException(classLoadException);
|
||||
BytecodeViewer.handleException(classLoadException);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@ -133,14 +134,14 @@ public class BCV
|
|||
try {
|
||||
ret.add(cl.loadClass(className));
|
||||
} catch (Exception classLoadException) {
|
||||
the.bytecode.club.bytecodeviewer.BytecodeViewer.handleException(classLoadException);
|
||||
BytecodeViewer.handleException(classLoadException);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
} catch (Exception e) {
|
||||
the.bytecode.club.bytecodeviewer.BytecodeViewer.handleException(e);
|
||||
BytecodeViewer.handleException(e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -159,7 +160,7 @@ public class BCV
|
|||
* @param plugin the file of the plugin
|
||||
*/
|
||||
public static void startPlugin(File plugin) {
|
||||
the.bytecode.club.bytecodeviewer.BytecodeViewer.startPlugin(plugin);
|
||||
BytecodeViewer.startPlugin(plugin);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -169,7 +170,7 @@ public class BCV
|
|||
* @param recentFiles if it should save to the recent files menu.
|
||||
*/
|
||||
public static void openFiles(File[] files, boolean recentFiles) {
|
||||
the.bytecode.club.bytecodeviewer.BytecodeViewer.openFiles(files, recentFiles);
|
||||
BytecodeViewer.openFiles(files, recentFiles);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -178,7 +179,7 @@ public class BCV
|
|||
* @return The opened class node or a null if nothing is opened
|
||||
*/
|
||||
public static ClassNode getCurrentlyOpenedClassNode() {
|
||||
return the.bytecode.club.bytecodeviewer.BytecodeViewer.getCurrentlyOpenedClassNode();
|
||||
return BytecodeViewer.getCurrentlyOpenedClassNode();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -223,8 +224,7 @@ public class BCV
|
|||
* @return the ClassNode
|
||||
*/
|
||||
public static ClassNode getClassNode(String name) {
|
||||
return the.bytecode.club.bytecodeviewer.BytecodeViewer
|
||||
.blindlySearchForClassNode(name);
|
||||
return BytecodeViewer.blindlySearchForClassNode(name);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -233,8 +233,7 @@ public class BCV
|
|||
* @return the loaded classes
|
||||
*/
|
||||
public static List<ClassNode> getLoadedClasses() {
|
||||
return the.bytecode.club.bytecodeviewer.BytecodeViewer
|
||||
.getLoadedClasses();
|
||||
return BytecodeViewer.getLoadedClasses();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -253,7 +252,7 @@ public class BCV
|
|||
* @param ask if it should ask the user about resetting the workspace
|
||||
*/
|
||||
public static void resetWorkSpace(boolean ask) {
|
||||
the.bytecode.club.bytecodeviewer.BytecodeViewer.resetWorkspace(ask);
|
||||
BytecodeViewer.resetWorkspace(ask);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -263,7 +262,7 @@ public class BCV
|
|||
* @param busy if it should display the busy icon or not
|
||||
*/
|
||||
public static void setBusy(boolean busy) {
|
||||
the.bytecode.club.bytecodeviewer.BytecodeViewer.updateBusyStatus(busy);
|
||||
BytecodeViewer.updateBusyStatus(busy);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -272,7 +271,7 @@ public class BCV
|
|||
* @param message the message you want to display
|
||||
*/
|
||||
public static void showMessage(String message) {
|
||||
the.bytecode.club.bytecodeviewer.BytecodeViewer.showMessage(message);
|
||||
BytecodeViewer.showMessage(message);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -290,14 +289,9 @@ public class BCV
|
|||
*/
|
||||
public static void hideFrame(JFrame frame, long milliseconds)
|
||||
{
|
||||
new Thread(()->{
|
||||
long started = System.currentTimeMillis();
|
||||
while(System.currentTimeMillis()-started <= milliseconds)
|
||||
{
|
||||
try {
|
||||
Thread.sleep(100);
|
||||
} catch (InterruptedException ignored) { }
|
||||
}
|
||||
new Thread(()->
|
||||
{
|
||||
SleepUtil.sleep(milliseconds);
|
||||
|
||||
frame.setVisible(false);
|
||||
}, "Timed Swing Hide").start();
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.api;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -18,6 +16,8 @@ package the.bytecode.club.bytecodeviewer.api;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.api;
|
||||
|
||||
/**
|
||||
* Used for BCV-Injected bytecode hooks
|
||||
*
|
||||
|
|
|
@ -1,21 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.api;
|
||||
|
||||
import java.security.AllPermission;
|
||||
import java.security.CodeSource;
|
||||
import java.security.Permissions;
|
||||
import java.security.ProtectionDomain;
|
||||
import java.security.cert.Certificate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.objectweb.asm.ClassWriter;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -31,6 +16,21 @@ import org.objectweb.asm.tree.ClassNode;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.api;
|
||||
|
||||
import java.security.AllPermission;
|
||||
import java.security.CodeSource;
|
||||
import java.security.Permissions;
|
||||
import java.security.ProtectionDomain;
|
||||
import java.security.cert.Certificate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.objectweb.asm.ClassWriter;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
|
||||
/**
|
||||
* @author Demmonic
|
||||
*/
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.api;
|
||||
|
||||
import java.awt.CardLayout;
|
||||
|
@ -16,24 +34,6 @@ import static the.bytecode.club.bytecodeviewer.Constants.FAT_JAR;
|
|||
import static the.bytecode.club.bytecodeviewer.Constants.VERSION;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.nl;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* A simple class designed to show exceptions in the UI.
|
||||
*
|
||||
|
|
|
@ -1,14 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.api;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
||||
import the.bytecode.club.bytecodeviewer.resources.ResourceContainer;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -24,6 +16,14 @@ import the.bytecode.club.bytecodeviewer.resources.ResourceContainer;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.api;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
||||
import the.bytecode.club.bytecodeviewer.resources.ResourceContainer;
|
||||
|
||||
/**
|
||||
* A simple plugin class, it will run the plugin in a background thread.
|
||||
*
|
||||
|
|
|
@ -1,13 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.api;
|
||||
|
||||
import the.bytecode.club.bytecodeviewer.Configuration;
|
||||
import the.bytecode.club.bytecodeviewer.gui.components.SystemConsole;
|
||||
import the.bytecode.club.bytecodeviewer.plugin.PluginManager;
|
||||
import the.bytecode.club.bytecodeviewer.translation.TranslatedStrings;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -23,6 +16,13 @@ import the.bytecode.club.bytecodeviewer.translation.TranslatedStrings;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.api;
|
||||
|
||||
import the.bytecode.club.bytecodeviewer.Configuration;
|
||||
import the.bytecode.club.bytecodeviewer.gui.components.SystemConsole;
|
||||
import the.bytecode.club.bytecodeviewer.plugin.PluginManager;
|
||||
import the.bytecode.club.bytecodeviewer.translation.TranslatedStrings;
|
||||
|
||||
/**
|
||||
* A simple console GUI.
|
||||
*
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader;
|
||||
|
||||
import java.io.File;
|
||||
|
@ -28,28 +46,10 @@ import static the.bytecode.club.bytecodeviewer.Constants.krakatauVersion;
|
|||
import static the.bytecode.club.bytecodeviewer.Constants.krakatauWorkingDirectory;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.nl;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created 19 Jul 2015 03:22:37
|
||||
* @since 19 Jul 2015 03:22:37
|
||||
*/
|
||||
public class Boot {
|
||||
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -18,6 +16,8 @@ package the.bytecode.club.bytecodeviewer.bootloader;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader;
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @since 7/23/2021
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader;
|
||||
|
||||
import java.awt.Dimension;
|
||||
|
@ -17,28 +35,10 @@ import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
|||
|
||||
import static the.bytecode.club.bytecodeviewer.Configuration.language;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created 19 Jul 2015 04:12:21
|
||||
* @since 19 Jul 2015 04:12:21
|
||||
*/
|
||||
public class InitialBootScreen extends JFrame
|
||||
{
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.AUTOMATIC_LIBRARY_UPDATING;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -20,6 +16,10 @@ import static the.bytecode.club.bytecodeviewer.Constants.AUTOMATIC_LIBRARY_UPDAT
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.AUTOMATIC_LIBRARY_UPDATING;
|
||||
|
||||
/**
|
||||
* Downloads & installs the krakatau & enjarify zips
|
||||
*
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader;
|
||||
|
||||
import de.skuzzle.semantic.Version;
|
||||
|
@ -21,24 +39,6 @@ import the.bytecode.club.bytecodeviewer.translation.TranslatedStrings;
|
|||
import static the.bytecode.club.bytecodeviewer.Constants.VERSION;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.nl;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
*/
|
||||
|
|
|
@ -1,13 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.classtree;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -23,9 +16,16 @@ import org.objectweb.asm.tree.ClassNode;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.classtree;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created 25 May 2015 (actually before this)
|
||||
* @since 25 May 2015 (actually before this)
|
||||
*/
|
||||
public class ClassHelper {
|
||||
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.classtree;
|
||||
|
||||
import java.util.Collection;
|
||||
|
@ -14,27 +32,9 @@ import the.bytecode.club.bytecodeviewer.bootloader.classtree.nullpermablehashmap
|
|||
import static the.bytecode.club.bytecodeviewer.bootloader.classtree.ClassHelper.convertToMap;
|
||||
import static the.bytecode.club.bytecodeviewer.bootloader.classtree.ClassHelper.copyOf;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created 25 May 2015 (actually before this)
|
||||
* @since 25 May 2015 (actually before this)
|
||||
*/
|
||||
public class ClassTree {
|
||||
private static final SetCreator<ClassNode> SET_CREATOR = new SetCreator<>();
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.classtree.nullpermablehashmap;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -18,9 +16,11 @@ package the.bytecode.club.bytecodeviewer.bootloader.classtree.nullpermablehashma
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.classtree.nullpermablehashmap;
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created ages ago
|
||||
* @since ages ago
|
||||
*/
|
||||
public class NullCreator<V> implements ValueCreator<V> {
|
||||
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.classtree.nullpermablehashmap;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -20,9 +16,13 @@ import java.util.HashMap;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.classtree.nullpermablehashmap;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created ages ago
|
||||
* @since ages ago
|
||||
*/
|
||||
public class NullPermeableHashMap<K, V> extends HashMap<K, V> {
|
||||
|
||||
|
|
|
@ -1,11 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.classtree.nullpermablehashmap;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -21,9 +16,14 @@ import java.util.Set;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.classtree.nullpermablehashmap;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created 25 May 2015 (actually before this)
|
||||
* @since 25 May 2015 (actually before this)
|
||||
*/
|
||||
public class SetCreator<T> implements ValueCreator<Set<T>> {
|
||||
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.classtree.nullpermablehashmap;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -18,9 +16,11 @@ package the.bytecode.club.bytecodeviewer.bootloader.classtree.nullpermablehashma
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.classtree.nullpermablehashmap;
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created ages ago
|
||||
* @since ages ago
|
||||
*/
|
||||
public interface ValueCreator<V> {
|
||||
|
||||
|
|
|
@ -1,12 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.loader;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.external.ExternalResource;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -22,9 +16,15 @@ import the.bytecode.club.bytecodeviewer.bootloader.resource.external.ExternalRes
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.loader;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.external.ExternalResource;
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created 21 Jul 2015 00:18:07
|
||||
* @since 21 Jul 2015 00:18:07
|
||||
*/
|
||||
public final class AbstractLoaderFactory {
|
||||
|
||||
|
|
|
@ -1,14 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.loader;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.external.ExternalResource;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -24,9 +16,17 @@ import the.bytecode.club.bytecodeviewer.bootloader.resource.external.ExternalRes
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.loader;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.external.ExternalResource;
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created 21 Jul 2015 00:09:53
|
||||
* @since 21 Jul 2015 00:09:53
|
||||
*/
|
||||
public class ClassPathLoader implements ILoader<Object> {
|
||||
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.loader;
|
||||
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.external.ExternalResource;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -20,9 +16,13 @@ import the.bytecode.club.bytecodeviewer.bootloader.resource.external.ExternalRes
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.loader;
|
||||
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.external.ExternalResource;
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created 19 Jul 2015 02:29:43
|
||||
* @since 19 Jul 2015 02:29:43
|
||||
*/
|
||||
public interface ILoader<T> {
|
||||
|
||||
|
|
|
@ -1,21 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.loader;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import org.objectweb.asm.ClassReader;
|
||||
import org.objectweb.asm.ClassWriter;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.classtree.ClassTree;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.external.ExternalResource;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.jar.contents.JarContents;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -31,9 +16,24 @@ import the.bytecode.club.bytecodeviewer.bootloader.resource.jar.contents.JarCont
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.loader;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import org.objectweb.asm.ClassReader;
|
||||
import org.objectweb.asm.ClassWriter;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.classtree.ClassTree;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.external.ExternalResource;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.jar.contents.JarContents;
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created 19 Jul 2015 02:48:41
|
||||
* @since 19 Jul 2015 02:48:41
|
||||
*
|
||||
* TODO: Resource loading
|
||||
*/
|
||||
|
@ -118,7 +118,7 @@ public class LibraryClassLoader extends ClassLoader implements ILoader<JarConten
|
|||
}
|
||||
|
||||
@Override
|
||||
protected String getCommonSuperClass(final String type1, final String type2) {
|
||||
protected String getCommonSuperClass(String type1, String type2) {
|
||||
ClassNode ccn = classTree.getClass(type1);
|
||||
ClassNode dcn = classTree.getClass(type2);
|
||||
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.loader;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -18,9 +16,11 @@ package the.bytecode.club.bytecodeviewer.bootloader.loader;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.loader;
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created 21 Jul 2015 00:14:53
|
||||
* @since 21 Jul 2015 00:14:53
|
||||
*/
|
||||
public interface LoaderFactory<T> {
|
||||
|
||||
|
|
|
@ -1,12 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.resource;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -22,9 +16,15 @@ import java.util.Map;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.resource;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created ages ago
|
||||
* @since 21 Jul 2013
|
||||
*/
|
||||
public abstract class DataContainer<T> extends ArrayList<T> {
|
||||
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.resource.external;
|
||||
|
||||
import java.net.URL;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -20,9 +16,13 @@ import java.net.URL;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.resource.external;
|
||||
|
||||
import java.net.URL;
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created 21 Jul 2015 00:29:11
|
||||
* @since 21 Jul 2015 00:29:11
|
||||
*/
|
||||
public class EmptyExternalResource<T> extends ExternalResource<T> {
|
||||
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.resource.external;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
|
@ -15,27 +33,9 @@ import the.bytecode.club.bytecodeviewer.bootloader.resource.jar.JarInfo;
|
|||
import the.bytecode.club.bytecodeviewer.bootloader.resource.jar.JarResource;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.jar.contents.JarContents;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created 19 Jul 2015 02:33:23
|
||||
* @since 19 Jul 2015 02:33:23
|
||||
*/
|
||||
public class ExternalLibrary extends ExternalResource<JarContents<ClassNode>> {
|
||||
|
||||
|
|
|
@ -1,11 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.resource.external;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -21,9 +16,14 @@ import java.net.URL;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.resource.external;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created 19 Jul 2015 02:30:30
|
||||
* @since 19 Jul 2015 02:30:30
|
||||
*/
|
||||
public abstract class ExternalResource<T> {
|
||||
|
||||
|
|
|
@ -1,13 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.resource.jar;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.JarURLConnection;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -23,11 +16,18 @@ import java.net.URL;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.resource.jar;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.JarURLConnection;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
|
||||
/**
|
||||
* Holds information about a single local or external JarFile.
|
||||
*
|
||||
* @author Bibl
|
||||
* @created ages ago
|
||||
* @since 19 Jul 2013
|
||||
*/
|
||||
public class JarInfo {
|
||||
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.resource.jar;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -20,9 +16,13 @@ import java.util.Arrays;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.resource.jar;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created ages ago
|
||||
* @since 19 Jul 2013
|
||||
*/
|
||||
public class JarResource {
|
||||
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.resource.jar;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -18,11 +16,13 @@ package the.bytecode.club.bytecodeviewer.bootloader.resource.jar;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.resource.jar;
|
||||
|
||||
/**
|
||||
* Type of Jar Stored.
|
||||
*
|
||||
* @author Bibl
|
||||
* @created ages ago
|
||||
* @since 19 Jul 2013
|
||||
*/
|
||||
public enum JarType {
|
||||
|
||||
|
|
|
@ -1,18 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.resource.jar.contents;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.DataContainer;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.jar.JarResource;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -28,9 +16,21 @@ import the.bytecode.club.bytecodeviewer.bootloader.resource.jar.JarResource;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.resource.jar.contents;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.DataContainer;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.jar.JarResource;
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created ages ago
|
||||
* @since 19 Jul 2013
|
||||
*/
|
||||
public class JarContents<C extends ClassNode> {
|
||||
|
||||
|
|
|
@ -1,13 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.bootloader.resource.jar.contents;
|
||||
|
||||
import java.net.URL;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.DataContainer;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.jar.JarResource;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -23,9 +16,16 @@ import the.bytecode.club.bytecodeviewer.bootloader.resource.jar.JarResource;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.bootloader.resource.jar.contents;
|
||||
|
||||
import java.net.URL;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.DataContainer;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.resource.jar.JarResource;
|
||||
|
||||
/**
|
||||
* @author Bibl (don't ban me pls)
|
||||
* @created ages ago
|
||||
* @since 19 Jul 2013
|
||||
*/
|
||||
public class LocateableJarContents<C extends ClassNode> extends JarContents<C> {
|
||||
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.compilers;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -18,6 +16,8 @@ package the.bytecode.club.bytecodeviewer.compilers;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.compilers;
|
||||
|
||||
import the.bytecode.club.bytecodeviewer.compilers.impl.JavaCompiler;
|
||||
import the.bytecode.club.bytecodeviewer.compilers.impl.KrakatauAssembler;
|
||||
import the.bytecode.club.bytecodeviewer.compilers.impl.SmaliAssembler;
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.compilers;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -18,6 +16,8 @@ package the.bytecode.club.bytecodeviewer.compilers;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.compilers;
|
||||
|
||||
/**
|
||||
* Used to represent a single the compiler/assembler
|
||||
*
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.compilers.impl;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
|
@ -13,29 +31,12 @@ import the.bytecode.club.bytecodeviewer.resources.ExternalResources;
|
|||
import the.bytecode.club.bytecodeviewer.translation.TranslatedStrings;
|
||||
import the.bytecode.club.bytecodeviewer.util.JarUtils;
|
||||
import the.bytecode.club.bytecodeviewer.util.MiscUtils;
|
||||
import the.bytecode.club.bytecodeviewer.util.SleepUtil;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.fs;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.nl;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.tempDirectory;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* Java Compiler
|
||||
*
|
||||
|
@ -95,15 +96,10 @@ public class JavaCompiler extends InternalCompiler
|
|||
Process process = pb.start();
|
||||
BytecodeViewer.createdProcesses.add(process);
|
||||
|
||||
Thread failSafe = new Thread(() -> {
|
||||
long started = System.currentTimeMillis();
|
||||
while (System.currentTimeMillis() - started <= 10_000) {
|
||||
try {
|
||||
Thread.sleep(100);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
Thread failSafe = new Thread(() ->
|
||||
{
|
||||
//wait 10 seconds
|
||||
SleepUtil.sleep(10_000);
|
||||
|
||||
if (process.isAlive())
|
||||
{
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.compilers.impl;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
|
@ -21,24 +39,6 @@ import static the.bytecode.club.bytecodeviewer.Constants.fs;
|
|||
import static the.bytecode.club.bytecodeviewer.Constants.krakatauWorkingDirectory;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.nl;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* Krakatau Java assembler, requires Python 2.7
|
||||
*
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.compilers.impl;
|
||||
|
||||
import java.io.File;
|
||||
|
@ -14,24 +32,6 @@ import the.bytecode.club.bytecodeviewer.util.ZipUtils;
|
|||
import static the.bytecode.club.bytecodeviewer.Constants.fs;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.tempDirectory;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* Smali Assembler Wrapper for Java
|
||||
*
|
||||
|
@ -56,7 +56,7 @@ public class SmaliAssembler extends InternalCompiler
|
|||
|
||||
try {
|
||||
DiskWriter.replaceFile(tempSmali.getAbsolutePath(), contents, false);
|
||||
} catch (final Exception e) {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
//BytecodeViewer.handleException(e);
|
||||
}
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.decompilers;
|
||||
|
||||
import the.bytecode.club.bytecodeviewer.decompilers.impl.*;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -20,6 +16,10 @@ import the.bytecode.club.bytecodeviewer.decompilers.impl.*;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers;
|
||||
|
||||
import the.bytecode.club.bytecodeviewer.decompilers.impl.*;
|
||||
|
||||
/**
|
||||
* All of the decompilers/disassemblers BCV uses
|
||||
*
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.decompilers;
|
||||
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -20,6 +16,10 @@ import org.objectweb.asm.tree.ClassNode;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers;
|
||||
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
|
||||
/**
|
||||
* Used to represent a decompiler/disassembler
|
||||
*
|
||||
|
|
|
@ -1,20 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.decompilers.bytecode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.objectweb.asm.Attribute;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import org.objectweb.asm.tree.FieldNode;
|
||||
import org.objectweb.asm.tree.InnerClassNode;
|
||||
import org.objectweb.asm.tree.MethodNode;
|
||||
import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.nl;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -30,6 +16,20 @@ import static the.bytecode.club.bytecodeviewer.Constants.nl;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.bytecode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.objectweb.asm.Attribute;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import org.objectweb.asm.tree.FieldNode;
|
||||
import org.objectweb.asm.tree.InnerClassNode;
|
||||
import org.objectweb.asm.tree.MethodNode;
|
||||
import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.nl;
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @author Bibl
|
||||
|
|
|
@ -1,14 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.decompilers.bytecode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.objectweb.asm.Type;
|
||||
import org.objectweb.asm.tree.FieldNode;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -24,6 +16,14 @@ import org.objectweb.asm.tree.FieldNode;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.bytecode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.objectweb.asm.Type;
|
||||
import org.objectweb.asm.tree.FieldNode;
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @author Bibl
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.bytecode;
|
||||
|
||||
import eu.bibl.banalysis.filter.InstructionFilter;
|
||||
|
@ -25,24 +43,6 @@ import org.objectweb.asm.tree.MultiANewArrayInsnNode;
|
|||
import org.objectweb.asm.tree.TypeInsnNode;
|
||||
import org.objectweb.asm.tree.VarInsnNode;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* Pattern filter holder and stepper.
|
||||
*
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.bytecode;
|
||||
|
||||
import eu.bibl.banalysis.asm.desc.OpcodeInfo;
|
||||
|
@ -15,24 +33,6 @@ import java.lang.reflect.Modifier;
|
|||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @author Bibl
|
||||
|
|
|
@ -1,16 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.decompilers.bytecode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.objectweb.asm.tree.AbstractInsnNode;
|
||||
import org.objectweb.asm.tree.FrameNode;
|
||||
import org.objectweb.asm.tree.InsnList;
|
||||
import org.objectweb.asm.tree.LineNumberNode;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -26,6 +16,16 @@ import org.objectweb.asm.tree.LineNumberNode;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.bytecode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.objectweb.asm.tree.AbstractInsnNode;
|
||||
import org.objectweb.asm.tree.FrameNode;
|
||||
import org.objectweb.asm.tree.InsnList;
|
||||
import org.objectweb.asm.tree.LineNumberNode;
|
||||
|
||||
/**
|
||||
* @author Bibl
|
||||
*/
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.bytecode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -14,24 +32,6 @@ import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
|||
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.nl;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @author Bibl
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.decompilers.bytecode;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -18,6 +16,8 @@ package the.bytecode.club.bytecodeviewer.decompilers.bytecode;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.bytecode;
|
||||
|
||||
/**
|
||||
* @author Bibl
|
||||
*/
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.decompilers.bytecode;
|
||||
|
||||
import org.objectweb.asm.Type;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -20,6 +16,10 @@ import org.objectweb.asm.Type;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.bytecode;
|
||||
|
||||
import org.objectweb.asm.Type;
|
||||
|
||||
/**
|
||||
* Container class for type and name. Used to pass arguments and local variables
|
||||
* around
|
||||
|
|
|
@ -1,15 +1,6 @@
|
|||
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 *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -25,6 +16,15 @@ import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
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;
|
||||
|
||||
/**
|
||||
* Objectweb ASM Textifier output
|
||||
*
|
||||
|
|
|
@ -1,17 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.decompilers.impl;
|
||||
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import org.objectweb.asm.util.ASMifier;
|
||||
import org.objectweb.asm.util.Textifier;
|
||||
import org.objectweb.asm.util.TraceClassVisitor;
|
||||
import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -27,6 +16,17 @@ import java.io.StringWriter;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.impl;
|
||||
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import org.objectweb.asm.util.ASMifier;
|
||||
import org.objectweb.asm.util.Textifier;
|
||||
import org.objectweb.asm.util.TraceClassVisitor;
|
||||
import the.bytecode.club.bytecodeviewer.decompilers.InternalDecompiler;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
|
||||
/**
|
||||
* Objectweb ASMifier output
|
||||
*
|
||||
|
|
|
@ -1,14 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.decompilers.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
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;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -24,6 +16,14 @@ import the.bytecode.club.bytecodeviewer.decompilers.bytecode.PrefixedStringBuild
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
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;
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @since 7/3/2021
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.impl;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
|
@ -41,24 +59,6 @@ import static the.bytecode.club.bytecodeviewer.Constants.nl;
|
|||
import static the.bytecode.club.bytecodeviewer.translation.TranslatedStrings.CFR;
|
||||
import static the.bytecode.club.bytecodeviewer.translation.TranslatedStrings.ERROR;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* CFR Java Wrapper
|
||||
*
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.impl;
|
||||
|
||||
import java.io.File;
|
||||
|
@ -20,24 +38,6 @@ import static the.bytecode.club.bytecodeviewer.Constants.tempDirectory;
|
|||
import static the.bytecode.club.bytecodeviewer.translation.TranslatedStrings.ERROR;
|
||||
import static the.bytecode.club.bytecodeviewer.translation.TranslatedStrings.FERNFLOWER;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* A FernFlower wrapper with all the options (except 2)
|
||||
*
|
||||
|
@ -67,7 +67,7 @@ public class FernFlowerDecompiler extends InternalDecompiler
|
|||
}
|
||||
|
||||
@Override
|
||||
public String decompileClassNode(final ClassNode cn, byte[] b)
|
||||
public String decompileClassNode(ClassNode cn, byte[] b)
|
||||
{
|
||||
String start = tempDirectory + fs + MiscUtils.getUniqueName("", ".class");
|
||||
|
||||
|
@ -76,7 +76,7 @@ public class FernFlowerDecompiler extends InternalDecompiler
|
|||
String exception = "";
|
||||
try (FileOutputStream fos = new FileOutputStream(tempClass)) {
|
||||
fos.write(b);
|
||||
} catch (final IOException e) {
|
||||
} catch (IOException e) {
|
||||
StringWriter exceptionWriter = new StringWriter();
|
||||
e.printStackTrace(new PrintWriter(exceptionWriter));
|
||||
e.printStackTrace();
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.impl;
|
||||
|
||||
import jadx.api.JadxArgs;
|
||||
|
@ -22,24 +40,6 @@ import static the.bytecode.club.bytecodeviewer.Constants.tempDirectory;
|
|||
import static the.bytecode.club.bytecodeviewer.translation.TranslatedStrings.ERROR;
|
||||
import static the.bytecode.club.bytecodeviewer.translation.TranslatedStrings.JADX;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* JADX Java Wrapper
|
||||
*
|
||||
|
@ -58,7 +58,7 @@ public class JADXDecompiler extends InternalDecompiler
|
|||
|
||||
try (FileOutputStream fos = new FileOutputStream(tempClass)) {
|
||||
fos.write(b);
|
||||
} catch (final IOException e) {
|
||||
} catch (IOException e) {
|
||||
BytecodeViewer.handleException(e);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.impl;
|
||||
|
||||
import java.io.File;
|
||||
|
@ -25,24 +43,6 @@ import static the.bytecode.club.bytecodeviewer.Constants.nl;
|
|||
import static the.bytecode.club.bytecodeviewer.translation.TranslatedStrings.ERROR;
|
||||
import static the.bytecode.club.bytecodeviewer.translation.TranslatedStrings.JDGUI;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* JD-Core Decompiler Wrapper
|
||||
*
|
||||
|
@ -75,7 +75,7 @@ public class JDGUIDecompiler extends InternalDecompiler
|
|||
|
||||
try (FileOutputStream fos = new FileOutputStream(tempClass)) {
|
||||
fos.write(b);
|
||||
} catch (final IOException e) {
|
||||
} catch (IOException e) {
|
||||
BytecodeViewer.handleException(e);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.impl;
|
||||
|
||||
import java.io.File;
|
||||
|
@ -18,24 +36,6 @@ import the.bytecode.club.bytecodeviewer.util.MiscUtils;
|
|||
import static the.bytecode.club.bytecodeviewer.Constants.fs;
|
||||
import static the.bytecode.club.bytecodeviewer.api.ExceptionUI.SEND_STACKTRACE_TO;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* Javap disassembler
|
||||
*
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.impl;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
|
@ -26,24 +44,6 @@ import static the.bytecode.club.bytecodeviewer.Constants.fs;
|
|||
import static the.bytecode.club.bytecodeviewer.Constants.krakatauWorkingDirectory;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.nl;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* Krakatau Java Decompiler Wrapper, requires Python 2.7
|
||||
*
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.impl;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
|
@ -24,24 +42,6 @@ import static the.bytecode.club.bytecodeviewer.Constants.fs;
|
|||
import static the.bytecode.club.bytecodeviewer.Constants.krakatauWorkingDirectory;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.nl;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* Krakatau Java Disassembler Wrapper, requires Python 2.7
|
||||
*
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.impl;
|
||||
|
||||
import com.strobel.assembler.InputTypeLoader;
|
||||
|
@ -44,24 +62,6 @@ import static the.bytecode.club.bytecodeviewer.Constants.tempDirectory;
|
|||
import static the.bytecode.club.bytecodeviewer.translation.TranslatedStrings.ERROR;
|
||||
import static the.bytecode.club.bytecodeviewer.translation.TranslatedStrings.PROCYON;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* Procyon Java Decompiler Wrapper
|
||||
*
|
||||
|
@ -100,7 +100,7 @@ public class ProcyonDecompiler extends InternalDecompiler {
|
|||
|
||||
try (FileOutputStream fos = new FileOutputStream(tempClass)) {
|
||||
fos.write(b);
|
||||
} catch (final IOException e) {
|
||||
} catch (IOException e) {
|
||||
BytecodeViewer.handleException(e);
|
||||
}
|
||||
|
||||
|
@ -237,9 +237,8 @@ public class ProcyonDecompiler extends InternalDecompiler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean tryLoadType(final String internalName,
|
||||
final Buffer buffer) {
|
||||
for (final ITypeLoader typeLoader : _typeLoaders) {
|
||||
public boolean tryLoadType(String internalName, Buffer buffer) {
|
||||
for (ITypeLoader typeLoader : _typeLoaders) {
|
||||
if (typeLoader.tryLoadType(internalName, buffer)) {
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.impl;
|
||||
|
||||
import com.googlecode.d2j.smali.BaksmaliCmd;
|
||||
|
@ -24,24 +42,6 @@ import static the.bytecode.club.bytecodeviewer.translation.TranslatedStrings.DIS
|
|||
import static the.bytecode.club.bytecodeviewer.translation.TranslatedStrings.ERROR;
|
||||
import static the.bytecode.club.bytecodeviewer.translation.TranslatedStrings.SMALI;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* Smali Disassembler Wrapper
|
||||
*
|
||||
|
@ -65,7 +65,7 @@ public class SmaliDisassembler extends InternalDecompiler
|
|||
|
||||
try (FileOutputStream fos = new FileOutputStream(tempClass)) {
|
||||
fos.write(b);
|
||||
} catch (final IOException e) {
|
||||
} catch (IOException e) {
|
||||
BytecodeViewer.handleException(e);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.jdgui;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.jdgui;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.jdgui;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.decompilers.jdgui;
|
||||
|
||||
import java.io.Closeable;
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui;
|
||||
|
||||
import java.awt.*;
|
||||
|
@ -67,24 +85,6 @@ import static the.bytecode.club.bytecodeviewer.Configuration.useNewSettingsDialo
|
|||
import static the.bytecode.club.bytecodeviewer.Constants.VERSION;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.fs;
|
||||
|
||||
/***************************************************************************
|
||||
* 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 main file for the GUI
|
||||
*
|
||||
|
@ -868,7 +868,7 @@ public class MainViewerGUI extends JFrame
|
|||
});
|
||||
}
|
||||
|
||||
public synchronized void updateBusyStatus(final boolean busy)
|
||||
public synchronized void updateBusyStatus(boolean busy)
|
||||
{
|
||||
SwingUtilities.invokeLater(() ->
|
||||
{
|
||||
|
|
|
@ -1,18 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.CardLayout;
|
||||
import java.io.IOException;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JScrollPane;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.InitialBootScreen;
|
||||
import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
||||
import the.bytecode.club.bytecodeviewer.translation.TranslatedStrings;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.Configuration.language;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -28,6 +16,18 @@ import static the.bytecode.club.bytecodeviewer.Configuration.language;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.CardLayout;
|
||||
import java.io.IOException;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JScrollPane;
|
||||
import the.bytecode.club.bytecodeviewer.bootloader.InitialBootScreen;
|
||||
import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
||||
import the.bytecode.club.bytecodeviewer.translation.TranslatedStrings;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.Configuration.language;
|
||||
|
||||
/**
|
||||
* The about window - used to explain what BCV is, how to use it, etc.
|
||||
*
|
||||
|
|
|
@ -1,13 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import javax.swing.AbstractButton;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -23,6 +16,13 @@ import javax.swing.AbstractButton;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import javax.swing.AbstractButton;
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @since 6/25/2021
|
||||
|
@ -30,7 +30,7 @@ import javax.swing.AbstractButton;
|
|||
public class ButtonHoverAnimation extends MouseAdapter
|
||||
{
|
||||
@Override
|
||||
public void mouseEntered(final MouseEvent e)
|
||||
public void mouseEntered(MouseEvent e)
|
||||
{
|
||||
final Component component = e.getComponent();
|
||||
if (component instanceof AbstractButton)
|
||||
|
@ -41,7 +41,7 @@ public class ButtonHoverAnimation extends MouseAdapter
|
|||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(final MouseEvent e)
|
||||
public void mouseExited(MouseEvent e)
|
||||
{
|
||||
final Component component = e.getComponent();
|
||||
if (component instanceof AbstractButton)
|
||||
|
|
|
@ -1,21 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import javax.swing.ButtonGroup;
|
||||
import javax.swing.JCheckBoxMenuItem;
|
||||
import javax.swing.JMenu;
|
||||
import javax.swing.JRadioButtonMenuItem;
|
||||
import javax.swing.JSeparator;
|
||||
import the.bytecode.club.bytecodeviewer.decompilers.Decompiler;
|
||||
import the.bytecode.club.bytecodeviewer.gui.resourceviewer.WorkspaceRefreshEvent;
|
||||
import the.bytecode.club.bytecodeviewer.translation.TranslatedComponents;
|
||||
import the.bytecode.club.bytecodeviewer.translation.components.TranslatedJCheckBoxMenuItem;
|
||||
import the.bytecode.club.bytecodeviewer.translation.components.TranslatedJRadioButtonMenuItem;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.gui.components.DecompilerViewComponent.DecompilerComponentType.*;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -31,6 +16,21 @@ import static the.bytecode.club.bytecodeviewer.gui.components.DecompilerViewComp
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import javax.swing.ButtonGroup;
|
||||
import javax.swing.JCheckBoxMenuItem;
|
||||
import javax.swing.JMenu;
|
||||
import javax.swing.JRadioButtonMenuItem;
|
||||
import javax.swing.JSeparator;
|
||||
import the.bytecode.club.bytecodeviewer.decompilers.Decompiler;
|
||||
import the.bytecode.club.bytecodeviewer.gui.resourceviewer.WorkspaceRefreshEvent;
|
||||
import the.bytecode.club.bytecodeviewer.translation.TranslatedComponents;
|
||||
import the.bytecode.club.bytecodeviewer.translation.components.TranslatedJCheckBoxMenuItem;
|
||||
import the.bytecode.club.bytecodeviewer.translation.components.TranslatedJRadioButtonMenuItem;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.gui.components.DecompilerViewComponent.DecompilerComponentType.*;
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @since 6/21/2021
|
||||
|
|
|
@ -1,18 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import javax.swing.BoxLayout;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTextArea;
|
||||
import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
||||
import the.bytecode.club.bytecodeviewer.util.JarUtils;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -28,6 +16,18 @@ import the.bytecode.club.bytecodeviewer.util.JarUtils;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import javax.swing.BoxLayout;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTextArea;
|
||||
import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
||||
import the.bytecode.club.bytecodeviewer.util.JarUtils;
|
||||
|
||||
/**
|
||||
* The export as Jar UI.
|
||||
*
|
||||
|
@ -36,7 +36,7 @@ import the.bytecode.club.bytecodeviewer.util.JarUtils;
|
|||
|
||||
public class ExportJar extends JFrame
|
||||
{
|
||||
public ExportJar(final String jarPath)
|
||||
public ExportJar(String jarPath)
|
||||
{
|
||||
setSize(new Dimension(250, 277));
|
||||
setResizable(false);
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.Component;
|
||||
|
@ -22,24 +40,6 @@ import static javax.swing.JOptionPane.UNINITIALIZED_VALUE;
|
|||
import static javax.swing.JOptionPane.WARNING_MESSAGE;
|
||||
import static javax.swing.JOptionPane.getRootFrame;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* Extends the JOptionPane
|
||||
*
|
||||
|
|
|
@ -1,16 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import javax.swing.JFileChooser;
|
||||
import javax.swing.filechooser.FileFilter;
|
||||
import the.bytecode.club.bytecodeviewer.util.MiscUtils;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -26,6 +16,16 @@ import the.bytecode.club.bytecodeviewer.util.MiscUtils;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import javax.swing.JFileChooser;
|
||||
import javax.swing.filechooser.FileFilter;
|
||||
import the.bytecode.club.bytecodeviewer.util.MiscUtils;
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @since 6/25/2021
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.io.IOException;
|
||||
|
@ -15,24 +33,6 @@ import static the.bytecode.club.bytecodeviewer.Constants.enjarifyWorkingDirector
|
|||
import static the.bytecode.club.bytecodeviewer.Constants.krakatauVersion;
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.krakatauWorkingDirectory;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @since 7/7/2021
|
||||
|
|
|
@ -1,12 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.Image;
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JLabel;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -22,6 +16,12 @@ import javax.swing.JLabel;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.Image;
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JLabel;
|
||||
|
||||
/**
|
||||
* Display an image on a JLabel element
|
||||
*
|
||||
|
|
|
@ -1,17 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Dimension;
|
||||
import java.io.File;
|
||||
import javax.swing.JFrame;
|
||||
import me.konloch.kontainer.io.DiskWriter;
|
||||
import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.tempDirectory;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -27,6 +16,17 @@ import static the.bytecode.club.bytecodeviewer.Constants.tempDirectory;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Dimension;
|
||||
import java.io.File;
|
||||
import javax.swing.JFrame;
|
||||
import me.konloch.kontainer.io.DiskWriter;
|
||||
import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.tempDirectory;
|
||||
|
||||
/**
|
||||
* A simple swing JFrame console
|
||||
*
|
||||
|
@ -123,7 +123,7 @@ public class JFrameConsole extends JFrame
|
|||
/**
|
||||
* Trims the console text to prevent killing the swing thread
|
||||
*/
|
||||
public String trimConsoleText(final String s)
|
||||
public String trimConsoleText(String s)
|
||||
{
|
||||
int len = s.length();
|
||||
|
||||
|
|
|
@ -1,14 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.io.PrintStream;
|
||||
import javax.swing.SwingUtilities;
|
||||
import the.bytecode.club.bytecodeviewer.Constants;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.nl;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -24,6 +16,14 @@ import static the.bytecode.club.bytecodeviewer.Constants.nl;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.io.PrintStream;
|
||||
import javax.swing.SwingUtilities;
|
||||
import the.bytecode.club.bytecodeviewer.Constants;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.Constants.nl;
|
||||
|
||||
/**
|
||||
* A swing console that can print out from PrintStreams
|
||||
*
|
||||
|
|
|
@ -1,15 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Component;
|
||||
import java.awt.Dimension;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JTabbedPane;
|
||||
import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -25,6 +16,15 @@ import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Component;
|
||||
import java.awt.Dimension;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JTabbedPane;
|
||||
import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @since 7/14/2021
|
||||
|
|
|
@ -1,14 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import javax.swing.Icon;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.UIManager;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -24,6 +16,14 @@ import javax.swing.UIManager;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import javax.swing.Icon;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.UIManager;
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @since 7/4/2021
|
||||
|
|
|
@ -1,13 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.io.Closeable;
|
||||
import java.io.OutputStream;
|
||||
import java.io.PrintStream;
|
||||
import javax.swing.JTextArea;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -23,6 +16,13 @@ import javax.swing.JTextArea;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.io.Closeable;
|
||||
import java.io.OutputStream;
|
||||
import java.io.PrintStream;
|
||||
import javax.swing.JTextArea;
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @since 6/21/2021
|
||||
|
|
|
@ -1,11 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import javax.swing.JLabel;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -21,6 +16,11 @@ import javax.swing.JLabel;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import javax.swing.JLabel;
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @since 6/25/2021
|
||||
|
|
|
@ -1,18 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.util.List;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JList;
|
||||
import javax.swing.ListCellRenderer;
|
||||
|
||||
import the.bytecode.club.bytecodeviewer.gui.resourceviewer.BytecodeViewPanel;
|
||||
import the.bytecode.club.bytecodeviewer.gui.util.BytecodeViewPanelUpdater;
|
||||
import the.bytecode.club.bytecodeviewer.util.MethodParser;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -28,6 +16,18 @@ import the.bytecode.club.bytecodeviewer.util.MethodParser;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.util.List;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JList;
|
||||
import javax.swing.ListCellRenderer;
|
||||
|
||||
import the.bytecode.club.bytecodeviewer.gui.resourceviewer.BytecodeViewPanel;
|
||||
import the.bytecode.club.bytecodeviewer.gui.util.BytecodeViewPanelUpdater;
|
||||
import the.bytecode.club.bytecodeviewer.util.MethodParser;
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @author Waterwolf
|
||||
|
|
|
@ -1,12 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JOptionPane;
|
||||
import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -22,6 +16,12 @@ import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JOptionPane;
|
||||
import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @since 6/26/2021
|
||||
|
|
|
@ -0,0 +1,418 @@
|
|||
/*
|
||||
* BSD 3-Clause "New" or "Revised" License
|
||||
*
|
||||
* Copyright (c) 2021, Robert Futrell All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
|
||||
* following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the author nor the names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import org.fife.ui.rsyntaxtextarea.DocumentRange;
|
||||
import org.fife.ui.rsyntaxtextarea.ErrorStrip;
|
||||
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
|
||||
import org.fife.ui.rsyntaxtextarea.RSyntaxUtilities;
|
||||
import org.fife.ui.rsyntaxtextarea.parser.Parser;
|
||||
import org.fife.ui.rsyntaxtextarea.parser.ParserNotice;
|
||||
import org.jetbrains.annotations.Contract;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.text.BadLocationException;
|
||||
import java.awt.*;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* This is based on {@link ErrorStrip}, but with our own implementations to work with how occurrences are marked on
|
||||
* the text area.
|
||||
* <p>
|
||||
* Created by Bl3nd.
|
||||
* Date: 8/26/2024
|
||||
*/
|
||||
public class MyErrorStripe extends JPanel
|
||||
{
|
||||
private final RSyntaxTextArea textArea;
|
||||
private final transient Listener listener;
|
||||
|
||||
public MyErrorStripe(RSyntaxTextArea textArea)
|
||||
{
|
||||
this.textArea = textArea;
|
||||
setLayout(null);
|
||||
listener = new Listener();
|
||||
addMouseListener(listener);
|
||||
}
|
||||
|
||||
private int lineToY(int line, Rectangle r)
|
||||
{
|
||||
if (r == null)
|
||||
r = new Rectangle();
|
||||
|
||||
textArea.computeVisibleRect(r);
|
||||
int h = r.height;
|
||||
float lineCount = textArea.getLineCount();
|
||||
int lineHeight = textArea.getLineHeight();
|
||||
int linesPerVisibleRect = h / lineHeight;
|
||||
return Math.round((h - 1) * line / Math.max(lineCount, linesPerVisibleRect));
|
||||
}
|
||||
|
||||
private int yToLine(int y)
|
||||
{
|
||||
int line = -1;
|
||||
int h = textArea.getVisibleRect().height;
|
||||
int lineHeight = textArea.getLineHeight();
|
||||
int linesPerVisibleRect = h / lineHeight;
|
||||
int lineCount = textArea.getLineCount();
|
||||
if (y < h)
|
||||
{
|
||||
float at = y / (float) h;
|
||||
line = Math.round((Math.max(lineCount, linesPerVisibleRect) - 1) * at);
|
||||
}
|
||||
|
||||
return line;
|
||||
}
|
||||
|
||||
private void paintParserNoticeMarker(Graphics2D g, ParserNotice notice, int width, int height)
|
||||
{
|
||||
Color borderColor = notice.getColor();
|
||||
if (borderColor == null)
|
||||
borderColor = Color.BLACK;
|
||||
|
||||
Color fillColor = borderColor.brighter();
|
||||
g.setColor(fillColor);
|
||||
g.fillRect(0, 0, width, height);
|
||||
|
||||
g.setColor(borderColor);
|
||||
g.drawRect(0, 0, width - 1, height - 1);
|
||||
}
|
||||
|
||||
public void refreshMarkers()
|
||||
{
|
||||
removeAll();
|
||||
Map<Integer, Marker> markerMap = new HashMap<>();
|
||||
List<DocumentRange> occurrences = textArea.getMarkedOccurrences();
|
||||
addMarkersForRanges(occurrences, markerMap, textArea.getMarkOccurrencesColor());
|
||||
revalidate();
|
||||
repaint();
|
||||
}
|
||||
|
||||
private void addMarkersForRanges(List<DocumentRange> occurrences, Map<Integer, Marker> markerMap, Color color)
|
||||
{
|
||||
for (DocumentRange range : occurrences)
|
||||
{
|
||||
int line;
|
||||
try
|
||||
{
|
||||
line = textArea.getLineOfOffset(range.getStartOffset());
|
||||
} catch (BadLocationException e)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
ParserNotice notice = new MarkedOccurrenceNotice(range, color);
|
||||
Integer key = line;
|
||||
Marker m = markerMap.get(key);
|
||||
if (m == null)
|
||||
{
|
||||
m = new Marker(notice);
|
||||
m.addMouseListener(listener);
|
||||
markerMap.put(key, m);
|
||||
add(m);
|
||||
} else
|
||||
{
|
||||
if (!m.containsMarkedOccurrence())
|
||||
m.addNotice(notice);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateUI()
|
||||
{
|
||||
super.updateUI();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void paintComponent(Graphics g)
|
||||
{
|
||||
super.paintComponent(g);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void paintChildren(Graphics g)
|
||||
{
|
||||
super.paintChildren(g);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dimension getPreferredSize()
|
||||
{
|
||||
return new Dimension(14, textArea.getPreferredScrollableViewportSize().height);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doLayout()
|
||||
{
|
||||
for (int i = 0; i < getComponentCount(); i++)
|
||||
{
|
||||
Marker m = (Marker) getComponent(i);
|
||||
m.updateLocation();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addNotify()
|
||||
{
|
||||
super.addNotify();
|
||||
refreshMarkers();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeNotify()
|
||||
{
|
||||
super.removeNotify();
|
||||
}
|
||||
|
||||
private class Listener extends MouseAdapter
|
||||
{
|
||||
private final Rectangle r = new Rectangle();
|
||||
|
||||
@Override
|
||||
public void mouseClicked(@NotNull MouseEvent e)
|
||||
{
|
||||
Component source = (Component) e.getSource();
|
||||
if (source instanceof MyErrorStripe.Marker)
|
||||
{
|
||||
Marker m = (Marker) source;
|
||||
m.mouseClicked(e);
|
||||
return;
|
||||
}
|
||||
|
||||
int line = yToLine(e.getY());
|
||||
if (line > -1)
|
||||
{
|
||||
try
|
||||
{
|
||||
int offset = textArea.getLineOfOffset(line);
|
||||
textArea.setCaretPosition(offset);
|
||||
RSyntaxUtilities.selectAndPossiblyCenter(textArea, new DocumentRange(offset, offset), false);
|
||||
} catch (BadLocationException exception)
|
||||
{
|
||||
UIManager.getLookAndFeel().provideErrorFeedback(textArea);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class MarkedOccurrenceNotice implements ParserNotice
|
||||
{
|
||||
private final DocumentRange range;
|
||||
private final Color color;
|
||||
|
||||
MarkedOccurrenceNotice(DocumentRange range, Color color)
|
||||
{
|
||||
this.range = range;
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsPosition(int pos)
|
||||
{
|
||||
return pos >= range.getStartOffset() && pos < range.getEndOffset();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Color getColor()
|
||||
{
|
||||
return color;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLength()
|
||||
{
|
||||
return range.getEndOffset() - range.getStartOffset();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Level getLevel()
|
||||
{
|
||||
return Level.INFO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLine()
|
||||
{
|
||||
try
|
||||
{
|
||||
return textArea.getLineOfOffset(range.getStartOffset()) + 1;
|
||||
} catch (BadLocationException e)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getKnowsOffsetAndLength()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Contract(pure = true)
|
||||
@Override
|
||||
public @NotNull String getMessage()
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset()
|
||||
{
|
||||
return range.getStartOffset();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Parser getParser()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getShowInEditor()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getToolTipText()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(@NotNull ParserNotice o)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
private static final int MARKER_HEIGHT = 3;
|
||||
|
||||
private class Marker extends JComponent
|
||||
{
|
||||
private final java.util.List<ParserNotice> notices;
|
||||
|
||||
Marker(ParserNotice notice)
|
||||
{
|
||||
notices = new ArrayList<>();
|
||||
addNotice(notice);
|
||||
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
|
||||
setSize(getPreferredSize());
|
||||
}
|
||||
|
||||
private void addNotice(ParserNotice notice)
|
||||
{
|
||||
notices.add(notice);
|
||||
}
|
||||
|
||||
@Contract(value = " -> new", pure = true)
|
||||
@Override
|
||||
public @NotNull Dimension getPreferredSize()
|
||||
{
|
||||
return new Dimension(12, MARKER_HEIGHT);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void paintComponent(Graphics g)
|
||||
{
|
||||
final ParserNotice notice = getHighestPriorityNotice();
|
||||
if (notice != null)
|
||||
paintParserNoticeMarker((Graphics2D) g, notice, getWidth(), getHeight());
|
||||
}
|
||||
|
||||
protected void mouseClicked(MouseEvent e)
|
||||
{
|
||||
ParserNotice pn = notices.get(0);
|
||||
int offs = pn.getOffset();
|
||||
int len = pn.getLength();
|
||||
if (offs > -1 && len > -1) // These values are optional
|
||||
{
|
||||
DocumentRange range = new DocumentRange(offs, offs + len);
|
||||
RSyntaxUtilities.selectAndPossiblyCenter(textArea, range, true);
|
||||
} else
|
||||
{
|
||||
int line = pn.getLine();
|
||||
try
|
||||
{
|
||||
offs = textArea.getLineStartOffset(line);
|
||||
textArea.getFoldManager().ensureOffsetNotInClosedFold(offs);
|
||||
textArea.setCaretPosition(offs);
|
||||
} catch (BadLocationException ble) // Never happens
|
||||
{
|
||||
UIManager.getLookAndFeel().provideErrorFeedback(textArea);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean containsMarkedOccurrence()
|
||||
{
|
||||
boolean result = false;
|
||||
for (ParserNotice notice : notices)
|
||||
{
|
||||
if (notice instanceof MarkedOccurrenceNotice)
|
||||
{
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public ParserNotice getHighestPriorityNotice()
|
||||
{
|
||||
ParserNotice selectedNotice = null;
|
||||
int lowestLevel = Integer.MAX_VALUE;
|
||||
for (ParserNotice notice : notices)
|
||||
{
|
||||
if (notice.getLevel().getNumericValue() < lowestLevel)
|
||||
{
|
||||
lowestLevel = notice.getLevel().getNumericValue();
|
||||
selectedNotice = notice;
|
||||
}
|
||||
}
|
||||
|
||||
return selectedNotice;
|
||||
}
|
||||
|
||||
public void updateLocation()
|
||||
{
|
||||
int line = notices.get(0).getLine();
|
||||
int y = lineToY(line - 1, null);
|
||||
setLocation(2, y);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,132 @@
|
|||
/*
|
||||
* BSD 3-Clause "New" or "Revised" License
|
||||
*
|
||||
* Copyright (c) 2021, Robert Futrell All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
||||
* following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
|
||||
* following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the author nor the names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import org.fife.ui.rsyntaxtextarea.DocumentRange;
|
||||
import org.fife.ui.rsyntaxtextarea.RSyntaxTextAreaHighlighter;
|
||||
import org.fife.ui.rsyntaxtextarea.parser.ParserNotice;
|
||||
import org.fife.ui.rtextarea.SmartHighlightPainter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.plaf.TextUI;
|
||||
import javax.swing.text.BadLocationException;
|
||||
import javax.swing.text.Document;
|
||||
import javax.swing.text.JTextComponent;
|
||||
import javax.swing.text.View;
|
||||
import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Extension from RSyntaxTextArea
|
||||
*/
|
||||
public class RSyntaxTextAreaHighlighterEx extends RSyntaxTextAreaHighlighter
|
||||
{
|
||||
private final List<SyntaxLayeredHighlightInfoImpl> markedOccurrences = new ArrayList<>();
|
||||
private static final Color DEFAULT_PARSER_NOTICE_COLOR = Color.RED;
|
||||
|
||||
public Object addMarkedOccurrenceHighlight(int start, int end, @NotNull SmartHighlightPainter p) throws BadLocationException
|
||||
{
|
||||
Document doc = textArea.getDocument();
|
||||
TextUI mapper = textArea.getUI();
|
||||
// Always layered highlights for marked occurrences.
|
||||
SyntaxLayeredHighlightInfoImpl i = new SyntaxLayeredHighlightInfoImpl();
|
||||
p.setPaint(UIManager.getColor("ScrollBar.thumb"));
|
||||
i.setPainter(p);
|
||||
i.setStartOffset(doc.createPosition(start));
|
||||
// HACK: Use "end-1" to prevent chars the user types at the "end" of
|
||||
// the highlight to be absorbed into the highlight (default Highlight
|
||||
// behavior).
|
||||
i.setEndOffset(doc.createPosition(end - 1));
|
||||
markedOccurrences.add(i);
|
||||
mapper.damageRange(textArea, start, end);
|
||||
return i;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DocumentRange> getMarkedOccurrences()
|
||||
{
|
||||
List<DocumentRange> list = new ArrayList<>(markedOccurrences.size());
|
||||
for (HighlightInfo info : markedOccurrences)
|
||||
{
|
||||
int start = info.getStartOffset();
|
||||
int end = info.getEndOffset() + 1; // HACK
|
||||
if (start <= end)
|
||||
{
|
||||
// Occasionally a Marked Occurrence can have a lost end offset
|
||||
// but not start offset (replacing entire text content with
|
||||
// new content, and a marked occurrence is on the last token
|
||||
// in the document).
|
||||
DocumentRange range = new DocumentRange(start, end);
|
||||
list.add(range);
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
public void clearMarkOccurrencesHighlights()
|
||||
{
|
||||
// Don't remove via an iterator; since our List is an ArrayList, this
|
||||
// implies tons of System.arrayCopy()s
|
||||
for (HighlightInfo info : markedOccurrences)
|
||||
{
|
||||
repaintListHighlight(info);
|
||||
}
|
||||
|
||||
markedOccurrences.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paintLayeredHighlights(Graphics g, int lineStart, int lineEnd, Shape viewBounds, JTextComponent editor, View view)
|
||||
{
|
||||
paintListLayered(g, lineStart, lineEnd, viewBounds, editor, view, markedOccurrences);
|
||||
super.paintLayeredHighlights(g, lineStart, lineEnd, viewBounds, editor, view);
|
||||
}
|
||||
|
||||
private static class SyntaxLayeredHighlightInfoImpl extends LayeredHighlightInfoImpl
|
||||
{
|
||||
private ParserNotice notice;
|
||||
|
||||
@Override
|
||||
public Color getColor()
|
||||
{
|
||||
Color color = null;
|
||||
if (notice != null)
|
||||
{
|
||||
color = notice.getColor();
|
||||
if (color == null)
|
||||
color = DEFAULT_PARSER_NOTICE_COLOR;
|
||||
}
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "[SyntaxLayeredHighlightInfoImpl: startOffs=" + getStartOffset() + ", endOffs=" + getEndOffset() + ", color=" + getColor() + "]";
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,19 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JTextField;
|
||||
import the.bytecode.club.bytecodeviewer.api.ASMResourceUtil;
|
||||
import the.bytecode.club.bytecodeviewer.plugin.PluginManager;
|
||||
import the.bytecode.club.bytecodeviewer.plugin.preinstalled.EZInjection;
|
||||
import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -29,6 +16,19 @@ import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JTextField;
|
||||
import the.bytecode.club.bytecodeviewer.api.ASMResourceUtil;
|
||||
import the.bytecode.club.bytecodeviewer.plugin.PluginManager;
|
||||
import the.bytecode.club.bytecodeviewer.plugin.preinstalled.EZInjection;
|
||||
import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
||||
|
||||
/**
|
||||
* The UI for File>Run aka EZ-Injection plugin.
|
||||
*
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
|
@ -21,24 +39,6 @@ import the.bytecode.club.bytecodeviewer.translation.TranslatedComponents;
|
|||
import the.bytecode.club.bytecodeviewer.translation.components.TranslatedJCheckBox;
|
||||
import the.bytecode.club.bytecodeviewer.util.JTextAreaUtils;
|
||||
|
||||
/***************************************************************************
|
||||
* 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/>. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* Searching on a JTextArea using swing highlighting
|
||||
*
|
||||
|
|
|
@ -1,36 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Font;
|
||||
import java.awt.event.InputEvent;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.MouseWheelEvent;
|
||||
import java.awt.event.MouseWheelListener;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JTextField;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.text.BadLocationException;
|
||||
|
||||
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
|
||||
import org.fife.ui.rtextarea.RTextScrollPane;
|
||||
import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
||||
import the.bytecode.club.bytecodeviewer.Configuration;
|
||||
import the.bytecode.club.bytecodeviewer.GlobalHotKeys;
|
||||
import the.bytecode.club.bytecodeviewer.gui.components.listeners.PressKeyListener;
|
||||
import the.bytecode.club.bytecodeviewer.gui.components.listeners.ReleaseKeyListener;
|
||||
import the.bytecode.club.bytecodeviewer.gui.theme.LAFTheme;
|
||||
import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
||||
import the.bytecode.club.bytecodeviewer.translation.TranslatedComponents;
|
||||
import the.bytecode.club.bytecodeviewer.translation.components.TranslatedJCheckBox;
|
||||
import the.bytecode.club.bytecodeviewer.util.JTextAreaUtils;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -46,169 +16,189 @@ import the.bytecode.club.bytecodeviewer.util.JTextAreaUtils;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
|
||||
import org.fife.ui.rtextarea.RTextScrollPane;
|
||||
import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
||||
import the.bytecode.club.bytecodeviewer.Configuration;
|
||||
import the.bytecode.club.bytecodeviewer.GlobalHotKeys;
|
||||
import the.bytecode.club.bytecodeviewer.gui.components.listeners.PressKeyListener;
|
||||
import the.bytecode.club.bytecodeviewer.gui.theme.LAFTheme;
|
||||
import the.bytecode.club.bytecodeviewer.util.JTextAreaUtils;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.text.BadLocationException;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
|
||||
/**
|
||||
* Searching on an RSyntaxTextArea using swing highlighting
|
||||
*
|
||||
* @author Konloch
|
||||
* @since 6/25/2021
|
||||
*/
|
||||
public class SearchableRSyntaxTextArea extends RSyntaxTextArea {
|
||||
public class SearchableRSyntaxTextArea extends RSyntaxTextArea
|
||||
{
|
||||
|
||||
private RTextScrollPane scrollPane = new RTextScrollPane(this);
|
||||
private final JPanel searchPanel = new JPanel(new BorderLayout());
|
||||
private final JTextField searchInput = new JTextField();
|
||||
private final JCheckBox caseSensitiveSearch = new TranslatedJCheckBox("Match case", TranslatedComponents.MATCH_CASE);
|
||||
private final JLabel titleHeader = new JLabel("");
|
||||
private final Color darkScrollBackground = new Color(0x3c3f41);
|
||||
private final Color darkScrollForeground = new Color(0x575859);
|
||||
private final Color blackScrollBackground = new Color(0x232323);
|
||||
private final Color blackScrollForeground = new Color(0x575859);
|
||||
private Runnable onCtrlS;
|
||||
private RTextScrollPane scrollPane = new RTextScrollPane(this);
|
||||
private final TextAreaSearchPanel textAreaSearchPanel;
|
||||
private final Color darkScrollBackground = new Color(0x3c3f41);
|
||||
private final Color darkScrollForeground = new Color(0x575859);
|
||||
private final Color blackScrollBackground = new Color(0x232323);
|
||||
private final Color blackScrollForeground = new Color(0x575859);
|
||||
private Runnable onCtrlS;
|
||||
|
||||
public SearchableRSyntaxTextArea() {
|
||||
if (Configuration.lafTheme == LAFTheme.HIGH_CONTRAST_DARK) {
|
||||
//this fixes the white border on the jScrollBar panes
|
||||
scrollPane.getHorizontalScrollBar().setBackground(blackScrollBackground);
|
||||
scrollPane.getHorizontalScrollBar().setForeground(blackScrollForeground);
|
||||
scrollPane.getVerticalScrollBar().setBackground(blackScrollBackground);
|
||||
scrollPane.getVerticalScrollBar().setForeground(blackScrollForeground);
|
||||
} else if (Configuration.lafTheme.isDark()) {
|
||||
//this fixes the white border on the jScrollBar panes
|
||||
scrollPane.getHorizontalScrollBar().setBackground(darkScrollBackground);
|
||||
scrollPane.getHorizontalScrollBar().setForeground(darkScrollForeground);
|
||||
scrollPane.getVerticalScrollBar().setBackground(darkScrollBackground);
|
||||
scrollPane.getVerticalScrollBar().setForeground(darkScrollForeground);
|
||||
}
|
||||
public SearchableRSyntaxTextArea()
|
||||
{
|
||||
if (Configuration.lafTheme == LAFTheme.HIGH_CONTRAST_DARK)
|
||||
{
|
||||
//this fixes the white border on the jScrollBar panes
|
||||
scrollPane.getHorizontalScrollBar().setBackground(blackScrollBackground);
|
||||
scrollPane.getHorizontalScrollBar().setForeground(blackScrollForeground);
|
||||
scrollPane.getVerticalScrollBar().setBackground(blackScrollBackground);
|
||||
scrollPane.getVerticalScrollBar().setForeground(blackScrollForeground);
|
||||
} else if (Configuration.lafTheme.isDark())
|
||||
{
|
||||
//this fixes the white border on the jScrollBar panes
|
||||
scrollPane.getHorizontalScrollBar().setBackground(darkScrollBackground);
|
||||
scrollPane.getHorizontalScrollBar().setForeground(darkScrollForeground);
|
||||
scrollPane.getVerticalScrollBar().setBackground(darkScrollBackground);
|
||||
scrollPane.getVerticalScrollBar().setForeground(darkScrollForeground);
|
||||
}
|
||||
|
||||
setAntiAliasingEnabled(true);
|
||||
this.textAreaSearchPanel = new TextAreaSearchPanel(this);
|
||||
|
||||
scrollPane.setColumnHeaderView(searchPanel);
|
||||
setAntiAliasingEnabled(true);
|
||||
|
||||
JButton searchNext = new JButton();
|
||||
JButton searchPrev = new JButton();
|
||||
JPanel buttonPane = new JPanel(new BorderLayout());
|
||||
buttonPane.add(searchNext, BorderLayout.WEST);
|
||||
buttonPane.add(searchPrev, BorderLayout.EAST);
|
||||
searchNext.setIcon(IconResources.nextIcon);
|
||||
searchPrev.setIcon(IconResources.prevIcon);
|
||||
searchPanel.add(buttonPane, BorderLayout.WEST);
|
||||
searchPanel.add(searchInput, BorderLayout.CENTER);
|
||||
searchPanel.add(caseSensitiveSearch, BorderLayout.EAST);
|
||||
addKeyListener(new PressKeyListener(keyEvent ->
|
||||
{
|
||||
if ((keyEvent.getKeyCode() == KeyEvent.VK_F) && ((keyEvent.getModifiersEx() & KeyEvent.CTRL_DOWN_MASK) != 0))
|
||||
this.textAreaSearchPanel.getSearchInput().requestFocusInWindow();
|
||||
|
||||
searchNext.addActionListener(arg0 -> search(searchInput.getText(), true, caseSensitiveSearch.isSelected()));
|
||||
searchPrev.addActionListener(arg0 -> search(searchInput.getText(), false, caseSensitiveSearch.isSelected()));
|
||||
if (onCtrlS != null && (keyEvent.getKeyCode() == KeyEvent.VK_S) && ((keyEvent.getModifiersEx() & KeyEvent.CTRL_DOWN_MASK) != 0))
|
||||
{
|
||||
onCtrlS.run();
|
||||
return;
|
||||
}
|
||||
|
||||
searchInput.addKeyListener(new ReleaseKeyListener(keyEvent ->
|
||||
{
|
||||
if (keyEvent.getKeyCode() == KeyEvent.VK_ENTER)
|
||||
search(searchInput.getText(), true, caseSensitiveSearch.isSelected());
|
||||
}));
|
||||
GlobalHotKeys.keyPressed(keyEvent);
|
||||
}));
|
||||
|
||||
addKeyListener(new PressKeyListener(keyEvent ->
|
||||
{
|
||||
if ((keyEvent.getKeyCode() == KeyEvent.VK_F) && ((keyEvent.getModifiersEx() & KeyEvent.CTRL_DOWN_MASK) != 0))
|
||||
searchInput.requestFocus();
|
||||
setCursor(new Cursor(Cursor.TEXT_CURSOR));
|
||||
getCaret().setBlinkRate(0);
|
||||
getCaret().setVisible(true);
|
||||
addFocusListener(new FocusAdapter()
|
||||
{
|
||||
@Override
|
||||
public void focusGained(FocusEvent e)
|
||||
{
|
||||
getCaret().setVisible(true);
|
||||
}
|
||||
|
||||
if (onCtrlS != null && (keyEvent.getKeyCode() == KeyEvent.VK_S) && ((keyEvent.getModifiersEx() & KeyEvent.CTRL_DOWN_MASK) != 0)) {
|
||||
onCtrlS.run();
|
||||
return;
|
||||
}
|
||||
@Override
|
||||
public void focusLost(FocusEvent e)
|
||||
{
|
||||
getCaret().setVisible(true);
|
||||
}
|
||||
});
|
||||
|
||||
GlobalHotKeys.keyPressed(keyEvent);
|
||||
}));
|
||||
final Font newFont = getFont().deriveFont((float) BytecodeViewer.viewer.getFontSize());
|
||||
|
||||
final Font newFont = getFont().deriveFont((float) BytecodeViewer.viewer.getFontSize());
|
||||
//set number-bar font
|
||||
setFont(newFont);
|
||||
|
||||
//set number-bar font
|
||||
setFont(newFont);
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
//attach CTRL + Mouse Wheel Zoom
|
||||
attachCtrlMouseWheelZoom();
|
||||
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
//attach CTRL + Mouse Wheel Zoom
|
||||
attachCtrlMouseWheelZoom();
|
||||
//set text font
|
||||
setFont(newFont);
|
||||
});
|
||||
|
||||
//set text font
|
||||
setFont(newFont);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
public void search(String search, boolean forwardSearchDirection, boolean caseSensitiveSearch)
|
||||
{
|
||||
JTextAreaUtils.search(this, search, forwardSearchDirection, caseSensitiveSearch);
|
||||
}
|
||||
|
||||
public void search(String search, boolean forwardSearchDirection, boolean caseSensitiveSearch) {
|
||||
JTextAreaUtils.search(this, search, forwardSearchDirection, caseSensitiveSearch);
|
||||
}
|
||||
public void highlight(String pattern, boolean caseSensitiveSearch)
|
||||
{
|
||||
JTextAreaUtils.highlight(this, pattern, caseSensitiveSearch);
|
||||
}
|
||||
|
||||
public void highlight(String pattern, boolean caseSensitiveSearch) {
|
||||
JTextAreaUtils.highlight(this, pattern, caseSensitiveSearch);
|
||||
}
|
||||
public void attachCtrlMouseWheelZoom()
|
||||
{
|
||||
scrollPane.addMouseWheelListener(e -> {
|
||||
if (getText().isEmpty()) return;
|
||||
if ((e.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) != 0)
|
||||
{
|
||||
Font font = getFont();
|
||||
int size = font.getSize();
|
||||
if (e.getWheelRotation() > 0)
|
||||
setFont(new Font(font.getName(), font.getStyle(), --size >= 2 ? --size : 2));
|
||||
else
|
||||
setFont(new Font(font.getName(), font.getStyle(), ++size));
|
||||
|
||||
public void attachCtrlMouseWheelZoom() {
|
||||
scrollPane.addMouseWheelListener(e -> {
|
||||
if (getText().isEmpty()) return;
|
||||
if ((e.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) != 0) {
|
||||
Font font = getFont();
|
||||
int size = font.getSize();
|
||||
if (e.getWheelRotation() > 0)
|
||||
setFont(new Font(font.getName(), font.getStyle(), --size >= 2 ? --size : 2));
|
||||
else
|
||||
setFont(new Font(font.getName(), font.getStyle(), ++size));
|
||||
e.consume();
|
||||
}
|
||||
});
|
||||
|
||||
e.consume();
|
||||
}
|
||||
});
|
||||
scrollPane = new RTextScrollPane()
|
||||
{
|
||||
@Override
|
||||
protected void processMouseWheelEvent(MouseWheelEvent event)
|
||||
{
|
||||
if (!isWheelScrollingEnabled())
|
||||
{
|
||||
if (getParent() != null)
|
||||
{
|
||||
getParent().dispatchEvent(SwingUtilities.convertMouseEvent(this, event, getParent()));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
scrollPane = new RTextScrollPane() {
|
||||
@Override
|
||||
protected void processMouseWheelEvent(MouseWheelEvent event) {
|
||||
if (!isWheelScrollingEnabled()) {
|
||||
if (getParent() != null) {
|
||||
getParent().dispatchEvent(SwingUtilities.convertMouseEvent(this, event, getParent()));
|
||||
return;
|
||||
}
|
||||
}
|
||||
super.processMouseWheelEvent(event);
|
||||
}
|
||||
};
|
||||
|
||||
super.processMouseWheelEvent(event);
|
||||
}
|
||||
};
|
||||
scrollPane.setWheelScrollingEnabled(false);
|
||||
}
|
||||
|
||||
scrollPane.setWheelScrollingEnabled(false);
|
||||
}
|
||||
public String getLineText(int line)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (line < getLineCount())
|
||||
{
|
||||
int start = getLineStartOffset(line);
|
||||
int end = getLineEndOffset(line);
|
||||
return getText(start, end - start).trim();
|
||||
}
|
||||
} catch (BadLocationException ignored)
|
||||
{
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public String getLineText(int line) {
|
||||
try {
|
||||
if (line < getLineCount()) {
|
||||
int start = getLineStartOffset(line);
|
||||
int end = getLineEndOffset(line);
|
||||
return getText(start, end - start).trim();
|
||||
}
|
||||
} catch (BadLocationException ignored) {
|
||||
}
|
||||
return "";
|
||||
}
|
||||
public void setOnCtrlS(Runnable onCtrlS)
|
||||
{
|
||||
this.onCtrlS = onCtrlS;
|
||||
}
|
||||
|
||||
public void setOnCtrlS(Runnable onCtrlS) {
|
||||
this.onCtrlS = onCtrlS;
|
||||
}
|
||||
public RTextScrollPane getScrollPane()
|
||||
{
|
||||
return scrollPane;
|
||||
}
|
||||
|
||||
public RTextScrollPane getScrollPane() {
|
||||
return scrollPane;
|
||||
}
|
||||
public TextAreaSearchPanel getTextAreaSearchPanel()
|
||||
{
|
||||
return textAreaSearchPanel;
|
||||
}
|
||||
|
||||
public JPanel getSearchPanel() {
|
||||
return searchPanel;
|
||||
}
|
||||
|
||||
public JTextField getSearchInput() {
|
||||
return searchInput;
|
||||
}
|
||||
|
||||
public JCheckBox getCaseSensitiveSearch() {
|
||||
return caseSensitiveSearch;
|
||||
}
|
||||
|
||||
public JLabel getTitleHeader() {
|
||||
return titleHeader;
|
||||
}
|
||||
|
||||
public Runnable getOnCtrlS() {
|
||||
return onCtrlS;
|
||||
}
|
||||
public Runnable getOnCtrlS()
|
||||
{
|
||||
return onCtrlS;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,21 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.swing.BoxLayout;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JMenu;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.Configuration.useNewSettingsDialog;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -31,6 +16,21 @@ import static the.bytecode.club.bytecodeviewer.Configuration.useNewSettingsDialo
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.swing.BoxLayout;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JMenu;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
|
||||
import static the.bytecode.club.bytecodeviewer.Configuration.useNewSettingsDialog;
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @since 7/19/2021
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -18,6 +16,8 @@ package the.bytecode.club.bytecodeviewer.gui.components;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
/**
|
||||
* A simple console GUI.
|
||||
*
|
||||
|
|
|
@ -0,0 +1,90 @@
|
|||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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/>. *
|
||||
***************************************************************************/
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import the.bytecode.club.bytecodeviewer.gui.components.listeners.ReleaseKeyListener;
|
||||
import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
||||
import the.bytecode.club.bytecodeviewer.translation.TranslatedComponents;
|
||||
import the.bytecode.club.bytecodeviewer.translation.components.TranslatedJCheckBox;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.KeyEvent;
|
||||
|
||||
/**
|
||||
* This panel represents the decompiler name and search box on the top of every {@link the.bytecode.club.bytecodeviewer.gui.resourceviewer.BytecodeViewPanel}
|
||||
* <p>
|
||||
* Created by Bl3nd.
|
||||
* Date: 9/6/2024
|
||||
*/
|
||||
public class TextAreaSearchPanel extends JPanel
|
||||
{
|
||||
private final JCheckBox caseSensitiveSearch = new TranslatedJCheckBox("Match case", TranslatedComponents.MATCH_CASE);
|
||||
private final JLabel titleHeader = new JLabel("");
|
||||
private final JTextField searchInput = new JTextField();
|
||||
private final JTextArea textArea;
|
||||
|
||||
public TextAreaSearchPanel(JTextArea textArea)
|
||||
{
|
||||
super(new BorderLayout());
|
||||
this.textArea = textArea;
|
||||
setup();
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
private void setup()
|
||||
{
|
||||
this.add(titleHeader, BorderLayout.NORTH);
|
||||
|
||||
JPanel searchPanel = new JPanel();
|
||||
searchPanel.setLayout(new BoxLayout(searchPanel, BoxLayout.X_AXIS));
|
||||
|
||||
searchPanel.add(Box.createHorizontalStrut(35));
|
||||
JButton searchNext = new JButton(IconResources.nextIcon);
|
||||
searchPanel.add(searchNext);
|
||||
searchNext.addActionListener(arg0 -> ((SearchableRSyntaxTextArea) textArea).search(searchInput.getText(), true, caseSensitiveSearch.isSelected()));
|
||||
|
||||
JButton searchPrev = new JButton(IconResources.prevIcon);
|
||||
searchPanel.add(searchPrev);
|
||||
searchPrev.addActionListener(arg0 -> ((SearchableRSyntaxTextArea) textArea).search(searchInput.getText(), false, caseSensitiveSearch.isSelected()));
|
||||
|
||||
searchPanel.add(searchInput);
|
||||
searchInput.addKeyListener(new ReleaseKeyListener(keyEvent ->
|
||||
{
|
||||
if (keyEvent.getKeyCode() == KeyEvent.VK_ENTER)
|
||||
((SearchableRSyntaxTextArea) textArea).search(searchInput.getText(), true, caseSensitiveSearch.isSelected());
|
||||
}));
|
||||
|
||||
searchPanel.add(caseSensitiveSearch);
|
||||
|
||||
// This is needed to add more room to the right of the sensitive search check box
|
||||
searchPanel.add(Box.createHorizontalStrut(2));
|
||||
|
||||
this.add(searchPanel, BorderLayout.SOUTH);
|
||||
}
|
||||
|
||||
public JLabel getTitleHeader()
|
||||
{
|
||||
return titleHeader;
|
||||
}
|
||||
|
||||
public JTextField getSearchInput()
|
||||
{
|
||||
return searchInput;
|
||||
}
|
||||
}
|
|
@ -1,15 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import com.github.weisj.darklaf.iconset.AllIcons;
|
||||
import javax.swing.BorderFactory;
|
||||
import javax.swing.JInternalFrame;
|
||||
import the.bytecode.club.bytecodeviewer.Configuration;
|
||||
import the.bytecode.club.bytecodeviewer.gui.theme.LAFTheme;
|
||||
import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -25,6 +16,15 @@ import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import com.github.weisj.darklaf.iconset.AllIcons;
|
||||
import javax.swing.BorderFactory;
|
||||
import javax.swing.JInternalFrame;
|
||||
import the.bytecode.club.bytecodeviewer.Configuration;
|
||||
import the.bytecode.club.bytecodeviewer.gui.theme.LAFTheme;
|
||||
import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
||||
|
||||
/**
|
||||
* Used to represent all the panes inside of Bytecode Viewer.
|
||||
*
|
||||
|
@ -35,7 +35,7 @@ import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
|||
|
||||
public abstract class VisibleComponent extends JInternalFrame
|
||||
{
|
||||
public VisibleComponent(final String title)
|
||||
public VisibleComponent(String title)
|
||||
{
|
||||
super(title, false, false, false, false);
|
||||
this.setDefaultIcon();
|
||||
|
|
|
@ -1,18 +1,6 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import javax.swing.Icon;
|
||||
|
||||
import com.github.weisj.darklaf.components.RotatableIconAnimator;
|
||||
import com.github.weisj.darklaf.components.loading.LoadingIndicator;
|
||||
import com.github.weisj.darklaf.iconset.AllIcons;
|
||||
import com.github.weisj.darklaf.properties.icons.RotatableIcon;
|
||||
import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
||||
|
||||
import java.awt.event.*;
|
||||
|
||||
/***************************************************************************
|
||||
* Bytecode Viewer (BCV) - Java & Android Reverse Engineering Suite *
|
||||
* Copyright (C) 2014 Kalen 'Konloch' Kinloch - http://bytecodeviewer.com *
|
||||
* Copyright (C) 2014 Konloch - Konloch.com / 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 *
|
||||
|
@ -28,6 +16,18 @@ import java.awt.event.*;
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***************************************************************************/
|
||||
|
||||
package the.bytecode.club.bytecodeviewer.gui.components;
|
||||
|
||||
import javax.swing.Icon;
|
||||
|
||||
import com.github.weisj.darklaf.components.RotatableIconAnimator;
|
||||
import com.github.weisj.darklaf.components.loading.LoadingIndicator;
|
||||
import com.github.weisj.darklaf.iconset.AllIcons;
|
||||
import com.github.weisj.darklaf.properties.icons.RotatableIcon;
|
||||
import the.bytecode.club.bytecodeviewer.resources.IconResources;
|
||||
|
||||
import java.awt.event.*;
|
||||
|
||||
/**
|
||||
* @author Konloch
|
||||
* @since 7/4/2021
|
||||
|
|
|
@ -0,0 +1,348 @@
|
|||
package the.bytecode.club.bytecodeviewer.gui.components.actions;
|
||||
|
||||
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
|
||||
import org.fife.ui.rsyntaxtextarea.Token;
|
||||
import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
||||
import the.bytecode.club.bytecodeviewer.gui.resourceviewer.BytecodeViewPanel;
|
||||
import the.bytecode.club.bytecodeviewer.gui.resourceviewer.viewer.ClassViewer;
|
||||
import the.bytecode.club.bytecodeviewer.gui.util.BytecodeViewPanelUpdater;
|
||||
import the.bytecode.club.bytecodeviewer.resources.ResourceContainer;
|
||||
import the.bytecode.club.bytecodeviewer.resources.classcontainer.ClassFileContainer;
|
||||
import the.bytecode.club.bytecodeviewer.resources.classcontainer.locations.ClassFieldLocation;
|
||||
import the.bytecode.club.bytecodeviewer.resources.classcontainer.locations.ClassMethodLocation;
|
||||
import the.bytecode.club.bytecodeviewer.resources.classcontainer.locations.ClassReferenceLocation;
|
||||
import the.bytecode.club.bytecodeviewer.resources.classcontainer.parser.TokenUtil;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.CaretEvent;
|
||||
import javax.swing.event.CaretListener;
|
||||
import javax.swing.text.Element;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* This action is triggered by a user typing (CTRL+B). This goes to a specific variables declaration whether it be in the opened class, or a class within the jar.
|
||||
* <p>
|
||||
* Created by Bl3nd.
|
||||
* Date: 9/7/2024
|
||||
*/
|
||||
public class GoToAction extends AbstractAction
|
||||
{
|
||||
private final ClassFileContainer container;
|
||||
|
||||
public GoToAction(ClassFileContainer classFileContainer)
|
||||
{
|
||||
this.container = classFileContainer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e)
|
||||
{
|
||||
RSyntaxTextArea textArea = (RSyntaxTextArea) e.getSource();
|
||||
int line = textArea.getCaretLineNumber() + 1;
|
||||
int column = textArea.getCaretOffsetFromLineStart();
|
||||
|
||||
container.fieldMembers.values().forEach(fields -> fields.forEach(field -> {
|
||||
if (field.line == line && field.columnStart - 1 <= column && field.columnEnd >= column)
|
||||
{
|
||||
Element root = textArea.getDocument().getDefaultRootElement();
|
||||
// Open the class that is associated with the field's owner.
|
||||
if (!field.owner.equals(container.getName()))
|
||||
{
|
||||
open(textArea, false, true, false);
|
||||
return;
|
||||
}
|
||||
|
||||
ClassFieldLocation first = fields.get(0);
|
||||
int startOffset = root.getElement(first.line - 1).getStartOffset() + (first.columnStart - 1);
|
||||
textArea.setCaretPosition(startOffset);
|
||||
}
|
||||
}));
|
||||
|
||||
container.methodParameterMembers.values().forEach(parameters -> parameters.forEach(parameter -> {
|
||||
if (parameter.line == line && parameter.columnStart - 1 <= column && parameter.columnEnd >= column)
|
||||
{
|
||||
Element root = textArea.getDocument().getDefaultRootElement();
|
||||
if (parameter.decRef.equalsIgnoreCase("declaration"))
|
||||
{
|
||||
int startOffset = root.getElement(parameter.line - 1).getStartOffset() + (parameter.columnStart - 1);
|
||||
textArea.setCaretPosition(startOffset);
|
||||
} else
|
||||
{
|
||||
String method = parameter.method;
|
||||
parameters.stream().filter(classParameterLocation -> classParameterLocation.method.equals(method)).forEach(classParameterLocation -> {
|
||||
if (classParameterLocation.decRef.equalsIgnoreCase("declaration"))
|
||||
{
|
||||
int startOffset = root.getElement(classParameterLocation.line - 1).getStartOffset() + (classParameterLocation.columnStart - 1);
|
||||
textArea.setCaretPosition(startOffset);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
||||
container.methodLocalMembers.values().forEach(localMembers -> localMembers.forEach(localMember -> {
|
||||
if (localMember.line == line && localMember.columnStart - 1 <= column && localMember.columnEnd >= column)
|
||||
{
|
||||
Element root = textArea.getDocument().getDefaultRootElement();
|
||||
if (localMember.decRef.equals("declaration"))
|
||||
{
|
||||
int startOffset = root.getElement(localMember.line - 1).getStartOffset() + (localMember.columnStart - 1);
|
||||
textArea.setCaretPosition(startOffset);
|
||||
} else
|
||||
{
|
||||
String method = localMember.method;
|
||||
localMembers.stream().filter(classLocalVariableLocation -> classLocalVariableLocation.method.equals(method)).forEach(classLocalVariableLocation -> {
|
||||
if (classLocalVariableLocation.decRef.equalsIgnoreCase("declaration"))
|
||||
{
|
||||
int startOffset = root.getElement(classLocalVariableLocation.line - 1).getStartOffset() + (classLocalVariableLocation.columnStart - 1);
|
||||
textArea.setCaretPosition(startOffset);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
||||
container.methodMembers.values().forEach(methods -> methods.forEach(method -> {
|
||||
if (method.line == line && method.columnStart - 1 <= column && method.columnEnd >= column)
|
||||
{
|
||||
Element root = textArea.getDocument().getDefaultRootElement();
|
||||
if (method.decRef.equalsIgnoreCase("declaration"))
|
||||
{
|
||||
int startOffset = root.getElement(method.line - 1).getStartOffset() + (method.columnStart - 1);
|
||||
textArea.setCaretPosition(startOffset);
|
||||
} else
|
||||
{
|
||||
methods.stream().filter(classMethodLocation -> classMethodLocation.owner.equals(method.owner)).forEach(classMethodLocation -> {
|
||||
if (classMethodLocation.decRef.equalsIgnoreCase("declaration"))
|
||||
{
|
||||
int startOffset = root.getElement(classMethodLocation.line - 1).getStartOffset() + (classMethodLocation.columnStart - 1);
|
||||
textArea.setCaretPosition(startOffset);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
open(textArea, false, false, true);
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
||||
container.classReferences.values().forEach(classes -> classes.forEach(clazz -> {
|
||||
String name;
|
||||
if (clazz.line == line && clazz.columnStart - 1 <= column && clazz.columnEnd - 1 >= column)
|
||||
{
|
||||
name = clazz.owner;
|
||||
Element root = textArea.getDocument().getDefaultRootElement();
|
||||
if (clazz.type.equals("declaration"))
|
||||
{
|
||||
int startOffset = root.getElement(clazz.line - 1).getStartOffset() + (clazz.columnStart - 1);
|
||||
textArea.setCaretPosition(startOffset);
|
||||
} else
|
||||
{
|
||||
classes.stream().filter(classReferenceLocation -> classReferenceLocation.owner.equals(name)).forEach(classReferenceLocation -> {
|
||||
if (classReferenceLocation.type.equals("declaration"))
|
||||
{
|
||||
int startOffset = root.getElement(classReferenceLocation.line - 1).getStartOffset() + (classReferenceLocation.columnStart - 1);
|
||||
textArea.setCaretPosition(startOffset);
|
||||
}
|
||||
});
|
||||
|
||||
// Should not really do anything when the class is already open
|
||||
open(textArea, true, false, false);
|
||||
}
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
private ClassFileContainer openClass(String lexeme, boolean field, boolean method)
|
||||
{
|
||||
if (lexeme.equals(container.getName()))
|
||||
return null;
|
||||
|
||||
ResourceContainer resourceContainer = BytecodeViewer.getFileContainer(container.getParentContainer());
|
||||
if (resourceContainer == null)
|
||||
return null;
|
||||
|
||||
if (field)
|
||||
{
|
||||
String className = container.getClassForField(lexeme);
|
||||
BytecodeViewer.viewer.workPane.addClassResource(resourceContainer, className + ".class");
|
||||
ClassViewer activeResource = (ClassViewer) BytecodeViewer.viewer.workPane.getActiveResource();
|
||||
HashMap<String, ClassFileContainer> classFiles = BytecodeViewer.viewer.workPane.classFiles;
|
||||
return wait(classFiles, activeResource);
|
||||
} else if (method)
|
||||
{
|
||||
ClassMethodLocation classMethodLocation = container.getMethodLocationsFor(lexeme).get(0);
|
||||
ClassReferenceLocation classReferenceLocation = null;
|
||||
try
|
||||
{
|
||||
classReferenceLocation = container.getClassReferenceLocationsFor(classMethodLocation.owner).get(0);
|
||||
} catch (Exception ignored)
|
||||
{
|
||||
}
|
||||
|
||||
if (classReferenceLocation == null)
|
||||
return null;
|
||||
|
||||
String packagePath = classReferenceLocation.packagePath;
|
||||
if (packagePath.startsWith("java") || packagePath.startsWith("javax") || packagePath.startsWith("com.sun"))
|
||||
return null;
|
||||
|
||||
String resourceName = packagePath + "/" + classMethodLocation.owner;
|
||||
if (resourceContainer.resourceClasses.containsKey(resourceName))
|
||||
{
|
||||
BytecodeViewer.viewer.workPane.addClassResource(resourceContainer, resourceName + ".class");
|
||||
ClassViewer activeResource = (ClassViewer) BytecodeViewer.viewer.workPane.getActiveResource();
|
||||
HashMap<String, ClassFileContainer> classFiles = BytecodeViewer.viewer.workPane.classFiles;
|
||||
return wait(classFiles, activeResource);
|
||||
}
|
||||
} else
|
||||
{
|
||||
ClassReferenceLocation classReferenceLocation = container.getClassReferenceLocationsFor(lexeme).get(0);
|
||||
String packagePath = classReferenceLocation.packagePath;
|
||||
if (packagePath.startsWith("java") || packagePath.startsWith("javax") || packagePath.startsWith("com.sun"))
|
||||
return null;
|
||||
|
||||
String resourceName = packagePath + "/" + lexeme;
|
||||
if (resourceContainer.resourceClasses.containsKey(resourceName))
|
||||
{
|
||||
BytecodeViewer.viewer.workPane.addClassResource(resourceContainer, resourceName + ".class");
|
||||
ClassViewer activeResource = (ClassViewer) BytecodeViewer.viewer.workPane.getActiveResource();
|
||||
HashMap<String, ClassFileContainer> classFiles = BytecodeViewer.viewer.workPane.classFiles;
|
||||
return wait(classFiles, activeResource);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private void open(RSyntaxTextArea textArea, boolean isClass, boolean isField, boolean isMethod)
|
||||
{
|
||||
Thread thread = new Thread(() -> {
|
||||
Token token = textArea.modelToToken(textArea.getCaretPosition());
|
||||
token = TokenUtil.getToken(textArea, token);
|
||||
String lexeme = token.getLexeme();
|
||||
ClassFileContainer classFileContainer;
|
||||
if (isClass)
|
||||
{
|
||||
classFileContainer = openClass(lexeme, false, false);
|
||||
if (classFileContainer == null)
|
||||
return;
|
||||
|
||||
classFileContainer.classReferences.forEach((className, classReference) -> {
|
||||
if (className.equals(lexeme))
|
||||
{
|
||||
classReference.forEach(classReferenceLocation -> {
|
||||
if (classReferenceLocation.type.equals("declaration"))
|
||||
{
|
||||
moveCursor(classReferenceLocation.line, classReferenceLocation.columnStart);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} else if (isField)
|
||||
{
|
||||
classFileContainer = openClass(lexeme, true, false);
|
||||
if (classFileContainer == null)
|
||||
return;
|
||||
|
||||
classFileContainer.fieldMembers.forEach((fieldName, fields) -> {
|
||||
if (fieldName.equals(lexeme))
|
||||
{
|
||||
fields.forEach(classFieldLocation -> {
|
||||
if (classFieldLocation.type.equals("declaration"))
|
||||
{
|
||||
moveCursor(classFieldLocation.line, classFieldLocation.columnStart);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} else if (isMethod)
|
||||
{
|
||||
classFileContainer = openClass(lexeme, false, true);
|
||||
if (classFileContainer == null)
|
||||
return;
|
||||
|
||||
classFileContainer.methodMembers.forEach((methodName, methods) -> {
|
||||
if (methodName.equals(lexeme))
|
||||
{
|
||||
methods.forEach(method -> {
|
||||
if (method.decRef.equalsIgnoreCase("declaration"))
|
||||
{
|
||||
moveCursor(method.line, method.columnStart);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}, "Open Class");
|
||||
thread.start();
|
||||
}
|
||||
|
||||
private ClassFileContainer wait(HashMap<String, ClassFileContainer> classFiles, ClassViewer activeResource)
|
||||
{
|
||||
String containerName = activeResource.resource.workingName + "-" + this.container.getDecompiler();
|
||||
try
|
||||
{
|
||||
BytecodeViewer.updateBusyStatus(true);
|
||||
Thread.getAllStackTraces().forEach((name, stackTrace) -> {
|
||||
if (name.getName().equals("Pane Update"))
|
||||
{
|
||||
try
|
||||
{
|
||||
name.join();
|
||||
} catch (InterruptedException e)
|
||||
{
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (Exception e)
|
||||
{
|
||||
throw new RuntimeException(e);
|
||||
} finally
|
||||
{
|
||||
BytecodeViewer.updateBusyStatus(false);
|
||||
}
|
||||
|
||||
return classFiles.get(containerName);
|
||||
}
|
||||
|
||||
private void moveCursor(int line, int columnStart)
|
||||
{
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
BytecodeViewPanel panel = ((ClassViewer) BytecodeViewer.viewer.workPane.getActiveResource()).getPanel(i);
|
||||
if (panel.decompiler.getDecompilerName().equals(this.container.getDecompiler()))
|
||||
{
|
||||
Element root = panel.textArea.getDocument().getDefaultRootElement();
|
||||
int startOffset = root.getElement(line - 1).getStartOffset() + (columnStart - 1);
|
||||
panel.textArea.setCaretPosition(startOffset);
|
||||
for (CaretListener caretListener : panel.textArea.getCaretListeners())
|
||||
{
|
||||
if (caretListener instanceof BytecodeViewPanelUpdater.MarkerCaretListener)
|
||||
{
|
||||
BytecodeViewPanelUpdater.MarkerCaretListener markerCaretListener = (BytecodeViewPanelUpdater.MarkerCaretListener) caretListener;
|
||||
markerCaretListener.caretUpdate(new CaretEvent(panel.textArea)
|
||||
{
|
||||
@Override
|
||||
public int getDot()
|
||||
{
|
||||
return panel.textArea.getCaret().getDot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMark()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
panel.textArea.requestFocusInWindow();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user