diff --git a/qiling/loader/loader.py b/qiling/loader/loader.py index 3ad3a3d7..32475f5f 100644 --- a/qiling/loader/loader.py +++ b/qiling/loader/loader.py @@ -3,10 +3,13 @@ # Cross Platform and Multi Architecture Advanced Binary Emulation Framework # -import os -from typing import Any, Mapping, MutableSequence, NamedTuple, Optional +from __future__ import annotations -from qiling import Qiling +import os +from typing import TYPE_CHECKING, Any, Mapping, MutableSequence, NamedTuple, Optional + +if TYPE_CHECKING: + from qiling import Qiling class Image(NamedTuple): diff --git a/qiling/loader/pe.py b/qiling/loader/pe.py index 439a6ae1..9234bbaf 100644 --- a/qiling/loader/pe.py +++ b/qiling/loader/pe.py @@ -3,13 +3,18 @@ # Cross Platform and Multi Architecture Advanced Binary Emulation Framework # -import os, pefile, pickle, secrets, ntpath -from typing import Any, Dict, MutableMapping, NamedTuple, Optional, Mapping, Sequence, Tuple, Union +from __future__ import annotations + +import os +import pefile +import pickle +import secrets +import ntpath +from typing import TYPE_CHECKING, Any, Dict, MutableMapping, NamedTuple, Optional, Mapping, Sequence, Tuple, Union from unicorn import UcError from unicorn.x86_const import UC_X86_REG_CR4, UC_X86_REG_CR8 -from qiling import Qiling from qiling.arch.x86_const import FS_SEGMENT_ADDR, GS_SEGMENT_ADDR from qiling.const import QL_ARCH, QL_STATE from qiling.exception import QlErrorArch @@ -20,6 +25,10 @@ from qiling.os.windows.utils import has_lib_ext from qiling.os.windows.structs import * from .loader import QlLoader, Image +if TYPE_CHECKING: + from qiling import Qiling + + class QlPeCacheEntry(NamedTuple): ba: int data: bytearray @@ -859,6 +868,7 @@ class QlLoaderPE(QlLoader, Process): self.ql.os.entry_point = self.entry_point self.init_sp = self.ql.arch.regs.arch_sp + class ShowProgress: """Display a progress animation while performing a time consuming task.