• Stars
    star
    14,207
  • Rank 2,001 (Top 0.05 %)
  • Language
    Java
  • License
    GNU General Publi...
  • Created over 9 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Java 8+ Jar & Android APK Reverse Engineering Suite (Decompiler, Editor, Debugger & More)

Bytecode Viewer

Bytecode Viewer - a lightweight user-friendly Java/Android Bytecode Viewer, Decompiler & More.

New Features

  • Draggable tabs
  • Patched CVE-2022-21675 (Make sure to upgrade to v2.11.X)
  • Dark mode by default with multiple themes
  • Translated into over 30 languages including: Arabic, German, Japanese, Mandarin, Russian, Spanish
  • Plugin Writer - create and edit external plugins from within BCV
  • Fixed Java & Bytecode editing/compiling
  • Tabbed plugin console
  • Right-click menus on the resource and search panels
  • Javap disassembler
  • XAPK support
  • Latest dependencies (incl. decompilers like CFR, JD-GUI etc.)
  • Added support to Java files compiled using JDK > 13
  • Migrated to Maven

Links

Key Features

  • Simply drag and drop to decompile and search Java Jars & Android APKs
  • File format support for: Class, Jar, XAPK, APK, DEX, WAR, JSP, Image Resources, Text Resources & More
  • 6 Built-in Java decompilers: Krakatau, CFR, Procyon, FernFlower, JADX, JD-GUI
  • 3 Built-in Bytecode disassemblers, including 2 assemblers: Krakatau and Smali/BakSmali
  • APK/DEX Support from Dex2Jar and Enjarify
  • Built-in Java Compiler
  • Advanced static-search functionality
  • Customizable UI
  • Plugins + Script Engine Design
  • Malicious code scanning API
  • Translated Into over 30 Languages Including: Arabic, German, Japanese, Mandarin, Russian, Spanish)
  • Export functionality as Runnable Jar, Zip, APK, Decompile All As Zip, Etc.
  • And more! Give it a try for yourself!

Command Line Input

	-help                         Displays the help menu
	-clean                        Deletes the BCV directory
	-english                      Forces English language translations
	-list                         Displays the available decompilers
	-decompiler <decompiler>      Selects the decompiler, procyon by default
	-i <input file>               Selects the input file (Jar, Class, APK, ZIP, DEX all work automatically)
	-o <output file>              Selects the output file (Java or Java-Bytecode)
	-t <target classname>         Must either be the fully qualified classname or "all" to decompile all as zip
	-nowait                       Doesn't wait for the user to read the CLI messages

What is Bytecode Viewer?

Bytecode Viewer (BCV) is an Advanced Lightweight Java/Android Reverse Engineering Suite. Powered by several open source tools BCV is designed to aid in the reversing process.

BCV comes with 6 decompilers, 3 disassemblers, 2 assemblers, 2 APK converters, advanced searching, debugging & more.

It's written completely in Java, and it's open sourced. It's currently being maintained and developed by Konloch.

Is there a demo?

BCV Demo

Please note this demo is from a very old version

How do I install BCV?

Download the latest version from https://github.com/konloch/bytecode-viewer/releases and run the Bytecode-Viewer-2.10.x.jar. You may need to execute it via command line java -jar Bytecode-Viewer-2.10.x.jar (replace the X with the current minor version)

How can I use BCV?

  • Starting with a Jar, Zip, ClassFile or Android file (APK, DEX, XAPK, etc) drag it into BCV. It will start the decoding process automatically.
  • From here you can select the decompilers you would like to use by selecting the View Pane>View 1, View 2, View 3, etc.
  • The view panes are-used to display up to 3 decompilers side by side, you can also toggle edibility here.
  • Select the resource you would like to open by navigating using the resource list, BCV will do its best to display it (Decompiling, Disassembling, etc).
  • You can use plugins to help you search along with using the search pane in the left-hand bottom corner.

How do the plugins work?

There is also a plugin system that will allow you to interact with the loaded classfiles. You could for example write a String deobfuscator, a malicious code searcher, or anything else you can think of.

You can either use one of the pre-written plugins, or write your own. The plugin system supports java and javascript scripting.

Once a plugin is activated, it will execute the plugin with a ClassNode ArrayList of every single class loaded in BCV, this allows the user to handle it completely using ASM.

Instructions to compile

Just clone this repo and run mvn package. It's that simple!

Working on the source

Open the Maven project (e.g. in IntelliJ, open the pom.xml as a project file).

UI Is Lagging

Change the theme to your systems. Go into View->Visual Settings->Window Theme and select System Theme.

Java Heap Space Issues (java.lang.OutOfMemoryError)

Start BCV with more RAM, e.g. java -Xmx3G -jar BCV.jar

File Permission Issues (java.io.FileNotFoundException)

Right click on the jar file, go to Properties, and select Unblock under Security at the bottom of the General tab.

APK File Permission Issues (java.io.FileNotFoundException)

Run BCV as administrator.

Are you a Java Reverse Engineer? Do you want to learn?

Join The Bytecode Club Today! - https://the.bytecode.club

More Repositories

1

JVM-Sandbox

Utilize Java Agents and ASM to modify then override Java SE classes. (In this case blocking java.lang.Runtime.exec)
Java
53
star
2

JVM-Command

Overrides the standard JRE classes using Java agents to allow us to do intensive debugging on the Java application.
22
star
3

HTTPRequest

HTTPRequest is an easy-to-use zero dependency Java wrapper to read from a URL. Support for Cookies, proxies, UserAgent, post data and more.
Java
19
star
4

OpenIRCd

OpenIRCd is an easy to use zero dependency non-blocking IRC daemon written in Java.
Java
11
star
5

DiskLib

DiskLib is an easy to use zero dependency Disk Writer & Disk Reader with built in GZIP support for Java.
Java
9
star
6

CFIDE

Java Classfile IDE
Java
8
star
7

ObfSRC

ObfSRC is an experimental way to obfuscate Java source code through unicode escaping.
Java
8
star
8

TaskManager

TaskManager is an easy to use zero dependency task manager / task queue.
Java
7
star
9

Java-Cheat-Framework

A WIP project. Check the README for the full explanation.
6
star
10

DSLBuilder

Zero dependency Java library for creating domain specific languages.
Java
6
star
11

HTTPdLib

A very small high performant non-blocking HTTP webserver library written in Java
Java
5
star
12

IterateINI

Zero dependency pure Java library to support iterating over the key-value pairs of any INI file.
Java
5
star
13

ColorUtils

A small collection of utility functions to deal with coloring on Java.
Java
4
star
14

DynVarMap

DynVarMap is zero dependency easy and straight forward way to manage attribute-like runtime variables for Java.
Java
4
star
15

SafeYAML

Drop in replacement for Snake YAML 1.33, this is a fork of the latest changes. The default constructors have been changed to no longer allow remote execution during deserialization.
Java
4
star
16

Vortex-IO

Vortex IO is an easy-to-use high performant non-blocking zero dependency socket server API for Java.
Java
4
star
17

StringVars

StringVars is a zero dependency pure Java solution to add support for recursive String variables, such as $var$ or %var%.
Java
4
star
18

FastStringUtils

FastStringUtils is an easy-to-use zero dependency collection of very fast String utility functions for Java.
Java
4
star
19

Constants

Very small zero dependency Java library packed with constants.
Java
4
star
20

HeadlessIRC

Zero dependency pure Java library for implementing your own NIO IRC Client / Bot / Crawler / Logger.
Java
2
star
21

Konloch

Github Profile
2
star
22

Malbolge.c4J

Malbolge '98 interpreter ported over to Java.
Java
2
star
23

InjectedCalculator

"Missing code, so it injects what its missing"
Java
2
star
24

Gematria

Java library / CLI tool for calculating the Gematria value of strings.
Java
1
star
25

EchoServer

Example implementation of a non-blocking RFC-862 compliant echo server.
Java
1
star