All Projects → LLVM-but-worse → Java Disassembler

LLVM-but-worse / Java Disassembler

Licence: gpl-3.0
The Java Disassembler

Programming Languages

java
68154 projects - #9 most used programming language
bytecode
52 projects

Projects that are alternatives of or similar to Java Disassembler

Mazewalker
Toolkit for enriching and speeding up static malware analysis
Stars: ✭ 132 (+15.79%)
Mutual labels:  static-analysis, reverse-engineering
Rascal
The implementation of the Rascal meta-programming language (including interpreter, type checker, parser generator, compiler and JVM based run-time system)
Stars: ✭ 284 (+149.12%)
Mutual labels:  static-analysis, reverse-engineering
Apkleaks
Scanning APK file for URIs, endpoints & secrets.
Stars: ✭ 2,707 (+2274.56%)
Mutual labels:  static-analysis, reverse-engineering
Malwarelab vm Setup
Setup scripts for my Malware Analysis VMs
Stars: ✭ 126 (+10.53%)
Mutual labels:  static-analysis, reverse-engineering
Andromeda
Andromeda - Interactive Reverse Engineering Tool for Android Applications
Stars: ✭ 627 (+450%)
Mutual labels:  static-analysis, reverse-engineering
Detect It Easy
Program for determining types of files for Windows, Linux and MacOS.
Stars: ✭ 2,982 (+2515.79%)
Mutual labels:  static-analysis, reverse-engineering
Recaf
The modern Java bytecode editor
Stars: ✭ 3,374 (+2859.65%)
Mutual labels:  static-analysis, reverse-engineering
Freki
🐺 Malware analysis platform
Stars: ✭ 285 (+150%)
Mutual labels:  static-analysis, reverse-engineering
Lazy importer
library for importing functions from dlls in a hidden, reverse engineer unfriendly way
Stars: ✭ 544 (+377.19%)
Mutual labels:  static-analysis, reverse-engineering
Sark
IDAPython Made Easy
Stars: ✭ 477 (+318.42%)
Mutual labels:  static-analysis, reverse-engineering
Bap
Binary Analysis Platform
Stars: ✭ 1,385 (+1114.91%)
Mutual labels:  static-analysis, reverse-engineering
Panopticon
A libre cross-platform disassembler.
Stars: ✭ 1,376 (+1107.02%)
Mutual labels:  static-analysis, reverse-engineering
Stingray
IDAPython plugin for finding function strings recursively
Stars: ✭ 110 (-3.51%)
Mutual labels:  static-analysis, reverse-engineering
Kiewtai
A port of Kaitai to the Hiew hex editor
Stars: ✭ 108 (-5.26%)
Mutual labels:  reverse-engineering
Xiaomi Flower Care Api
Xiaomi Flower Care (MiFlora) API wrapper.
Stars: ✭ 111 (-2.63%)
Mutual labels:  reverse-engineering
Awesome Hacking
A collection of various awesome lists for hackers, pentesters and security researchers
Stars: ✭ 48,038 (+42038.6%)
Mutual labels:  reverse-engineering
X64dbg
An open-source x64/x32 debugger for windows.
Stars: ✭ 37,825 (+33079.82%)
Mutual labels:  reverse-engineering
Wufuc
Disables the "Unsupported Hardware" message in Windows Update, and allows you to continue installing updates on Windows 7 and 8.1 systems with Intel Kaby Lake, AMD Ryzen, or other unsupported processors.
Stars: ✭ 1,458 (+1178.95%)
Mutual labels:  reverse-engineering
Haxe Checkstyle
Haxe Checkstyle
Stars: ✭ 110 (-3.51%)
Mutual labels:  static-analysis
Phpstan
PHP Static Analysis Tool - discover bugs in your code without running it!
Stars: ✭ 10,534 (+9140.35%)
Mutual labels:  static-analysis

JDA - The Java Disassembler

JDA Logo

Tired of seeing this???

// $FF: Couldn't be decompiled

The Java Disassembler (JDA) is a GUI reverse engineering tool that can turn this:

// $FF: Couldn't be decompiled
// java.lang.IllegalArgumentException: Invalid type: @
//     at org.jetbrains.java.decompiler.struct.gen.VarType.getType(VarType.java:405)
//     at org.jetbrains.java.decompiler.struct.gen.VarType.<init>(VarType.java:90)
//     at org.jetbrains.java.decompiler.struct.gen.VarType.<init>(VarType.java:62)
// ...

into this:

public void keyPressed(KeyEvent var1) {
    super.keyPressed(var1);
    int var10000 = var1.getKeyCode();
    int var10001 = (3 << 2 & 9 | 5 | 7) ^ 5;
    int var10003 = 0 ^ 1165448477 ^ 958591453 ^ 2085987521;
    if (var10000 == var10001) {
        11.iiIIiiiiIiIIi(this.IIiiIiiiIIiiI, this.IiIIiiiiiiiiI, this.IIiiiiiiIIiIi);
    }
}

and finally this:

public void keyPressed(KeyEvent var1) {
    super.keyPressed(var1);
    if (var1.getKeyCode() == 10) {
        11.iiIIiiiiIiIIi(this.IIiiIiiiIIiiI, this.IiIIiiiiiiiiI, this.IIiiiiiiIIiIi);
    }
}

Features

JDA offers powerful static analysis tools, such as control and data flow analysis, and code simplification built using a custom IL. Moreover, many tasks expected of a disassembler such as constant and string searching are available. These standard core utilities are with the MapleIR plugin. You can also access the IL API and integrate into the UI by writing your own plugins in Java. In the near future it will support whole binary cross referencing (xrefs) and more.

MapleIR demo

Motivation

Due to the growing power and complexity of commercial obfuscation programs for Java, it has become necessary to develop improved reverse engineering and static analysis tools. JDA was developed to provide professional-quality static analysis tools for JVM-based languages.

JDA began as a fork of Bytecode Viewer (BCV). BCV suffered heavily from bloat, poor performance, and stagnant development. In JDA many useless or irrelevant features have been removed, and significant parts of the codebase have been cleaned up or rewritten entirely.

Scope

With that in mind, JDA's goal is to be a focused, light-weight yet powerful Java static disassembler. JDA's role is to provide a platform and interface for the core features such as analysis and disassembly. Therefore, JDA's scope is to be a platform for Java reverse engineering tools to be built on top of.

More to come in the future.

MapleIR Plugin

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

Compiling

See COMPILING.md for compilation instructions.

Credits

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].