Skip to content

Commit e912454

Browse files
Update README.md
1 parent 609a42a commit e912454

1 file changed

Lines changed: 39 additions & 18 deletions

File tree

README.md

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
# About Program
2+
![License](https://img.shields.io/badge/license-MIT-blue) ![Release](https://img.shields.io/github/v/release/Artur114Projects/JVMByteCodeGrabber)
23
A small utility that allows you to grab/dump/take/get/~steal~ bytecode from a running Java Virtual Machine and save it to disk.
3-
It has a graphical interface, several output formats, compatible with JDK 1.8+, and includes a small preloader (bootstrap) to choose the Java runtime for launch.
4+
It has a graphical interface, several output formats, compatible with JDK 1.8+, and includes a small preloader (bootstrap) to choose the Java runtime for launch, dark and light theme.
5+
6+
![UI](images/bcg-screen-ui-system.png)
47

58
## Usage
69

@@ -17,39 +20,57 @@ If the launch fails, you will see the bootstrap window again.
1720
### Main frame
1821

1922
After successful launch, you will see a list of running Java virtual machines.
20-
Select the target JVM, connect to it, then add classes you need to right-side panel using **Add to grab** button (rightmost button on left panel).
23+
Select the target JVM, connect to it, then add classes you need to right-side panel using **Add to grab** button (rightmost button on left panel, or button in context menu of left panel).
2124

22-
![Screen 1](https://github.com/Artur114Projects/JVMByteCodeGrabber/blob/master/images/bcg-screen-1.png)
23-
![Screen 2](https://github.com/Artur114Projects/JVMByteCodeGrabber/blob/master/images/bcg-screen-2.png)
24-
![Screen 3](https://github.com/Artur114Projects/JVMByteCodeGrabber/blob/master/images/bcg-screen-3.png)
25+
| Light | Dark |
26+
|:---:|:---:|
27+
| ![Screen UIL Start](images/light/bcg-screen-empty-ui-light.png) | ![Screen UID Start](images/dark/bcg-screen-empty-ui-dark.png) |
28+
| ![Screen UIL Tree](images/light/bcg-screen-ui-light.png) | ![Screen UID Tree](images/dark/bcg-screen-ui-dark.png) |
2529

2630
### Class grabbing
2731

28-
To save the selected classes, press the **Grab** button (bottom right button).
32+
To save the selected classes, press the **Grab** button (rightmost button on right panel, or in context menu of the right panel).
2933
If the path written in text field on the right does not exist, a file selection window opens, select a `.zip`, `.jar` file, or folder.
34+
After that, you will be asked to choose output directory and output format.
35+
36+
| Light | Dark |
37+
|:---:|:---:|
38+
| ![Screen UIL Grab](images/light/bcg-screen-grab-start-light.png) | ![Screen UID Grab](images/dark/bcg-screen-grab-start-dark.png) |
3039

3140
> [!NOTE]
3241
> If a file with an unsupported extension is selected, extension will be automatically changed to `.jar`.
3342
34-
After that, you will be asked to choose the output format.
35-
> ![Screen 4](https://github.com/Artur114Projects/JVMByteCodeGrabber/blob/master/images/bcg-screen-4.png)
36-
3743
There are three output formats:
3844

39-
- **Full package**
40-
- **Package + Class name**
41-
- **Just class name**
45+
- **Full package:** Saves each class so that its package is used as the directory path. For example, class `java.util.List` becomes `java\util\List.class`.
46+
- **Package + Class name:** Saves each class using full package + classname as the file name. For example, class `java.util.List` becomes `java.util.List.class`.
47+
- **Just class name:** Saves each class using only its name, provided no file with that name already exists, otherwise uses: package + class name. For example, class `java.util.List` becomes `List.class`.
48+
49+
After you click the **Grab** button, program will save classes you selected to selected output resource.
50+
51+
| Light | Dark |
52+
|:---:|:---:|
53+
| ![Screen UIL Grab process](images/light/bcg-screen-grab-process-light.png) | ![Screen UID Grab process](images/dark/bcg-screen-grab-process-dark.png) |
54+
| ![Screen UIL Grab end](images/light/bcg-screen-grab-end-light.png) | ![Screen UID Grab end](images/dark/bcg-screen-grab-end-dark.png) |
55+
56+
After saving the classes, you can disconnect from the virtual machine using the disconnect button (second button on left panel, or button in context menu of left panel)
4257

43-
**Full package:**
44-
- Saves each class so that its package is used as the directory path. For example, class `java.util.List` becomes `java\util\List.class`.
58+
### Other
59+
**Theme chooser**
60+
| Light | Dark |
61+
|:---:|:---:|
62+
| ![Screen UIL Theme chooser](images/light/bcg-screen-settings-light.png) | ![Screen UID Theme chooser](images/dark/bcg-screen-settings-dark.png) |
4563

46-
**Package + Class name**
47-
- Saves each class using full package + classname as the file name. For example, class `java.util.List` becomes `java.util.List.class`.
64+
**Context menu**
4865

49-
**Just class name**
50-
- Saves each class using only its name, provided no file with that name already exists, otherwise uses: package + class name. For example, class `java.util.List` becomes `List.class`.
66+
| Light | Dark |
67+
|:---:|:---:|
68+
| ![Screen UIL Context menu 1](images/light/bcg-screen-ui-context-menu-package-light.png) | ![Screen UID Context menu 1](images/dark/bcg-screen-ui-context-menu-package-dark.png) |
69+
| ![Screen UIL Context menu 2](images/light/bcg-screen-ui-context-menu-class-light.png) | ![Screen UID Context menu 2](images/dark/bcg-screen-ui-context-menu-class-dark.png) |
70+
| ![Screen UIL Context menu 3](images/light/bcg-screen-ui-context-menu-grab-light.png) | ![Screen UID Context menu 3](images/dark/bcg-screen-ui-context-menu-grab-dark.png) |
5171

5272
## Credits
73+
jSystemThemeDetector is licensed under the Apache License 2.0, Copyright (c) 2020 Albin Coquereau.
5374
FlatLaf is licensed under the Apache License 2.0. Copyright (c) 2019-2024 FormDev Software GmbH.
5475
Log4j is licensed under the Apache License 2.0, Copyright (c) The Apache Software Foundation.
5576
Gson is licensed under the Apache License 2.0, Copyright (c) 2008 Google Inc.

0 commit comments

Comments
 (0)