Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit bad2e48

Browse files
committed
Update documentation
1 parent 0520ca2 commit bad2e48

File tree

5 files changed

+62
-26
lines changed

5 files changed

+62
-26
lines changed

‎README.md‎

Lines changed: 61 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,43 +2,79 @@
22

33
![JDA Logo](docs/icon.png)
44

5-
Java Disassembler (JDA) is a fork of Bytecode Viewer (BCV) that adds advanced code analysis features. The basic principles of BCV are maintained; however, many aspects are different.
5+
Tired of seeing this???
66

7-
## Motivation
8-
The main reason JDA was forked was that BCV was becoming too large and cumbersome, with many redundant, unused, or
9-
useless features. The issue with removing them is that there could be many BCV users that relied on such features.
10-
Because of this, it is more appropriate to fork JDA as a separate project. Additionally, BCV's development has
11-
stagnated, and the last official build is from July 2015. It has since grown increasingly difficult and arcane to
12-
compile BCV from source, and full jars often range into 20Mb in size. It has become necessary to fork BCV in order
13-
to make large-scale changes.
7+
```java
8+
// $FF: Couldn't be decompiled
9+
```
1410

15-
In addition to the growing power and complexity of commercial obfuscation programs for Java, it has become increasingly
16-
necessary to develop improved reverse engineering and static analysis tools. For this reason, JDA has been developed
17-
in order to provide professional-quality static analysis tools for JVM-based languages.
11+
The Java Disassembler (JDA) is a GUI reverse engineering tool that can turn this:
1812

19-
## Scope
20-
With that in mind, JDA's goal is to be a light-weight yet powerful Java static disassembler. BCV suffered from a
21-
multitude of issues, but a large one was that it tried to be a dynamic reverse engineering tool (debugger) as well
22-
as a static tool (disassembler) at the same time, only succeeding partially in the latter. JDA's role is to provide
23-
a platform and interface for the core features such as analysis and disassembly. Additionally, many useless
24-
or irrelevant features have been removed. JDA's scope as a program currently is to be a platform for reverse engineering
25-
tools to be built on top of.
13+
```java
14+
// $FF: Couldn't be decompiled
15+
// java.lang.IllegalArgumentException: Invalid type: @
16+
// at org.jetbrains.java.decompiler.struct.gen.VarType.getType(VarType.java:405)
17+
// at org.jetbrains.java.decompiler.struct.gen.VarType.<init>(VarType.java:90)
18+
// at org.jetbrains.java.decompiler.struct.gen.VarType.<init>(VarType.java:62)
19+
// ...
20+
```
2621

27-
In the future, JDA will have powerful static analysis tools, such as control and data flow analysis, code contraction
28-
(copy and constant propagation), whole binary cross referencing (xrefs), and an IR engine. However, these standard
29-
core utilities will be distributed separately as the [MapleIR](https://github.com/LLVM-but-worse/maple-ir) plugin.
22+
into this:
3023

31-
![MapleIR demo](docs/demo.png)
24+
```java
25+
public void keyPressed(KeyEvent var1) {
26+
super.keyPressed(var1);
27+
int var10000 = var1.getKeyCode();
28+
int var10001 = (3 << 2 & 9 | 5 | 7) ^ 5;
29+
int var10003 = 0 ^ 1165448477 ^ 958591453 ^ 2085987521;
30+
if (var10000 == var10001) {
31+
11.iiIIiiiiIiIIi(this.IIiiIiiiIIiiI, this.IiIIiiiiiiiiI, this.IIiiiiiiIIiIi);
32+
}
33+
}
34+
```
35+
36+
and finally this:
37+
38+
```java
39+
public void keyPressed(KeyEvent var1) {
40+
super.keyPressed(var1);
41+
if (var1.getKeyCode() == 10) {
42+
11.iiIIiiiiIiIIi(this.IIiiIiiiIIiiI, this.IiIIiiiiiiiiI, this.IIiiiiiiIIiIi);
43+
}
44+
}
45+
```
3246

3347
## Features
34-
- Ergonomic design for low-level bytecode reversing
48+
JDA offers powerful static analysis tools, such as control and data flow analysis, and code simplification
49+
built using a custom IL. Moreover, many tasks expected of a disassembler such as constant and string searching are available.
50+
These standard core utilities are with the [MapleIR](https://github.com/LLVM-but-worse/maple-ir) plugin. You
51+
can also access the IL API and integrate into the UI by writing your own plugins in Java.
52+
In the near future it will support whole binary cross referencing (xrefs) and more.
53+
54+
- Ergonomic design for high-level browsing or low-level bytecode reversing
3555
- [Data-flow analysis with copy and constant propagation](docs/propagation-analysis.png) (provided by MapleIR)
3656
- Support for a variety of decompilers
37-
- Cross-reference bytecode, decompilation, and IR.
57+
- Side-by-side view of decompilation, bytecode, and IL.
58+
59+
![MapleIR demo](docs/demo.png)
60+
61+
## Motivation
62+
Due to the growing power and complexity of commercial obfuscation programs for Java, it has become
63+
necessary to develop improved reverse engineering and static analysis tools. JDA was developed to
64+
provide professional-quality static analysis tools for JVM-based languages.
65+
66+
JDA began as a fork of Bytecode Viewer (BCV). BCV suffered heavily from bloat, poor performance, and
67+
stagnant development. In JDA many useless or irrelevant features have been removed, and significant parts
68+
of the codebase have been cleaned up or rewritten entirely.
69+
70+
## Scope
71+
With that in mind, JDA's goal is to be a focused, light-weight yet powerful Java static disassembler.
72+
JDA's role is to provide a platform and interface for the core features such as analysis and disassembly.
73+
Therefore, JDA's scope is to be a platform for Java reverse engineering tools to be built on top of.
3874

3975
More to come in the future.
4076

41-
## Maple-IR Plugin
77+
## MapleIR Plugin
4278

4379
To install the plugin put the plugin jar in `~/.jda/plugins` (or equivalently, `%USERPROFILE%\.jda\plugins` on Windows), then restart.
4480

‎docs/demo.png‎

-15.9 KB
Loading[フレーム]

‎docs/icon.png‎

-3.34 KB
Loading[フレーム]

‎docs/propagation-analysis.png‎

1.26 KB
Loading[フレーム]

‎libs/RSyntaxTextArea‎

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /