1JRD(1) General Commands Manual JRD(1)
2
3
4
6 JRD - Java Runtime Decompiler
7
9 (./start.sh|start.bat) [-verbose] # launches GUI
10
11 (./start.sh|start.bat) [-verbose] (-help|-h|-listjvms|-listplug‐
12 ins|-overwrite)
13
14 (./start.sh|start.bat) [-verbose] (-list‐
15 classes|-bytes|-base64bytes|-compile|-decompile) [-saveas [-savelike]]
16
18 Standard options
19 -help, -h
20 Print this help text.
21
22 -verbose
23 All exceptions and some debugging strings will be printed to
24 standard error.
25
26 -version
27 Print version project name, version and build timestamp.
28
29 -listjvms
30 List all local Java processes and their PIDs.
31
32 -listplugins
33 List all currently configured decompiler plugins and their sta‐
34 tuses.
35
36 -listclasses <PUC> [<CLASS REGEX>...]
37 List all loaded classes of a process, optionally filtering
38 them.
39
40 Only '-savelike exact' or '-savelike default' are allowed as
41 saving modifiers.
42
43 -base64bytes <PUC> <CLASS REGEX>...
44 Print Base64 encoded binary form of requested classes of a
45 process.
46
47 -bytes <PUC> <CLASS REGEX>...
48 Print binary form of requested classes of a process
49
50 -compile [-p <PLUGIN>] [-cp <PUC>] [-r] <PATH>...
51 Compile local files against runtime classpath, specified by
52 -cp.
53
54 Use -p to utilize some plugins' (like jasm or jcoder) bundled
55 compilers.
56
57 Use -r for recursive search if <PATH> is a directory.
58
59 If the argument of '-saveas' is a valid PID or URL, the com‐
60 piled code will be attempted to be injected into that process.
61
62 If multiple PATHs were specified, but no '-saveas', the process
63 fails.
64
65 -decompile <PUC> <PLUGIN> <CLASS REGEX>...
66 Decompile and print classes of a process with the specified de‐
67 compiler plugin.
68
69 Javap can be passed options by appending them without spaces:
70 'javap-v-public ...' executes as 'javap -v -public ...'
71
72 -overwrite <PUC> <CLASS NAME> [<CLASS FILE>]
73 Overwrite class of a process with new bytecode. If <CLASS FILE>
74 is not set, standard input is used.
75
76 Saving modifiers
77 -saveas <PATH>
78 All outputs will be written to PATH instead of to standard out‐
79 put.
80
81 -savelike <SAVE METHOD>
82 Specify how saving will behave.
83
85 All options can be with either one or two leading slashes ('-').
86
87
88 When using <CLASS REGEX>, don't forget to escape dollar signs '$' of
89 inner classes to '\$', as otherwise they are treated as end-of-
90 line by REGEX.
91
92
93 <PUC>, short for PidUrlClasspath, can be one of:
94
95 • local process PID
96
97 • remote process URL, in the format of 'hostname:port'
98
99 • classpath of JAR on the filesystem (classpath separator is
100 ':')
101
102
103 <SAVE METHOD> can be one of:
104
105 • 'dir' - Result will be saved as '<PATH>/fully/quali‐
106 fied/name.class'. Default for .class binaries.
107
108 • 'fqn' - Result will be saved as '<PATH>/fully.quali‐
109 fied.name.java'. Default for .java sources.
110
111 • 'exact' - Result will be saved exactly to '<PATH>'. Default
112 for everything else.
113
114 • 'default' - Saving uses the defaults mentioned above.
115
116
117
118
119 JRD(1)