Xiaofeng Yue

30 papers B 1Journal 26Unranked 3
YearRankTypeTitle / Venue / Authors
2026 J jnl
Displays
Zeyuan Liu, Xiaofeng Yue
2026 J jnl
Appl. Soft Comput.
Yuan Zhou, Xiaofeng Yue
2026 J jnl
npj Digit. Medicine
Quanhao He, Hao Tan, Bangxin Xiao, Yiwen Tan, Xiang Peng, Canjie Peng, Xiaofeng Yue, Linshan Jiang, Youde Cao, Fajin Lv, Wenlong Zhao, Hongmei Yi, Yingjia Liu, Weiyang He, Mingzhao Xiao
2025 J jnl
J. Supercomput.
Hongbo Zhang, Haohuan Nan, Xiaofeng Yue, Xueliang Gao
2025 J jnl
Appl. Intell.
Chang Li, Xiaofeng Yue, Zeyuan Liu, Guoyuan Ma, Hongbo Zhang, Yuan Zhou, Juan Zhu
2025 J jnl
J. Electronic Imaging
Yuan Zhou, Xiaofeng Yue
2025 J jnl
Expert Syst. Appl.
Hongbo Zhang, Xiaofeng Yue, Xueliang Gao
2025 J jnl
Knowl. Based Syst.
Hongbo Zhang, Jinlong Li, Xiaofeng Yue, Xueliang Gao, Haohuan Nan
2024 J jnl
Comput. Vis. Image Underst.
Guoyuan Ma, Xiaofeng Yue, Juan Zhu, Zeyuan Liu, Zongheng Zhang, Yuan Zhou, Chang Li
2024 J jnl
Clust. Comput.
Yunsheng Tian, Dan Zhang, Hongbo Zhang, Juan Zhu, Xiaofeng Yue
2024 conf
ICTON
Arpit Semwal, Xiaofeng Yue, Yuzhe Shen, Michal Aibin
2024 J jnl
Neural Networks
Zhiyuan Li, Lijun Wu, Kaile Su, Wei Wu, Yulin Jing, Tong Wu, Weiwei Duan, Xiaofeng Yue, Xiyi Tong, Yizhou Han
2024 J jnl
Neural Networks
Haojin Li, Xiaofeng Yue, Sitian Qin
2024 J jnl
Appl. Intell.
Zeyuan Liu, Xiaofeng Yue, Juan Zhu
2023 J jnl
Multim. Tools Appl.
Guoyuan Ma, Xiaofeng Yue, Xueliang Gao, Fuqiuxuan Liu
2023 J jnl
Symmetry
Yunsheng Tian, Xiaofeng Yue, Juan Zhu
2023 J jnl
Soft Comput.
Guoyuan Ma, Xiaofeng Yue, Juan Zhu
2023 J jnl
IEEE Trans. Netw. Serv. Manag.
Zhiyuan Li, Lijun Wu, Xiangyun Zeng, Xiaofeng Yue, Yulin Jing, Wei Wu, Kaile Su
2022 J jnl
J. Intell. Fuzzy Syst.
Xiaofeng Yue, Guoyuan Ma, Xueliang Gao, Yucheng Lu
2022 J jnl
Eng. Appl. Artif. Intell.
Guoyuan Ma, Xiaofeng Yue
2022 J jnl
Appl. Intell.
Xiaofeng Yue, Zeyuan Liu, Juan Zhu, Xueliang Gao, Baojin Yang, Yunsheng Tian
2021 J jnl
J. Intell. Fuzzy Syst.
Xiaofeng Yue, Guoyuan Ma, Fuqiuxuan Liu, Xueliang Gao
2020 J jnl
IEEE Access
Xiaofeng Yue, Hongbo Zhang, Haiyue Yu
2020 J jnl
Signal Image Video Process.
Xiaofeng Yue, Hongbo Zhang
2020 conf
ICVIP
Xiaofeng Yue, Juan Zhu, Xiaodong Zhou, Zeyuan Liu, Xianning Yu
2020 J jnl
J. Supercomput.
Xiaofeng Yue, Hongbo Zhang
2020 J jnl
Appl. Soft Comput.
Xiaofeng Yue, Hongbo Zhang
2019 J jnl
J. Intell. Fuzzy Syst.
Xiaofeng Yue, Hongbo Zhang
2018 B conf
CEC
Xiaoyi Feng, Ao Liu, Weiliang Sun, Xiaofeng Yue, Bo Liu
2018 conf
ICNC-FSKD
Ao Liu, Weiliang Sun, Xiaofeng Yue, Weigang Li, Yuntao Zhao, Bo Liu
redb/extractor_registry.py
← Index redb/extractor_registry.py python
"""
Extractor registry with lazy loading by file type.

Groups extractors by file type (pe, elf, macho, apk) and only imports
the relevant group when that file type is first encountered. This avoids
loading heavy dependencies (pefile, lief, androguard, etc.) into workers
that don't need them.
"""
import importlib
import logging

logger = logging.getLogger(__name__)

# Registry: group name -> list of (module_path, class_names)
_REGISTRY = {
    "pe": [
        ("redb.extractors.pe_extractors", [
            "PEFeaturesExtractor",
            "PEImportExtractor",
            "PEResourceExtractor",
            "PEOverlayExtractor",
            "PESectionExtractor",
            "PESignatureExtractor",
            "PEExtraFindings",
            "PEInconstistencyTestsExtractor",
            "PEDotNetExtractor",
        ]),
    ],
    "elf": [
        ("redb.extractors.elf_extractors", [
            "ELFFeaturesExtractor",
            "ELFSegmentExtractor",
            "ELFSectionExtractor",
            "ELFDependencyExtractor",
            "ELFSymbolExtractor",
            "ELFImportExtractor",
            "ELFExportExtractor",
            "ELFRelocationExtractor",
            "ELFNotesExtractor",
        ]),
    ],
    "macho": [
        ("redb.extractors.macho_extractors", [
            "MachOFeaturesExtractor",
            "MachOSegmentExtractor",
            "MachOImportExtractor",
            "MachOExportExtractor",
            "MachODylibExtractor",
            "MachOSignatureExtractor",
        ]),
    ],
    "apk": [
        ("redb.extractors.apk_extractors", [
            "APKFeaturesExtractor",
            "APKManifestExtractor",
            "APKPermissionsExtractor",
            "APKSignatureExtractor",
            "APKDexExtractor",
            "APKResourceExtractor",
            "APKNativeLibExtractor",
            "APKInconsistencyTestsExtractor",
        ]),
        ("redb.extractors.decompiler.DecompileAPK", [
            "DecompileAPK",
        ]),
    ],
    "js": [
        ("redb.extractors.js_extractors", [
            "JSFeaturesExtractor",
            "JSSuspiciousAPIsExtractor",
            "JSStringsExtractor",
            "JSDeobfuscationExtractor",
            "JSContentExtractor",
        ]),
    ],
}

# Map filetype labels (from Magika) to registry group names
FILETYPE_TO_GROUP = {
    "pebin": "pe",
    "elf": "elf",
    "macho": "macho",
    "apk": "apk",
    "javascript": "js",
}

# Cache: group name -> {class_name: class}
_group_cache = {}


def _load_group(group_name):
    """Import all extractors for a group. Cached after first call."""
    if group_name in _group_cache:
        return _group_cache[group_name]

    logger.debug(f"Loading extractor group: {group_name}")

    # Suppress androguard logging before importing APK extractors
    if group_name == "apk":
        from loguru import logger as loguru_logger
        loguru_logger.disable("androguard")

    classes = {}
    for module_path, class_names in _REGISTRY[group_name]:
        mod = importlib.import_module(module_path)
        for name in class_names:
            classes[name] = getattr(mod, name)

    _group_cache[group_name] = classes
    return classes


def get_filetype_modules(filetype):
    """Get the list of format-specific extractor classes for a filetype.

    Returns only analysis extractors (excludes decompilers like DecompileAPK).
    """
    group = FILETYPE_TO_GROUP.get(filetype)
    if not group:
        return []
    classes = _load_group(group)
    return [cls for name, cls in classes.items() if not name.startswith("Decompile")]


def get_extractor_class(name):
    """Look up a single extractor class by name across all groups.

    Checks cached groups first, then loads groups on demand.
    """
    # Check already-loaded groups first
    for group_classes in _group_cache.values():
        if name in group_classes:
            return group_classes[name]

    # Search all groups (triggers lazy loading)
    for group_name in _REGISTRY:
        classes = _load_group(group_name)
        if name in classes:
            return classes[name]

    return None