Initial import (#1636019)

This commit is contained in:
pmikova 2018-11-28 14:51:45 +01:00
commit 47e433a6b8
6 changed files with 206 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/java-runtime-decompiler-2.0.tar.gz

86
java-runtime-decompiler Normal file
View file

@ -0,0 +1,86 @@
#!/usr/bin/bash
# java runtime decompiler launch script
# JPackage Project <http://www.jpackage.org/>
# Source functions library
. /usr/share/java-utils/java-functions
# identify directory tree
JRD=`basename $0`
CONF_HOME=$XDG_CONFIG_HOME
if [ "$CONF_HOME" = "" ] ; then
CONF_HOME=$HOME/.config/$JRD
else
CONF_HOME=$CONF_HOME/$JRD
fi
LOG_DIR=$CONF_HOME/logs
CONF_DIR=$CONF_HOME/conf
# create directory tree
PLUGIN_HOME=$CONF_HOME/plugins
mkdir -p $LOG_DIR
mkdir -p $CONF_DIR
mkdir -p $PLUGIN_HOME
: ${MAIN_CLASS:=org.jrd.backend.data.Main}
# set java and jvm arguments
export _prefer_jre=false
_set_java_home
set_jvm
# all dependencies must be on classpath
set_classpath java-runtime-decompiler rsyntaxtextarea byteman google-gson
CLASSPATH=$CLASSPATH:${JAVA_HOME}/lib/tools.jar
# set path to agent automatically
AGENT="/usr/share/java/java-runtime-decompiler/decompiler-agent.jar"
CONFIG_FILE=$CONF_DIR/config.cfg
AGENT_PREFIX="AGENT_PATH==="
AGENT_STRING=$AGENT_PREFIX$AGENT
# copy json wrappers information to home so the users can edit
CP_FILES="$(ls /etc/$JRD/plugins/*.json)"
for cpfile in $CP_FILES; do
FILE_NAME="$(basename -- $cpfile)"
if [ ! -e "$PLUGIN_HOME/$FILE_NAME" ]
then
cp $cpfile $PLUGIN_HOME
else
echo "Configuration files were not copied for $FILE_NAME - the existing configuration would be overwritten."
fi
done
# create config file and add agent default path
touch $CONFIG_FILE
if [ -e $AGENT ]
then
if grep -Fxq $AGENT_STRING $CONFIG_FILE
then
echo "Default agent path is already set in $CONFIG_FILE. Skipping agent path setting."
elif grep -rq $AGENT_PREFIX $CONFIG_FILE
then
RESULT_OF_GREP="$(grep -rq $AGENT_PREFIX $CONFIG_FILE)"
echo "Agent path is already set in $CONFIG_FILE as ${RESULT_OF_GREP}. Skipping agent path setting."
else
echo $AGENT_STRING >> $CONFIG_FILE
fi
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"
fi
run "$@"

26
java-runtime-decompiler.1 Normal file
View file

@ -0,0 +1,26 @@
.TH java-runtime-decompiler 1 "05 September 2018" "version 2.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).
.SH AUTHOR
Petra Alice Mikova (petra.alice.mikova@gmail.com)

View file

@ -0,0 +1,84 @@
Summary: Application for extraction and decompilation of JVM byte code
Name: java-runtime-decompiler
Version: 2.0
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
BuildArch: noarch
BuildRequires: maven-local
BuildRequires: byteman
BuildRequires: rsyntaxtextarea
# depends on devel, not runtime (needs tools.jar)
BuildRequires: java-devel = 1:1.8.0
BuildRequires: google-gson
BuildRequires: desktop-file-utils
Requires: java-devel = 1:1.8.0
%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}
%description javadoc
This package contains the API documentation for %{name}.
%prep
%setup -q -n %{name}-%{name}-%{version}
%build
pushd runtime-decompiler
%pom_remove_dep com.sun:tools
%pom_add_dep com.sun:tools
%pom_remove_plugin :maven-jar-plugin
popd
%mvn_build
%install
%mvn_install
install -d -m 755 $RPM_BUILD_ROOT%{_mandir}/man1/
install -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_mandir}/man1/
install -d -m 755 $RPM_BUILD_ROOT%{_bindir}
install -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}/
install -d -m 755 $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/
cp -r %{_builddir}/%{name}-%{name}-%{version}/runtime-decompiler/src/plugins/ $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/applications
desktop-file-install --vendor="fedora" \
--dir=${RPM_BUILD_ROOT}%{_datadir}/applications %{SOURCE3}
%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
%config %{_sysconfdir}/%{name}/plugins/FernflowerDecompilerWrapper.java
%config(noreplace) %{_sysconfdir}/%{name}/plugins/FernflowerDecompilerWrapper.json
%config %{_sysconfdir}/%{name}/plugins/ProcyonDecompilerWrapper.java
%config(noreplace) %{_sysconfdir}/%{name}/plugins/ProcyonDecompilerWrapper.json
%license LICENSE
%dir %{_datadir}/applications
%{_datadir}/applications/fedora-jrd.desktop
%files javadoc -f .mfiles-javadoc
%license LICENSE
%changelog
* Wed Nov 28 2018 Petra Mikova <petra.alice.mikova@gmail.com> - 2.0-2
- fixed changelog
* Mon Nov 19 2018 Petra Mikova <petra.alice.mikova@gmail.com> - 2.0-1
- fixed issues listed in review (rhbz#1636019)
- added installation of desktop file
* Wed Jun 06 2018 Petra Mikova <petra.alice.mikova@gmail.com> - 1.1-1
- initial commit

8
jrd.desktop Normal file
View file

@ -0,0 +1,8 @@
[Desktop Entry]
Encoding=UTF-8
Type=Application
Categories=Development;Profiling;Java;
Version=1.0
Name=Java Runtime Decompiler
Exec=java-runtime-decompiler
Terminal=false

1
sources Normal file
View file

@ -0,0 +1 @@
SHA512 (java-runtime-decompiler-2.0.tar.gz) = dc7c1e9c785539ef464d18d039403b677476e34ba54cc3717552c59a2e405b550c86b40607cc77efafdfdd0b3ce1f6813a7532915bbfabffc0e46023bb85ed95