reJ offers many tools for inspection of classfiles.
The most powerful part of reJ. A class is displayed in a java source-like format with syntax coloring in the style of the Eclipse IDE. Class definition, extended class, implemented interfaces are all shown in a java source format.
Annotations, fields (including constant values) and method definitions are shown in a java source-like format with syntax coloring.
The bytecode in the methods is also syntax colored, and references to constant pool indexes are translated into corresponding values.
The search funcionality searches all the class files in the project. Hits are shown in a list and each results acts as a link which takes the user to the file and position of the hit.
A big part of reJ is the ability to modify the classfiles. Removing, inserting and modifying of classes, fields, methods and bytecode instructions is trivial with reJ.
Shows the contents of the constant pool of a class file. This is a very central part of a classfile where all references to String and basic type constants, class, field, and method names are contained. The current version of reJ allows the modification and insertion of String constants and UTF-8 constants (which can be used to modify class, method and field name references).
The Bytecode Editor which is already described above in the inspection section also provides the user with a wide range of modification of the classfile.
The class name can be changed. The class access flags can be modified. The implemented interfaces and extended class can be altered. A project-wide refactoring of the class name is also possible - this renames the class and all the references to the class in the entire project.
New fields can be created. Fields can be removed. Field name, type and access flags can be modified. A project wide refactoring of the method name is also available.
New methods can be added. Methods can be removed. Method name, return type, parameters, list of the exceptions the method can throw and acccess flags can be modified. A project wide refactoring of the method name is possible, too.
New instructions may be added to the method, old ones may be removed, rearranged and modified.
Some basic obfuscation options are also available. These include:
-Stripping linenumber information
-Stripping variable names