383 lines
14 KiB
Python
383 lines
14 KiB
Python
from typing import Any, ClassVar, Optional, Union
|
|
|
|
from typing import overload
|
|
import io
|
|
import lief.DEX # type: ignore
|
|
import lief.DEX.Class # type: ignore
|
|
import lief.DEX.File # type: ignore
|
|
import lief.DEX.MapItem # type: ignore
|
|
import lief.DEX.MapList # type: ignore
|
|
import lief.DEX.Prototype # type: ignore
|
|
import lief.DEX.Type # type: ignore
|
|
import os
|
|
|
|
class ACCESS_FLAGS:
|
|
ABSTRACT: ClassVar[ACCESS_FLAGS] = ...
|
|
ANNOTATION: ClassVar[ACCESS_FLAGS] = ...
|
|
BRIDGE: ClassVar[ACCESS_FLAGS] = ...
|
|
CONSTRUCTOR: ClassVar[ACCESS_FLAGS] = ...
|
|
DECLARED_SYNCHRONIZED: ClassVar[ACCESS_FLAGS] = ...
|
|
ENUM: ClassVar[ACCESS_FLAGS] = ...
|
|
FINAL: ClassVar[ACCESS_FLAGS] = ...
|
|
INTERFACE: ClassVar[ACCESS_FLAGS] = ...
|
|
NATIVE: ClassVar[ACCESS_FLAGS] = ...
|
|
PRIVATE: ClassVar[ACCESS_FLAGS] = ...
|
|
PROTECTED: ClassVar[ACCESS_FLAGS] = ...
|
|
PUBLIC: ClassVar[ACCESS_FLAGS] = ...
|
|
STATIC: ClassVar[ACCESS_FLAGS] = ...
|
|
STRICT: ClassVar[ACCESS_FLAGS] = ...
|
|
SYNCHRONIZED: ClassVar[ACCESS_FLAGS] = ...
|
|
SYNTHETIC: ClassVar[ACCESS_FLAGS] = ...
|
|
TRANSIENT: ClassVar[ACCESS_FLAGS] = ...
|
|
UNKNOWN: ClassVar[ACCESS_FLAGS] = ...
|
|
VARARGS: ClassVar[ACCESS_FLAGS] = ...
|
|
VOLATILE: ClassVar[ACCESS_FLAGS] = ...
|
|
__name__: str
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def __ge__(self, other) -> bool: ...
|
|
def __gt__(self, other) -> bool: ...
|
|
def __hash__(self) -> int: ...
|
|
def __index__(self) -> Any: ...
|
|
def __int__(self) -> int: ...
|
|
def __le__(self, other) -> bool: ...
|
|
def __lt__(self, other) -> bool: ...
|
|
|
|
class Class(lief.Object):
|
|
class it_fields:
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def __getitem__(self, arg: int, /) -> lief.DEX.Field: ...
|
|
def __iter__(self) -> lief.DEX.Class.it_fields: ...
|
|
def __len__(self) -> int: ...
|
|
def __next__(self) -> lief.DEX.Field: ...
|
|
|
|
class it_methods:
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def __getitem__(self, arg: int, /) -> lief.DEX.Method: ...
|
|
def __iter__(self) -> lief.DEX.Class.it_methods: ...
|
|
def __len__(self) -> int: ...
|
|
def __next__(self) -> lief.DEX.Method: ...
|
|
|
|
class it_named_fields:
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def __getitem__(self, arg: int, /) -> lief.DEX.Field: ...
|
|
def __iter__(self) -> lief.DEX.Class.it_named_fields: ...
|
|
def __len__(self) -> int: ...
|
|
def __next__(self) -> lief.DEX.Field: ...
|
|
|
|
class it_named_methods:
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def __getitem__(self, arg: int, /) -> lief.DEX.Method: ...
|
|
def __iter__(self) -> lief.DEX.Class.it_named_methods: ...
|
|
def __len__(self) -> int: ...
|
|
def __next__(self) -> lief.DEX.Method: ...
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def get_field(self, name: str) -> lief.DEX.Class.it_named_fields: ...
|
|
def get_method(self, name: str) -> lief.DEX.Class.it_named_methods: ...
|
|
def has(self, flag: lief.DEX.ACCESS_FLAGS) -> bool: ...
|
|
@property
|
|
def access_flags(self) -> list[lief.DEX.ACCESS_FLAGS]: ...
|
|
@property
|
|
def dex2dex_info(self) -> dict[lief.DEX.Method,dict[int,int]]: ...
|
|
@property
|
|
def fields(self) -> lief.DEX.Class.it_fields: ...
|
|
@property
|
|
def fullname(self) -> str: ...
|
|
@property
|
|
def has_parent(self) -> bool: ...
|
|
@property
|
|
def index(self) -> int: ...
|
|
@property
|
|
def methods(self) -> lief.DEX.Class.it_methods: ...
|
|
@property
|
|
def name(self) -> str: ...
|
|
@property
|
|
def package_name(self) -> str: ...
|
|
@property
|
|
def parent(self) -> lief.DEX.Class: ...
|
|
@property
|
|
def pretty_name(self) -> str: ...
|
|
@property
|
|
def source_filename(self) -> str: ...
|
|
|
|
class CodeInfo(lief.Object):
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
|
|
class Field(lief.Object):
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def has(self, flag: lief.DEX.ACCESS_FLAGS) -> bool: ...
|
|
@property
|
|
def access_flags(self) -> list[lief.DEX.ACCESS_FLAGS]: ...
|
|
@property
|
|
def cls(self) -> lief.DEX.Class: ...
|
|
@property
|
|
def has_class(self) -> bool: ...
|
|
@property
|
|
def index(self) -> int: ...
|
|
@property
|
|
def is_static(self) -> bool: ...
|
|
@property
|
|
def name(self) -> str: ...
|
|
@property
|
|
def type(self) -> lief.DEX.Type: ...
|
|
|
|
class File(lief.Object):
|
|
class it_classes:
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def __getitem__(self, arg: int, /) -> lief.DEX.Class: ...
|
|
def __iter__(self) -> lief.DEX.File.it_classes: ...
|
|
def __len__(self) -> int: ...
|
|
def __next__(self) -> lief.DEX.Class: ...
|
|
|
|
class it_fields:
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def __getitem__(self, arg: int, /) -> lief.DEX.Field: ...
|
|
def __iter__(self) -> lief.DEX.File.it_fields: ...
|
|
def __len__(self) -> int: ...
|
|
def __next__(self) -> lief.DEX.Field: ...
|
|
|
|
class it_methods:
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def __getitem__(self, arg: int, /) -> lief.DEX.Method: ...
|
|
def __iter__(self) -> lief.DEX.File.it_methods: ...
|
|
def __len__(self) -> int: ...
|
|
def __next__(self) -> lief.DEX.Method: ...
|
|
|
|
class it_prototypes:
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def __getitem__(self, arg: int, /) -> lief.DEX.Prototype: ...
|
|
def __iter__(self) -> lief.DEX.File.it_prototypes: ...
|
|
def __len__(self) -> int: ...
|
|
def __next__(self) -> lief.DEX.Prototype: ...
|
|
|
|
class it_strings:
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def __getitem__(self, arg: int, /) -> str: ...
|
|
def __iter__(self) -> lief.DEX.File.it_strings: ...
|
|
def __len__(self) -> int: ...
|
|
def __next__(self) -> str: ...
|
|
|
|
class it_types:
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def __getitem__(self, arg: int, /) -> lief.DEX.Type: ...
|
|
def __iter__(self) -> lief.DEX.File.it_types: ...
|
|
def __len__(self) -> int: ...
|
|
def __next__(self) -> lief.DEX.Type: ...
|
|
location: str
|
|
name: str
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
@overload
|
|
def get_class(self, classname: str) -> lief.DEX.Class: ...
|
|
@overload
|
|
def get_class(self, classname: int) -> lief.DEX.Class: ...
|
|
def has_class(self, classname: str) -> bool: ...
|
|
def raw(self, deoptimize: bool = ...) -> list[int]: ...
|
|
def save(self, output: str = ..., deoptimize: bool = ...) -> str: ...
|
|
@property
|
|
def classes(self) -> lief.DEX.File.it_classes: ...
|
|
@property
|
|
def dex2dex_json_info(self) -> str: ...
|
|
@property
|
|
def fields(self) -> lief.DEX.File.it_fields: ...
|
|
@property
|
|
def header(self) -> lief.DEX.Header: ...
|
|
@property
|
|
def map(self) -> lief.DEX.MapList: ...
|
|
@property
|
|
def methods(self) -> lief.DEX.File.it_methods: ...
|
|
@property
|
|
def prototypes(self) -> lief.DEX.File.it_prototypes: ...
|
|
@property
|
|
def strings(self) -> lief.DEX.File.it_strings: ...
|
|
@property
|
|
def types(self) -> lief.DEX.File.it_types: ...
|
|
@property
|
|
def version(self) -> int: ...
|
|
|
|
class Header(lief.Object):
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
@property
|
|
def checksum(self) -> int: ...
|
|
@property
|
|
def classes(self) -> tuple[int,int]: ...
|
|
@property
|
|
def data(self) -> tuple[int,int]: ...
|
|
@property
|
|
def endian_tag(self) -> int: ...
|
|
@property
|
|
def fields(self) -> tuple[int,int]: ...
|
|
@property
|
|
def file_size(self) -> int: ...
|
|
@property
|
|
def header_size(self) -> int: ...
|
|
@property
|
|
def link(self) -> tuple[int,int]: ...
|
|
@property
|
|
def magic(self) -> list[int]: ...
|
|
@property
|
|
def map_offset(self) -> int: ...
|
|
@property
|
|
def methods(self) -> tuple[int,int]: ...
|
|
@property
|
|
def nb_classes(self) -> int: ...
|
|
@property
|
|
def nb_methods(self) -> int: ...
|
|
@property
|
|
def prototypes(self) -> tuple[int,int]: ...
|
|
@property
|
|
def signature(self) -> list[int]: ...
|
|
@property
|
|
def strings(self) -> tuple[int,int]: ...
|
|
@property
|
|
def types(self) -> tuple[int,int]: ...
|
|
|
|
class MapItem(lief.Object):
|
|
class TYPES:
|
|
ANNOTATION: ClassVar[MapItem.TYPES] = ...
|
|
ANNOTATIONS_DIRECTORY: ClassVar[MapItem.TYPES] = ...
|
|
ANNOTATION_SET: ClassVar[MapItem.TYPES] = ...
|
|
ANNOTATION_SET_REF_LIST: ClassVar[MapItem.TYPES] = ...
|
|
CALL_SITE_ID: ClassVar[MapItem.TYPES] = ...
|
|
CLASS_DATA: ClassVar[MapItem.TYPES] = ...
|
|
CLASS_DEF: ClassVar[MapItem.TYPES] = ...
|
|
CODE: ClassVar[MapItem.TYPES] = ...
|
|
DEBUG_INFO: ClassVar[MapItem.TYPES] = ...
|
|
ENCODED_ARRAY: ClassVar[MapItem.TYPES] = ...
|
|
FIELD_ID: ClassVar[MapItem.TYPES] = ...
|
|
HEADER: ClassVar[MapItem.TYPES] = ...
|
|
MAP_LIST: ClassVar[MapItem.TYPES] = ...
|
|
METHOD_HANDLE: ClassVar[MapItem.TYPES] = ...
|
|
METHOD_ID: ClassVar[MapItem.TYPES] = ...
|
|
PROTO_ID: ClassVar[MapItem.TYPES] = ...
|
|
STRING_DATA: ClassVar[MapItem.TYPES] = ...
|
|
STRING_ID: ClassVar[MapItem.TYPES] = ...
|
|
TYPE_ID: ClassVar[MapItem.TYPES] = ...
|
|
TYPE_LIST: ClassVar[MapItem.TYPES] = ...
|
|
__name__: str
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
@staticmethod
|
|
def from_value(arg: int, /) -> lief.DEX.MapItem.TYPES: ...
|
|
def __ge__(self, other) -> bool: ...
|
|
def __gt__(self, other) -> bool: ...
|
|
def __hash__(self) -> int: ...
|
|
def __index__(self) -> Any: ...
|
|
def __int__(self) -> int: ...
|
|
def __le__(self, other) -> bool: ...
|
|
def __lt__(self, other) -> bool: ...
|
|
@property
|
|
def value(self) -> int: ...
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
@property
|
|
def offset(self) -> int: ...
|
|
@property
|
|
def size(self) -> int: ...
|
|
@property
|
|
def type(self) -> lief.DEX.MapItem.TYPES: ...
|
|
|
|
class MapList(lief.Object):
|
|
class it_items_t:
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def __getitem__(self, arg: int, /) -> lief.DEX.MapItem: ...
|
|
def __iter__(self) -> lief.DEX.MapList.it_items_t: ...
|
|
def __len__(self) -> int: ...
|
|
def __next__(self) -> lief.DEX.MapItem: ...
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def get(self, type: lief.DEX.MapItem.TYPES) -> lief.DEX.MapItem: ...
|
|
def has(self, type: lief.DEX.MapItem.TYPES) -> bool: ...
|
|
def __getitem__(self, arg: lief.DEX.MapItem.TYPES, /) -> lief.DEX.MapItem: ...
|
|
@property
|
|
def items(self) -> lief.DEX.MapList.it_items_t: ...
|
|
|
|
class Method(lief.Object):
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def has(self, flag: lief.DEX.ACCESS_FLAGS) -> bool: ...
|
|
def insert_dex2dex_info(self, pc: int, index: int) -> None: ...
|
|
@property
|
|
def access_flags(self) -> list[lief.DEX.ACCESS_FLAGS]: ...
|
|
@property
|
|
def bytecode(self) -> list[int]: ...
|
|
@property
|
|
def cls(self) -> lief.DEX.Class: ...
|
|
@property
|
|
def code_offset(self) -> int: ...
|
|
@property
|
|
def has_class(self) -> bool: ...
|
|
@property
|
|
def index(self) -> int: ...
|
|
@property
|
|
def is_virtual(self) -> bool: ...
|
|
@property
|
|
def name(self) -> str: ...
|
|
@property
|
|
def prototype(self) -> lief.DEX.Prototype: ...
|
|
|
|
class Prototype(lief.Object):
|
|
class it_params:
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def __getitem__(self, arg: int, /) -> lief.DEX.Type: ...
|
|
def __iter__(self) -> lief.DEX.Prototype.it_params: ...
|
|
def __len__(self) -> int: ...
|
|
def __next__(self) -> lief.DEX.Type: ...
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
@property
|
|
def parameters_type(self) -> lief.DEX.Prototype.it_params: ...
|
|
@property
|
|
def return_type(self) -> lief.DEX.Type: ...
|
|
|
|
class Type(lief.Object):
|
|
class PRIMITIVES:
|
|
BOOLEAN: ClassVar[Type.PRIMITIVES] = ...
|
|
BYTE: ClassVar[Type.PRIMITIVES] = ...
|
|
CHAR: ClassVar[Type.PRIMITIVES] = ...
|
|
DOUBLE: ClassVar[Type.PRIMITIVES] = ...
|
|
FLOAT: ClassVar[Type.PRIMITIVES] = ...
|
|
INT: ClassVar[Type.PRIMITIVES] = ...
|
|
LONG: ClassVar[Type.PRIMITIVES] = ...
|
|
SHORT: ClassVar[Type.PRIMITIVES] = ...
|
|
VOID_T: ClassVar[Type.PRIMITIVES] = ...
|
|
__name__: str
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def __ge__(self, other) -> bool: ...
|
|
def __gt__(self, other) -> bool: ...
|
|
def __hash__(self) -> int: ...
|
|
def __index__(self) -> Any: ...
|
|
def __int__(self) -> int: ...
|
|
def __le__(self, other) -> bool: ...
|
|
def __lt__(self, other) -> bool: ...
|
|
|
|
class TYPES:
|
|
ARRAY: ClassVar[Type.TYPES] = ...
|
|
CLASS: ClassVar[Type.TYPES] = ...
|
|
PRIMITIVE: ClassVar[Type.TYPES] = ...
|
|
UNKNOWN: ClassVar[Type.TYPES] = ...
|
|
__name__: str
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
def __ge__(self, other) -> bool: ...
|
|
def __gt__(self, other) -> bool: ...
|
|
def __hash__(self) -> int: ...
|
|
def __index__(self) -> Any: ...
|
|
def __int__(self) -> int: ...
|
|
def __le__(self, other) -> bool: ...
|
|
def __lt__(self, other) -> bool: ...
|
|
def __init__(self, *args, **kwargs) -> None: ...
|
|
@staticmethod
|
|
def pretty_name(primitive: lief.DEX.Type.PRIMITIVES) -> str: ...
|
|
@property
|
|
def dim(self) -> int: ...
|
|
@property
|
|
def type(self) -> lief.DEX.Type.TYPES: ...
|
|
@property
|
|
def underlying_array_type(self) -> lief.DEX.Type: ...
|
|
@property
|
|
def value(self) -> object: ...
|
|
|
|
@overload
|
|
def parse(filename: str) -> Optional[lief.DEX.File]: ...
|
|
@overload
|
|
def parse(raw: list[int], name: str = ...) -> Optional[lief.DEX.File]: ...
|
|
@overload
|
|
def parse(obj: Union[io.IOBase|os.PathLike], name: str = ...) -> Optional[lief.DEX.File]: ...
|
|
@overload
|
|
def version(file: str) -> int: ...
|
|
@overload
|
|
def version(raw: list[int]) -> int: ...
|