Package com.pnfsoftware.jeb.core.units.code.java
package com.pnfsoftware.jeb.core.units.code.java
Types used to manipulate
Additional resources: refer to the User Manual and Technical Blogs, at https://www.pnfsoftware.com.
dexdec
-generated (Dex decompiler) Java Abstract Syntax Tree
(AST) objects. dexdec returns Java units
built upon the interfaces defined in this package. Users can use this API to write
custom AST optimizers, that will be run by dexdec
in later phases of code decompilation.
Interfaces and classes/enums in this package start with IJava...
or J...
,
respectively.
dexdec
AST optimizer plugins may be written in Python or Java.
A sample skeleton plugin, in Python:
#?type=dexdec-ast from com.pnfsoftware.jeb.core.units.code.java import AbstractJOptimizer class JOptSamplePython(AbstractJOptimizer): def perform(self): return 0 # no optimization is performed
The same sample plugin, in Java:
//?type=dexdec-ast import com.pnfsoftware.jeb.core.units.code.java.AbstractJOptimizer; public class JOptSampleJava extends AbstractJOptimizer { // note: implicit no-arg constructor is calling super() @Override public int perform() { // no optimization performed return 0; } }Refer to the sub-directory
coreplugins/
, located in the JEB installation folder, for
examples.Additional resources: refer to the User Manual and Technical Blogs, at https://www.pnfsoftware.com.
-
ClassDescriptionBase class for
dexdec
(DEX decompiler) AST optimizer plugins.This object is used to hold requests for decompilations.A dynamic content manager is used byAST output sinks
to customize the generated output.Java AST interface to represent a Java annotation.Java AST interface to represent a Java annotation element.Java AST interface to represent the element of an array.Java AST interface to represent assignments.Java AST interface to represent a sequence ofstatements
.Java AST interface to represent abreak
statement.Java AST interface to represent a method invocation.Interface to represent a catch-block used byIJavaTry
AST elements.Java AST interface to represent a Java class or interface.ASTIJavaClass
factory.Java AST interface to represent compound statements.Java AST interface to represent a conditional expression.Java AST interface to represent a literal or constant value.Builder for Java AST constants.Java AST interface to represent acontinue
statement.High-level Java AST interface to represent a decompilable Java element (a class, method, or field).Java AST interface to represent a definition statement.Java AST interface to represent ado-while
loop statement.Top-level interface for all elements of a Java Abstract Syntax Tree.A collection of Java AST element factories.High-level interface implemented by Java AST elements representing expressions.Java AST interface to represent a Java field.ASTIJavaField
factory.Java AST interface used to represent a standard for loop statement.Java AST interface used to represent a for-each (Java 5+) loop statement.dexdec
global context for AST generation.Java AST interface to represent a "goto" statement.Java AST interface to represent a Java identifier, or variable.A manager ofIJavaIdentifier
(andIJavaDefinition
).Java AST interface to represent a conditional "if" statement.Java AST interface to represent an instance field.Java AST interface to represent labels.A manager ofIJavaLabel
.High-level interface is used to represent Java AST expressions that can be assigned to, that is, expressions that can be left members in assignment statements.Java AST interface to represent a Java method.ASTIJavaMethod
factory.Java AST interface to represent a special "monitor" statement.Java AST interface to represent the instantiation of a new non-array object.Java AST interface to represent the instantiation of an array object.Java AST interface to represent arithmetic and logical expressions.This interface is used to define a Java operator.Builder for Java AST operators.Java AST interface to represent a Java predicate.Java AST interface to represent a Java predicate.Java AST interface to represent return statements of methods.Definition of a source unit representing a Java class or Java method in the form of an Abstract Syntax Tree (AST).Base interface for Java AST elements that represent statements.Java AST interface to represent a static field.Java AST interface to representswitch
statements.Java AST interface to represent a synchronized block of code.High-level interface extended by Return and Throw statements.Java AST interface to represent throw statements.Java AST interface to represent try-catch elements.This interface is used to define a Java type.Builder for Java AST types.Java AST interface to represent a type reference.Java AST interface to representwhile
loop statements.A manager ofAST optimizers
.Plugin interface fordexdec
(DEX decompiler) AST optimizer plugins.Specialized tree node visitor interface fordexdec
Java AST elements
.Java AST document used to render a decompiled piece of Java code.A list of Java AST element types.Java code flags.Java keywords and reserved tokens.Java operator types.This output sink is the recipient for the generation of a decompiled Java Abstract Syntax Tree (AST).An object holding reconstructed information for an anonymous class.An object holding reconstructed information for an enumeration.An object holding reconstructed information for an enumation map.An object holding reconstructed information for a lambda.Utility methods to generate or verify Java type names and signatures.dexdec
AST optimizer type.Collection of utility methods to manipulateIJavaElement
.Visit result object, provided to the call-back methods of adexdec
AST visitor object.