Naiyu Wang

33 papers B 2Journal 26Unranked 5
YearRankTypeTitle / Venue / Authors
2026 J jnl
Sci. China Inf. Sci.
Peisheng Zhang, Naiyu Wang, Longfei Wu, Liehuang Zhu, Zhitao Guan
2026 J jnl
CoRR
You Wu, Zhenguo Wang, Naiyu Wang
2026 J jnl
Reliab. Eng. Syst. Saf.
Xinghong Chen, You Wu, Zhenguo Wang, Binbin Li, Naiyu Wang
2026 J jnl
CoRR
Lei Xie, Peihui Lin, Naiyu Wang, Paolo Gardoni
2026 J jnl
Biomed. Signal Process. Control.
Siyuan Tang, Siriguleng Wang, Yue Miao, Naiyu Wang, Liang Liu, Yuhan Qu, Yu Gu, Qingyu Ji, Qiangqiang Bao, Jinliang Zhao
2025 J jnl
IEEE Trans. Inf. Forensics Secur.
Naiyu Wang, Shen Wang, Meng Li, Longfei Wu, Zijian Zhang, Zhitao Guan, Liehuang Zhu
2025 B conf
GLOBECOM
Lei Shi, Xi Fang, Naiyu Wang, Junxing Zhang
2025 J jnl
CoRR
Lei Shi, Xi Fang, Naiyu Wang, Junxing Zhang
2025 J jnl
Reliab. Eng. Syst. Saf.
You Wu, Naiyu Wang, Xiubing Huang, Zhenguo Wang
2025 J jnl
CoRR
Yongchuan Yang, Naiyu Wang, Zhenguo Wang, Min Ouyang, Can Wan
2024 J jnl
Digit. Commun. Networks
Naiyu Wang, Wenti Yang, Xiaodong Wang, Longfei Wu, Zhitao Guan, Xiaojiang Du, Mohsen Guizani
2024 J jnl
Reliab. Eng. Syst. Saf.
Xiubing Huang, Naiyu Wang
2024 J jnl
IEEE Trans. Vis. Comput. Graph.
Longfei Chen, He Wang, Yang Ouyang, Yang Zhou, Naiyu Wang, Quan Li
2024 J jnl
Sci. China Inf. Sci.
Xuan Li, Naiyu Wang, Liehuang Zhu, Shuai Yuan, Zhitao Guan
2024 J jnl
Comput. Secur.
Xuan Li, Naiyu Wang, Shuai Yuan, Zhitao Guan
2024 J jnl
IEEE Trans. Netw. Sci. Eng.
Naiyu Wang, Xuan Li, Zhitao Guan, Shuai Yuan
2024 J jnl
Reliab. Eng. Syst. Saf.
Junyan Wang, Naiyu Wang
2024 J jnl
Reliab. Eng. Syst. Saf.
Junyan Wang, Naiyu Wang, Min Ouyang
2023 conf
ICIEAI
Han Zhang, Guangpeng Liu, Weijie Chen, Yanheng Zhao, Ziyu Li, Naiyu Wang, Jingwei Li
2023 J jnl
CoRR
Longfei Chen, He Wang, Yang Ouyang, Yang Zhou, Naiyu Wang, Quan Li
2023 conf
ICC
Xiaodong Wang, Naiyu Wang, Longfei Wu, Zhitao Guan, Xiaojiang Du, Mohsen Guizani
2022 J jnl
CoRR
Wenti Yang, Naiyu Wang, Zhitao Guan, Longfei Wu, Xiaojiang Du, Mohsen Guizani
2022 J jnl
IEEE Wirel. Commun.
Wenti Yang, Naiyu Wang, Zhitao Guan, Longfei Wu, Xiaojiang Du, Mohsen Guizani
2021 J jnl
IEEE Access
Xianfei Zhou, Kai Xu, Naiyu Wang, Jianlin Jiao, Ning Dong, Meng Han, Hao Xu
2021 J jnl
Comput. Aided Civ. Infrastructure Eng.
Chuang Liu, Min Ouyang, Naiyu Wang, Zijun Mao, Xiaolin Xu
2021 J jnl
ACM Trans. Internet Techn.
Zhitao Guan, Naiyu Wang, Xunfeng Fan, Xueyan Liu, Longfei Wu, Shaohua Wan
2021 J jnl
J. Parallel Distributed Comput.
Zhitao Guan, Xin Lu, Wenti Yang, Longfei Wu, Naiyu Wang, Zijian Zhang
2021 B conf
GLOBECOM
Naiyu Wang, Wenti Yang, Zhitao Guan, Xiaojiang Du, Mohsen Guizani
2020 conf
ICITE
Naiyu Wang, Mengru Shen, Yongcun Wei
2020 J jnl
Future Gener. Comput. Syst.
Zhitao Guan, Xin Lu, Naiyu Wang, Jun Wu, Xiaojiang Du, Mohsen Guizani
2019 J jnl
CoRR
Naiyu Wang, Xiao Zhou, Xin Lu, Zhitao Guan, Longfei Wu, Xiaojiang Du, Mohsen Guizani
2018 conf
MAB
Naiyu Wang, Luke Hespanhol
2018 conf
CISP-BMEI
Jinping Sun, Naiyu Wang, Zhiguo Zhang
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