Java#
Constant values for lifecycle of Apk.
- class cle.backends.java.apk.Apk[source]#
Bases:
Soot
Backend for lifting Apk’s to Soot.
- is_default = True#
- __init__(apk_path, binary_stream, entry_point=None, entry_point_params=(), android_sdk=None, supported_jni_archs=None, jni_libs=None, jni_libs_ld_path=None, **options)[source]#
- Parameters:
apk_path – Path to APK.
android_sdk – Path to Android SDK folder (e.g. “/home/angr/android/platforms”)
The following parameters are optional
- Parameters:
entry_point – Fully qualified name of method that should be used as the entry point.
supported_jni_archs – List of supported JNI architectures (ABIs) in descending order of preference.
jni_libs – Name(s) of JNI libs to load (if any). If not specified, we try to extract JNI libs from the APK.
jni_libs_ld_path – Path(s) where to find libs defined by param jni_libs. Note: Directory of the APK is added by default.
- get_callbacks(class_name: str, callback_names: List[str]) List[None] [source]#
Get callback methods from the name of callback methods.
- imports: typing.Dict[str, 'Relocation']#
- relocs: List[Relocation]#
- child_objects: List['Backend']#
- exception_handlings: List[ExceptionHandling]#
- function_hints: List[FunctionHint]#
- memory: Clemory#
- cached_content: Optional[bytes]#
- class cle.backends.java.jar.Jar[source]#
Bases:
Soot
Backend for lifting JARs to Soot.
- is_default = True#
- __init__(jar_path, binary_stream, entry_point=None, entry_point_params=('java.lang.String[]',), jni_libs=None, jni_libs_ld_path=None, **kwargs)[source]#
- Parameters:
jar_path – Path to JAR.
The following parameters are optional
- Parameters:
entry_point – Fully qualified name of method that should be used as the entry point. If not specified, we try to parse it from the manifest.
additional_jars – Additional JARs.
additional_jar_roots – Additional JAR roots.
jni_libs – Name(s) of JNI libs to load (if any).
jni_libs_ld_path – Path(s) where to find libs defined by param jni_libs. Note: Directory of the JAR is added by default.
- static is_compatible(stream)[source]#
Determine quickly whether this backend can load an object from this stream
- get_manifest(binary_path=None)[source]#
Load the MANIFEST.MF file
- Returns:
A dict of meta info
- Return type:
- imports: typing.Dict[str, 'Relocation']#
- relocs: List[Relocation]#
- child_objects: List['Backend']#
- exception_handlings: List[ExceptionHandling]#
- function_hints: List[FunctionHint]#
- memory: Clemory#
- cached_content: Optional[bytes]#
- class cle.backends.java.soot.Soot[source]#
Bases:
Backend
The basis backend for lifting and loading bytecode from JARs and APKs to Soot IR.
Note that self.min_addr will be 0 and self.max_addr will be 1. Hopefully no other object will be mapped at address 0.
- __init__(*args, entry_point=None, entry_point_params=(), input_format=None, additional_jars=None, additional_jar_roots=None, jni_libs_ld_path=None, jni_libs=None, android_sdk=None, **kwargs)[source]#
- Parameters:
binary – The path to the binary to load
binary_stream – The open stream to this binary. The reference to this will be held until you call close.
is_main_bin – Whether this binary should be loaded as the main executable
- property max_addr#
This returns the highest virtual address contained in any loaded segment of the binary.
- property entry#
- property classes#
- get_soot_class(cls_name, none_if_missing=False)[source]#
Get Soot class object.
- Parameters:
cls_name (str) – Name of the class.
- Returns:
The class object.
- Return type:
pysoot.soot.SootClass
- get_soot_method(thing, class_name=None, params=(), none_if_missing=False)[source]#
Get Soot method object.
- Parameters:
thing – Descriptor or the method, or name of the method.
class_name (str) – Name of the class. If not specified, class name can be parsed from method_name.
- Returns:
Soot method that satisfy the criteria.
- property main_methods#
Find all Main methods in this binary.
- Returns:
All main methods in each class.
- Return type:
iterator
- imports: typing.Dict[str, 'Relocation']#
- relocs: List[Relocation]#
- child_objects: List['Backend']#
- exception_handlings: List[ExceptionHandling]#
- function_hints: List[FunctionHint]#
- memory: Clemory#
- cached_content: Optional[bytes]#