Bump to 5.0

This commit is contained in:
Jiri 2021-08-09 18:42:34 +02:00
commit afbe812d95
12 changed files with 192 additions and 120 deletions

3
.gitignore vendored
View file

@ -1,2 +1,5 @@
/java-runtime-decompiler-2.0.tar.gz
/java-runtime-decompiler-3.0.tar.gz
/java-runtime-decompiler-4.0.tar.gz
/java-runtime-decompiler-5.0.beta2.tar.gz
/java-runtime-decompiler-5.0.rc1.tar.gz

View file

@ -1,7 +1,7 @@
diff --git a/runtime-decompiler/src/main/java/org/jrd/frontend/MainFrame/MainFrameView.java b/runtime-decompiler/src/main/java/org/jrd/frontend/MainFrame/MainFrameView.java
index 86f9a87..18dce1a 100644
--- a/runtime-decompiler/src/main/java/org/jrd/frontend/MainFrame/MainFrameView.java
+++ b/runtime-decompiler/src/main/java/org/jrd/frontend/MainFrame/MainFrameView.java
--- runtime-decompiler/src/main/java/org/jrd/frontend/MainFrame/MainFrameView.java
+++ runtime-decompiler/src/main/java/org/jrd/frontend/MainFrame/MainFrameView.java
@@ -174,11 +174,11 @@ public class MainFrameView {
welcomeJTextArea = new JTextArea(9, 40);
welcomeJTextArea.setText("Welcome to Java-Runtime-Decompiler\n" +

View file

@ -41,7 +41,7 @@ _set_java_home
set_jvm
# all dependencies must be on classpath
set_classpath java-runtime-decompiler byteman google-gson
set_classpath java-runtime-decompiler byteman google-gson classpathless-compiler
CLASSPATH=$CLASSPATH:${JAVA_HOME}/lib/tools.jar
# set path to agent automatically
@ -82,5 +82,5 @@ else
echo "Agent was not found and agent path was not set correctly. This has to be done manually in the decompiler GUI, or set AGENT_PATH===path_to_agent_jar in the configuration file: $CONFIG_FILE" >&2
fi
run "$@"
export FLAGS="$FLAGS -Djdk.attach.allowAttachSelf=true"
run "$@"

View file

@ -1,32 +0,0 @@
.TH java-runtime-decompiler 1 "26 August 2019" "version 3.0"
.SH NAME
java-runtime-decompiler \- launch java-runtime decompiler GUI
.SH SYNOPSIS
java-runtime-decompiler
.SH DESCRIPTION
It is used for extraction of bytecode from running JVM and decompilation of the bytecode with an external decompiler. Paths to the decompiler need to be specified in .json configuration file located in /etc/java-runtime-decompiler
.SH OPTIONS
.IP -verbose
Print out all exceptions and debugging strings in stdout.
.IP -help
Print out help and exits.
.IP -listjvms
List available local JVMs.
.IP -listplugins
List currently configured plugins with their status.
.IP "-listclasses pid-xor-url"
List loaded classes from JVM with given PID/URL.
.IP "-bytes pid class-name"
Print on stdout binary form of given class loaded in JVM with given PID/URL.
.IP "-base64bytes pid-xor-url class-name"
Print on stdout binary form encoded in base64 of given class loaded in JVM with given PID/URL.
.IP "-decompile pid-xor-url class-name config-file"
Print on stdout decompiled class, needs PID/URL of JVM, class name and name/file with decompiler configuration, can use javap disassembler. To pass arguments to the disassembler, add them to javap without spaces (e.g. javap-v).
.IP "-overwrite pid/urlOfJVM classToOverwrite fileWithNewBytecode"
three args - pid or url of JVM and class to overwrite and file with new bytecode
.SH AUTHOR
Petra Alice Mikova (petra.alice.mikova@gmail.com)
Jiri Vanek (judovana@email.com)
Radek Manak (Radek.Manak@protonmail.com)
Ondrej Hrdlicka (ondra.ondrah@seznam.cz)

View file

@ -1,17 +1,20 @@
Summary: Application for extraction and decompilation of JVM byte code
Name: java-runtime-decompiler
Version: 3.0
Version: 5.0.rc1
Release: 2%{?dist}
License: GPLv3
URL: https://github.com/pmikova/java-runtime-decompiler
Source0: https://github.com/pmikova/%{name}/archive/%{name}-%{version}.tar.gz
Source1: java-runtime-decompiler
Source2: java-runtime-decompiler.1
Source3: jrd.desktop
Patch0: remove_rsyntaxtextarea.patch
Patch1: systemFernflower.patch
Patch2: systemProcyon.patch
Patch3: fixDoclint.patch
Patch4: systemCfr.patch
Patch5: systemJasm.patch
Patch6: systemJcoder.patch
BuildArch: noarch
BuildRequires: maven-local
BuildRequires: byteman
@ -20,17 +23,22 @@ BuildRequires: ant-junit
BuildRequires: maven-surefire-provider-junit
BuildRequires: maven-surefire
BuildRequires: maven-surefire-plugin
# depends on devel, not runtime (needs tools.jar)
BuildRequires: java-devel = 1:1.8.0
BuildRequires: java-11-devel
BuildRequires: google-gson
BuildRequires: desktop-file-utils
Requires: java-devel = 1:1.8.0
Requires: fernflower
Requires: procyon-decompiler
BuildRequires: classpathless-compiler
Requires: java-11-openjdk-headless
Recommends: java-11-openjdk
Requires: classpathless-compiler
Recommends: fernflower
Recommends: procyon-decompiler
Recommends: CFR
Recommends: openjdk-asmtools
%description
This application can access JVM memory at runtime,
extract byte code from the JVM and decompile it.
%package javadoc
Summary: Javadoc for %{name}
Requires: %{name} = %{version}-%{release}
@ -40,24 +48,26 @@ This package contains the API documentation for %{name}.
%prep
%setup -q -n %{name}-%{name}-%{version}
%patch0 -p1
%patch1
%patch2
%patch3 -p1
%patch0 -p0
%patch1 -p0
%patch2 -p0
%patch4 -p0
%patch5 -p0
%patch6 -p0
%build
pushd runtime-decompiler
%pom_remove_dep com.sun:tools
%pom_add_dep com.sun:tools
%pom_remove_plugin :maven-jar-plugin
popd
export JAVA_TOOL_OPTIONS="-Dadditionalparam=-Xdoclint:none -DadditionalJOption=-Xdoclint:none"
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
%mvn_build -f
java -cp /usr/share/java/classpathless-compiler/classpathless-compiler.jar:runtime-decompiler/target/runtime-decompiler-5.0-SNAPSHOT.jar org.jrd.backend.data.Help > %{name}.1
%install
%mvn_install
install -d -m 755 $RPM_BUILD_ROOT%{_mandir}/man1/
install -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_mandir}/man1/
install -m 644 %{name}.1 $RPM_BUILD_ROOT%{_mandir}/man1/
install -d -m 755 $RPM_BUILD_ROOT%{_bindir}
install -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}/
@ -71,7 +81,6 @@ desktop-file-install --vendor="fedora" \
%files -f .mfiles
%attr(755, root, -) %{_bindir}/java-runtime-decompiler
%{_mandir}/man1/java-runtime-decompiler.1*
# wrappers for decompilers
%dir %{_sysconfdir}/%{name}
%dir %{_sysconfdir}/%{name}/plugins
@ -79,6 +88,12 @@ desktop-file-install --vendor="fedora" \
%config(noreplace) %{_sysconfdir}/%{name}/plugins/FernflowerDecompilerWrapper.json
%config %{_sysconfdir}/%{name}/plugins/ProcyonDecompilerWrapper.java
%config(noreplace) %{_sysconfdir}/%{name}/plugins/ProcyonDecompilerWrapper.json
%config %{_sysconfdir}/%{name}/plugins/CfrDecompilerWrapper.java
%config(noreplace) %{_sysconfdir}/%{name}/plugins/CfrDecompilerWrapper.json
%config %{_sysconfdir}/%{name}/plugins/JasmDecompilerWrapper.java
%config(noreplace) %{_sysconfdir}/%{name}/plugins/JasmDecompilerWrapper.json
%config %{_sysconfdir}/%{name}/plugins/JcoderDecompilerWrapper.java
%config(noreplace) %{_sysconfdir}/%{name}/plugins/JcoderDecompilerWrapper.json
%license LICENSE
%dir %{_datadir}/applications
@ -88,12 +103,59 @@ desktop-file-install --vendor="fedora" \
%license LICENSE
%changelog
* Wed Sep 03 2019 Jiri Vanek <jvanek@redhat.com> - 3.0-2
- Enabled procyon
* Mon Aug 09 2021 Fedora Release Engineering <releng@fedoraproject.org> - 5.0.rc1-1
- adapted manpage
* Mon Aug 02 2021 Fedora Release Engineering <releng@fedoraproject.org> - 5.0.beta2-1
- updated to 5.0
- removed jdk8 subpkg due to compiler api
- added Cfr and asmtools plugins
- todo man page
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 4.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 4.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Tue Dec 08 2020 Jiri Vanek <jvanek@redhat.com> - 4.0-2
- Added subpackage built by jdk8 to allow looking into jdk8 apps
- for some reason, jdk8 vm can not look into jdk11 vm, even if agent is correctly jdk8 version
- the config is still share, which is stupid, but I doubt there is another target audeince then me
* Tue Dec 08 2020 Jiri Vanek <jvanek@redhat.com> - 4.0-1
- built by jdk11
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Fri Jul 10 2020 Jiri Vanek <jvanek@redhat.com> - 3.0-8
- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11
* Tue Mar 17 2020 Jiri Vanek <jvanek@redhat.com> - 3.0-7
- aligned rsyntaxtextarea version, fixed javadoc generation
* Tue Mar 17 2020 Jiri Vanek <jvanek@redhat.com> - 3.0-6
- changed jdk8 requirement
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Tue Aug 27 2019 Jiri Vanek <jvanek@redhat.com> - 3.0-3
- all stdouts from customlauncher moved to stderr
* Mon Aug 26 2019 Jiri Vanek <jvanek@redhat.com> - 3.0-0
- moved to usptream version 3.0
- adjusted configs, removed lambda patch
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Thu Jan 17 2019 Jiri Vanek <jvanek@redhat.com> - 2.0-5
- improved Patch3, includeLambdas.patch to sort the lamdas t the bottom
- disabled doclint, remove invlaid src character
* Thu Jan 17 2019 Jiri Vanek <jvanek@redhat.com> - 2.0-4
- added depndence of procyon decompiler (currenlty under review
@ -104,10 +166,6 @@ desktop-file-install --vendor="fedora" \
- added depndence of fernflower decompiler
- added and applied Patch1, systemFernflower.patch to enable system fernflower
* Mon Dec 3 2018 Petra Mikova <petra.alice.mikova@gmail.com> - 2.0-3
- patch to remove rsyntaxtextarea, because rhel does not have the package(guilty is jvanek, sorry)
- removed from spec and runscript accordingly
* Wed Nov 28 2018 Petra Mikova <petra.alice.mikova@gmail.com> - 2.0-2
- fixed changelog

View file

@ -1,73 +1,52 @@
diff --git a/runtime-decompiler/pom.xml b/runtime-decompiler/pom.xml
index 26a416e..e6e2425 100644
--- a/runtime-decompiler/pom.xml
+++ b/runtime-decompiler/pom.xml
@@ -131,11 +131,6 @@
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
--- runtime-decompiler/pom.xml
+++ runtime-decompiler/pom.xml
@@ -157,11 +157,6 @@
<artifactId>directories</artifactId>
<version>10</version>
</dependency>-->
- <dependency>
- <groupId>com.fifesoft</groupId>
- <artifactId>rsyntaxtextarea</artifactId>
- <version>2.6.1</version>
- <version>3.1.2</version>
- </dependency>
<dependency>
<groupId>org.jboss.byteman</groupId>
<artifactId>byteman-install</artifactId>
@@ -144,24 +139,6 @@
</dependency>
<!-- For tests -->
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-api</artifactId>
- <version>5.5.0</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-params</artifactId>
- <version>5.5.0</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-engine</artifactId>
- <version>5.5.0</version>
- <scope>test</scope>
- </dependency>
</dependencies>
diff --git a/runtime-decompiler/src/main/java/org/jrd/frontend/BytecodeDecompilerView.java b/runtime-decompiler/src/main/java/org/jrd/frontend/BytecodeDecompilerView.java
index 9c19e2c..8d17775 100644
--- a/runtime-decompiler/src/main/java/org/jrd/frontend/MainFrame/BytecodeDecompilerView.java
+++ b/runtime-decompiler/src/main/java/org/jrd/frontend/MainFrame/BytecodeDecompilerView.java
@@ -2,9 +2,9 @@ package org.jrd.frontend.MainFrame;
import org.jrd.backend.core.OutputController;
import org.jrd.backend.decompiling.DecompilerWrapperInformation;
--- runtime-decompiler/src/main/java/org/jrd/frontend/MainFrame/BytecodeDecompilerView.java
+++ runtime-decompiler/src/main/java/org/jrd/frontend/MainFrame/BytecodeDecompilerView.java
@@ -4,11 +4,11 @@ import org.fife.ui.hex.event.HexSearchActionListener;
import org.fife.ui.hex.event.HexSearchDocumentListener;
import org.fife.ui.hex.swing.HexEditor;
import org.fife.ui.hex.swing.HexSearch;
-import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
-import org.fife.ui.rsyntaxtextarea.SyntaxConstants;
-import org.fife.ui.rtextarea.RTextScrollPane;
-import org.fife.ui.rtextarea.SearchContext;
-import org.fife.ui.rtextarea.SearchEngine;
+//import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
+//import org.fife.ui.rsyntaxtextarea.SyntaxConstants;
+//import org.fife.ui.rtextarea.RTextScrollPane;
+//import org.fife.ui.rtextarea.SearchContext;
+//import org.fife.ui.rtextarea.SearchEngine;
import org.jrd.backend.core.OutputController;
import org.jrd.backend.decompiling.DecompilerWrapperInformation;
import javax.swing.*;
import javax.swing.border.EtchedBorder;
@@ -30,8 +30,8 @@ public class BytecodeDecompilerView {
private JPanel rightMainPanel;
@@ -52,8 +52,8 @@ public class BytecodeDecompilerView {
private JPanel rightBin;
private JScrollPane leftScrollPanel;
private JList<String> filteredClassesJlist;
- private RTextScrollPane bytecodeScrollPane;
- private RSyntaxTextArea bytecodeSyntaxTextArea;
+ private JScrollPane bytecodeScrollPane;
+ private JTextArea bytecodeSyntaxTextArea;
private ActionListener bytesActionListener;
private ActionListener classesActionListener;
private ActionListener rewriteActionListener;
@@ -147,10 +147,10 @@ public class BytecodeDecompilerView {
private HexEditor hex;
private JPanel hexControls;
private String lastDecompiledClass = "";
@@ -198,10 +198,10 @@ public class BytecodeDecompilerView {
}
});
@ -80,6 +59,30 @@ index 9c19e2c..8d17775 100644
+ //bytecodeSyntaxTextArea.setCodeFoldingEnabled(true);
+ bytecodeScrollPane = new JScrollPane(bytecodeSyntaxTextArea);
leftMainPanel = new JPanel();
leftMainPanel.setLayout(new BorderLayout());
hex = new HexEditor();
hexControls = new JPanel();
@@ -410,15 +410,15 @@ public class BytecodeDecompilerView {
* Search string in decompiled code
*/
private void searchCode() {
- SearchContext context = new SearchContext();
- String match = searchCodeField.getText();
- context.setSearchFor(match);
- context.setWholeWord(false);
- SearchEngine.markAll(bytecodeSyntaxTextArea, context);
- int line = SearchEngine.getNextMatchPos(match, bytecodeSyntaxTextArea.getText(), true, true, false);
- if (line >= 0) {
- bytecodeSyntaxTextArea.setCaretPosition(line);
- }
+// SearchContext context = new SearchContext();
+// String match = searchCodeField.getText();
+// context.setSearchFor(match);
+// context.setWholeWord(false);
+// SearchEngine.markAll(bytecodeSyntaxTextArea, context);
+// int line = SearchEngine.getNextMatchPos(match, bytecodeSyntaxTextArea.getText(), true, true, false);
+// if (line >= 0) {
+// bytecodeSyntaxTextArea.setCaretPosition(line);
+// }
}
private void classWorker(String name) {

View file

@ -1 +1 @@
SHA512 (java-runtime-decompiler-3.0.tar.gz) = 329184689763b7777ef0bad1c0f787aa649f855692b52bd843cacd424d5d2c0caadad328f80cd7f229031a151b6414c712bd770abd285412055c5d34d932875c
SHA512 (java-runtime-decompiler-5.0.rc1.tar.gz) = c864e4847d83a25d241811cec9afe26b7c600e7f57f7c141ce85490936f414385d11334f20fb787fe32e65edb6e6fbf8028e2ca346f00ac6bfd716d6b4328576

14
systemCfr.patch Normal file
View file

@ -0,0 +1,14 @@
--- runtime-decompiler/src/plugins/CfrDecompilerWrapper.json
+++ runtime-decompiler/src/plugins/CfrDecompilerWrapper.json
@@ -1,8 +1,8 @@
{
"Name": "Cfr",
- "WrapperURL": "file://${XDG_CONFIG_HOME}/plugins/CfrDecompilerWrapper.java",
+ "WrapperURL": "file:/etc/java-runtime-decompiler/plugins/CfrDecompilerWrapper.java",
"DependencyURL": [
- "file://${HOME}/.m2/repository/org/benf/cfr/0.151/cfr-0.151.jar"
+ "file:/usr/share/java/CFR/cfr.jar"
],
"DecompilerDownloadURL": "https://www.benf.org/other/cfr/faq.html"
}

View file

@ -4,13 +4,12 @@
{
"Name": "Fernflower",
- "WrapperURL": "file://${XDG_CONFIG_HOME}/plugins/FernflowerDecompilerWrapper.java",
+ "WrapperURL": "file:///etc/java-runtime-decompiler/plugins/FernflowerDecompilerWrapper.java",
+ "WrapperURL": "file:///etc/java-runtime-decompiler/plugins/FernflowerDecompilerWrapper.java",
"DependencyURL": [
- "file://${HOME}/.m2/repository/org/jboss/windup/decompiler/decompiler-fernflower/4.2.1.Final/decompiler-fernflower-4.2.1.Final.jar",
- "file://${HOME}/.m2/repository/org/jboss/windup/decompiler/decompiler-fernflower/5.1.4.Final/decompiler-fernflower-5.1.4.Final.jar",
- "file://${HOME}/.m2/repository/org/jboss/windup/decompiler/fernflower/windup-fernflower/1.0.0.20171018/windup-fernflower-1.0.0.20171018.jar"
+ "file:///usr/share/java/fernflower.jar"
],
"DecompilerDownloadURL": "https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine"
-}
\ No newline at end of file
+}
}

14
systemJasm.patch Normal file
View file

@ -0,0 +1,14 @@
--- runtime-decompiler/src/plugins/JasmDecompilerWrapper.json 2018-11-12 15:25:47.000000000 +0100
+++ runtime-decompiler/src/plugins/JasmDecompilerWrapper.json 2019-01-16 12:13:37.317778036 +0100
@@ -1,8 +1,8 @@
{
"Name": "jasm",
- "WrapperURL": "file://${XDG_CONFIG_HOME}/plugins/JasmDecompilerWrapper.java",
+ "WrapperURL": "file:/etc/java-runtime-decompiler/plugins/JasmDecompilerWrapper.java",
"DependencyURL": [
- "file://${HOME}/.m2/repository/org/openjdk/asmtools/asmtools-core/7.0.b10-ea/asmtools-core-7.0.b10-ea.jar"
+ "file:/usr/share/java/openjdk-asmtools/asmtools-core.jar"
],
"DecompilerDownloadURL": "https://github.com/openjdk/asmtools"
}

14
systemJcoder.patch Normal file
View file

@ -0,0 +1,14 @@
--- runtime-decompiler/src/plugins/JcoderDecompilerWrapper.json 2018-11-12 15:25:47.000000000 +0100
+++ runtime-decompiler/src/plugins/JcoderDecompilerWrapper.json 2019-01-16 12:13:37.317778036 +0100
@@ -1,8 +1,8 @@
{
"Name": "jcoder",
- "WrapperURL": "file://${XDG_CONFIG_HOME}/plugins/JcoderDecompilerWrapper.java",
+ "WrapperURL": "file:/etc/java-runtime-decompiler/plugins/JcoderDecompilerWrapper.java",
"DependencyURL": [
- "file://${HOME}/.m2/repository/org/openjdk/asmtools/7.0.b10-ea/asmtools-core-7.0.b10-ea.jar"
+ "file:/usr/share/java/openjdk-asmtools/asmtools-core.jar"
],
"DecompilerDownloadURL": "https://github.com/openjdk/asmtools"
}

View file

@ -6,13 +6,12 @@
- "WrapperURL": "file://${XDG_CONFIG_HOME}/plugins/ProcyonDecompilerWrapper.java",
+ "WrapperURL": "file:///etc/java-runtime-decompiler/plugins/ProcyonDecompilerWrapper.java",
"DependencyURL": [
- "file://${HOME}/.m2/repository/org/bitbucket/mstrobel/procyon-core/0.5.35/procyon-core-0.5.35.jar",
- "file://${HOME}/.m2/repository/org/bitbucket/mstrobel/procyon-compilertools/0.5.35/procyon-compilertools-0.5.35.jar"
- "file://${HOME}/.m2/repository/org/bitbucket/mstrobel/procyon-core/0.5.36/procyon-core-0.5.36.jar",
- "file://${HOME}/.m2/repository/org/bitbucket/mstrobel/procyon-compilertools/0.5.36/procyon-compilertools-0.5.36.jar"
+ "/usr/share/java/procyon/procyon-core.jar",
+ "/usr/share/java/procyon/procyon-compilertools.jar",
+ "/usr/share/java/procyon/procyon-decompiler.jar"
],
"DecompilerDownloadURL": "https://bitbucket.org/mstrobel/procyon/downloads/"
-}
\ No newline at end of file
+}
}