Initial import (#1636019)
This commit is contained in:
parent
10888e4db7
commit
47e433a6b8
6 changed files with 206 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
/java-runtime-decompiler-2.0.tar.gz
|
||||
86
java-runtime-decompiler
Normal file
86
java-runtime-decompiler
Normal 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
26
java-runtime-decompiler.1
Normal 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)
|
||||
84
java-runtime-decompiler.spec
Normal file
84
java-runtime-decompiler.spec
Normal 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
8
jrd.desktop
Normal 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
1
sources
Normal file
|
|
@ -0,0 +1 @@
|
|||
SHA512 (java-runtime-decompiler-2.0.tar.gz) = dc7c1e9c785539ef464d18d039403b677476e34ba54cc3717552c59a2e405b550c86b40607cc77efafdfdd0b3ce1f6813a7532915bbfabffc0e46023bb85ed95
|
||||
Loading…
Add table
Add a link
Reference in a new issue