mirror of
https://github.com/lief-project/LIEF
synced 2026-06-08 15:30:44 +00:00
387 lines
7.0 KiB
Python
387 lines
7.0 KiB
Python
import enum
|
|
import os
|
|
from typing import Iterator, Optional, Union, overload
|
|
|
|
from . import (
|
|
editor as editor,
|
|
parameters as parameters,
|
|
types as types
|
|
)
|
|
import lief
|
|
import lief.assembly
|
|
|
|
|
|
def load(path: Union[str | os.PathLike]) -> Optional[DebugInfo]: ...
|
|
|
|
class Scope:
|
|
class TYPE(enum.Enum):
|
|
UNKNOWN = 0
|
|
|
|
UNION = 1
|
|
|
|
CLASS = 2
|
|
|
|
STRUCT = 3
|
|
|
|
NAMESPACE = 4
|
|
|
|
FUNCTION = 5
|
|
|
|
COMPILATION_UNIT = 6
|
|
|
|
@property
|
|
def name(self) -> str: ...
|
|
|
|
@property
|
|
def parent(self) -> Optional[Scope]: ...
|
|
|
|
@property
|
|
def type(self) -> Scope.TYPE: ...
|
|
|
|
def chained(self, sep: str = '::') -> str: ...
|
|
|
|
class Type:
|
|
class KIND(enum.Enum):
|
|
UNKNOWN = 0
|
|
|
|
UNSPECIFIED = 1
|
|
|
|
BASE = 2
|
|
|
|
CONST_KIND = 3
|
|
|
|
CLASS = 4
|
|
|
|
ARRAY = 5
|
|
|
|
POINTER = 6
|
|
|
|
STRUCT = 7
|
|
|
|
UNION = 8
|
|
|
|
TYPEDEF = 9
|
|
|
|
REF = 10
|
|
|
|
SET_TYPE = 11
|
|
|
|
STRING = 12
|
|
|
|
SUBROUTINE = 13
|
|
|
|
POINTER_MEMBER = 14
|
|
|
|
PACKED = 15
|
|
|
|
FILE = 16
|
|
|
|
THROWN = 17
|
|
|
|
VOLATILE = 18
|
|
|
|
RESTRICT = 19
|
|
|
|
INTERFACE = 20
|
|
|
|
SHARED = 21
|
|
|
|
RVALREF = 22
|
|
|
|
TEMPLATE_ALIAS = 23
|
|
|
|
COARRAY = 24
|
|
|
|
DYNAMIC = 25
|
|
|
|
ATOMIC = 26
|
|
|
|
IMMUTABLE = 27
|
|
|
|
ENUM = 28
|
|
|
|
@property
|
|
def kind(self) -> Type.KIND: ...
|
|
|
|
@property
|
|
def name(self) -> Optional[str]: ...
|
|
|
|
@property
|
|
def size(self) -> Optional[int]: ...
|
|
|
|
@property
|
|
def location(self) -> lief.debug_location_t: ...
|
|
|
|
@property
|
|
def is_unspecified(self) -> bool: ...
|
|
|
|
@property
|
|
def scope(self) -> Optional[Scope]: ...
|
|
|
|
def to_decl(self, opt: lief.DeclOpt = ...) -> str: ...
|
|
|
|
class Variable:
|
|
@property
|
|
def name(self) -> str: ...
|
|
|
|
@property
|
|
def linkage_name(self) -> str: ...
|
|
|
|
@property
|
|
def address(self) -> Optional[int]: ...
|
|
|
|
@property
|
|
def size(self) -> Optional[int]: ...
|
|
|
|
@property
|
|
def is_constexpr(self) -> bool: ...
|
|
|
|
@property
|
|
def is_stack_based(self) -> bool: ...
|
|
|
|
@property
|
|
def debug_location(self) -> lief.debug_location_t: ...
|
|
|
|
@property
|
|
def type(self) -> Optional[Type]: ...
|
|
|
|
@property
|
|
def scope(self) -> Optional[Scope]: ...
|
|
|
|
@property
|
|
def description(self) -> str: ...
|
|
|
|
def to_decl(self, opt: lief.DeclOpt = ...) -> str: ...
|
|
|
|
class Function:
|
|
@property
|
|
def name(self) -> str: ...
|
|
|
|
@property
|
|
def linkage_name(self) -> str: ...
|
|
|
|
@property
|
|
def address(self) -> Optional[int]: ...
|
|
|
|
@property
|
|
def variables(self) -> Iterator[Optional[Variable]]: ...
|
|
|
|
@property
|
|
def is_artificial(self) -> bool: ...
|
|
|
|
@property
|
|
def is_external(self) -> bool: ...
|
|
|
|
@property
|
|
def size(self) -> int: ...
|
|
|
|
@property
|
|
def ranges(self) -> list[lief.range_t]: ...
|
|
|
|
@property
|
|
def debug_location(self) -> lief.debug_location_t: ...
|
|
|
|
@property
|
|
def type(self) -> Optional[Type]: ...
|
|
|
|
@property
|
|
def parameters(self) -> list[Optional[Parameter]]: ...
|
|
|
|
@property
|
|
def thrown_types(self) -> list[Optional[Type]]: ...
|
|
|
|
@property
|
|
def scope(self) -> Optional[Scope]: ...
|
|
|
|
@property
|
|
def instructions(self) -> Iterator[Optional[lief.assembly.Instruction]]: ...
|
|
|
|
@property
|
|
def lexical_blocks(self) -> Iterator[Optional[LexicalBlock]]: ...
|
|
|
|
@property
|
|
def description(self) -> str: ...
|
|
|
|
def to_decl(self, opt: lief.DeclOpt = ...) -> str: ...
|
|
|
|
class Parameter:
|
|
class Location:
|
|
class Type(enum.Enum):
|
|
UNKNOWN = 0
|
|
|
|
REGISTER = 1
|
|
|
|
@property
|
|
def type(self) -> Parameter.Location.Type: ...
|
|
|
|
class RegisterLoc(Parameter.Location):
|
|
@property
|
|
def id(self) -> int: ...
|
|
|
|
@property
|
|
def name(self) -> str: ...
|
|
|
|
@property
|
|
def type(self) -> Optional[Type]: ...
|
|
|
|
@property
|
|
def location(self) -> Optional[Parameter.Location]: ...
|
|
|
|
class CompilationUnit:
|
|
class Language:
|
|
class LANG(enum.Enum):
|
|
@staticmethod
|
|
def from_value(arg: int, /) -> CompilationUnit.Language.LANG: ...
|
|
|
|
def __eq__(self, arg, /) -> bool: ...
|
|
|
|
def __ne__(self, arg, /) -> bool: ...
|
|
|
|
def __int__(self) -> int: ...
|
|
|
|
UNKNOWN = 0
|
|
|
|
C = 1
|
|
|
|
CPP = 2
|
|
|
|
RUST = 3
|
|
|
|
DART = 4
|
|
|
|
MODULA = 5
|
|
|
|
FORTRAN = 6
|
|
|
|
SWIFT = 7
|
|
|
|
D = 8
|
|
|
|
JAVA = 9
|
|
|
|
COBOL = 10
|
|
|
|
lang: CompilationUnit.Language.LANG
|
|
|
|
version: int
|
|
|
|
@property
|
|
def name(self) -> str: ...
|
|
|
|
@property
|
|
def producer(self) -> str: ...
|
|
|
|
@property
|
|
def compilation_dir(self) -> str: ...
|
|
|
|
@property
|
|
def language(self) -> CompilationUnit.Language: ...
|
|
|
|
@property
|
|
def low_address(self) -> int: ...
|
|
|
|
@property
|
|
def high_address(self) -> int: ...
|
|
|
|
@property
|
|
def size(self) -> int: ...
|
|
|
|
@property
|
|
def ranges(self) -> list[lief.range_t]: ...
|
|
|
|
@overload
|
|
def find_function(self, name: str) -> Optional[Function]: ...
|
|
|
|
@overload
|
|
def find_function(self, addr: int) -> Optional[Function]: ...
|
|
|
|
@overload
|
|
def find_variable(self, addr: int) -> Optional[Variable]: ...
|
|
|
|
@overload
|
|
def find_variable(self, name: str) -> Optional[Variable]: ...
|
|
|
|
@property
|
|
def types(self) -> Iterator[Optional[Type]]: ...
|
|
|
|
@property
|
|
def functions(self) -> Iterator[Optional[Function]]: ...
|
|
|
|
@property
|
|
def imported_functions(self) -> Iterator[Optional[Function]]: ...
|
|
|
|
@property
|
|
def variables(self) -> Iterator[Optional[Variable]]: ...
|
|
|
|
class DebugInfo(lief.DebugInfo):
|
|
@overload
|
|
def find_function(self, name: str) -> Optional[Function]: ...
|
|
|
|
@overload
|
|
def find_function(self, addr: int) -> Optional[Function]: ...
|
|
|
|
@overload
|
|
def find_variable(self, addr: int) -> Optional[Variable]: ...
|
|
|
|
@overload
|
|
def find_variable(self, name: str) -> Optional[Variable]: ...
|
|
|
|
def find_type(self, name: str) -> Optional[Type]: ...
|
|
|
|
@property
|
|
def compilation_units(self) -> Iterator[Optional[CompilationUnit]]: ...
|
|
|
|
class Editor:
|
|
class ARCH(enum.Enum):
|
|
UNKNOWN = 0
|
|
|
|
X64 = 1
|
|
|
|
X86 = 2
|
|
|
|
AARCH64 = 3
|
|
|
|
ARM = 4
|
|
|
|
class FORMAT(enum.Enum):
|
|
ELF = 0
|
|
|
|
PE = 2
|
|
|
|
MACHO = 1
|
|
|
|
@staticmethod
|
|
def from_binary(bin: lief.Binary) -> Optional[Editor]: ...
|
|
|
|
@staticmethod
|
|
def create(fmt: Editor.FORMAT, arch: Editor.ARCH) -> Optional[Editor]: ...
|
|
|
|
def create_compilation_unit(self) -> Optional[editor.CompilationUnit]: ...
|
|
|
|
def write(self, output: Union[str | os.PathLike]) -> None: ...
|
|
|
|
class LexicalBlock:
|
|
@property
|
|
def name(self) -> str: ...
|
|
|
|
@property
|
|
def description(self) -> str: ...
|
|
|
|
@property
|
|
def sub_blocks(self) -> Iterator[Optional[LexicalBlock]]: ...
|
|
|
|
@property
|
|
def addr(self) -> int | None: ...
|
|
|
|
@property
|
|
def size(self) -> int: ...
|
|
|
|
@property
|
|
def low_pc(self) -> int | None: ...
|
|
|
|
@property
|
|
def high_pc(self) -> int | None: ...
|
|
|
|
@property
|
|
def ranges(self) -> list[lief.range_t]: ...
|