|
| 1 | +# JDA - The Java Disassembler |
| 2 | + |
| 3 | +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. |
| 4 | + |
| 5 | +## Motivation |
| 6 | +The main reason JDA was forked was that BCV was becoming too large and cumbersome, with many redundant, unused, or |
| 7 | +useless features. The issue with removing them is that there could be many BCV users that relied on such features. |
| 8 | +Because of this, it is more appropriate to fork JDA as a separate project. Additionally, BCV's development has |
| 9 | +stagnated, and the last official build is from July 2015. It has since grown increasingly difficult and arcane to |
| 10 | +compile BCV from source, and full jars often range into 20Mb in size. It has become necessary to fork BCV in order |
| 11 | +to make large-scale changes. |
| 12 | + |
| 13 | +In addition to the growing power and complexity of commercial obfuscation programs for Java, it has become increasingly |
| 14 | +necessary to develop improved reverse engineering and static analysis tools. For this reason, JDA has been developed |
| 15 | +in order to provide professional-quality static analysis tools for JVM-based languages. |
| 16 | + |
| 17 | +## Scope |
| 18 | +With that in mind, JDA's goal is to be a light-weight yet powerful Java static disassembler. BCV suffered from a |
| 19 | +multitude of issues, but a large one was that it tried to be a dynamic reverse engineering tool (debugger) as well |
| 20 | +as a static tool (disassembler) at the same time, only succeeding partially in the latter. JDA's role is to provide |
| 21 | +a platform and interface for the core features such as analysis and disassembly. Additionally, many useless |
| 22 | +or irrelevant features have been removed. JDA's scope as a program currently is to be a platform for reverse engineering |
| 23 | +tools to be built on top of. |
| 24 | + |
| 25 | +In the future, JDA will have powerful static analysis tools, such as control and data flow analysis, code contraction |
| 26 | +(copy and constant propagation), whole binary cross referencing (xrefs), and an IR engine. However, these standard |
| 27 | +core utilities will be distributed separately as a plugin. |
0 commit comments