Wei Zhang

35 papers A* 6B 1Misc 1Journal 19Unranked 8
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Wei Zhang, Jack Yang, Renshuai Tao, Lingzheng Chai, Shawn Guo, Jiajun Wu, Xiaoming Chen, Ganqu Cui, Ning Ding, Xander Xu, Hu Wei, Bowen Zhou
2023 conf
ICAIF
Zixuan Yuan, Yada Zhu, Wei Zhang, Hui Xiong
2021 A* conf
AAAI
Wei Zhang, Murray Campbell, Yang Yu, Sadhana Kumaravel
2021 A* conf
CHI
Zahra Ashktorab, Casey Dugan, James Johnson, Qian Pan, Wei Zhang, Sadhana Kumaravel, Murray Campbell
2021 J jnl
IEEE Access
Mingke Xu, Fan Zhang, Wei Zhang
2021 A* conf
IJCAI
Katy Ilonka Gero, Zahra Ashktorab, Casey Dugan, Qian Pan, James Johnson, Werner Geyer, Maria Ruiz, Sarah Miller, David R. Millen, Murray Campbell, Sadhana Kumaravel, Wei Zhang
2021 J jnl
CoRR
Zixuan Yuan, Yada Zhu, Wei Zhang, Ziming Huang, Guangnan Ye, Hui Xiong
2021 J jnl
CoRR
Wei Zhang, Ziming Huang, Yada Zhu, Guangnan Ye, Xiaodong Cui, Fan Zhang
2021 conf
ACL/IJCNLP (1)
Wei Zhang, Ziming Huang, Yada Zhu, Guangnan Ye, Xiaodong Cui, Fan Zhang
2021 Misc conf
ICASSP
Mingke Xu, Fan Zhang, Xiaodong Cui, Wei Zhang
2021 J jnl
CoRR
Mingke Xu, Fan Zhang, Xiaodong Cui, Wei Zhang
2020 J jnl
CoRR
Wei Zhang, Murray Campbell, Yang Yu, Sadhana Kumaravel
2020 J jnl
Proc. ACM Hum. Comput. Interact.
Zahra Ashktorab, Q. Vera Liao, Casey Dugan, James Johnson, Qian Pan, Wei Zhang, Sadhana Kumaravel, Murray Campbell
2020 A* conf
CHI
Katy Ilonka Gero, Zahra Ashktorab, Casey Dugan, Qian Pan, James Johnson, Werner Geyer, Maria Ruiz, Sarah Miller, David R. Millen, Murray Campbell, Sadhana Kumaravel, Wei Zhang
2018 conf
ICLR (Poster)
Shuohang Wang, Mo Yu, Jing Jiang, Wei Zhang, Xiaoxiao Guo, Shiyu Chang, Zhiguo Wang, Tim Klinger, Gerald Tesauro, Murray Campbell
2018 conf
ADBIS (Short Papers and Workshops)
Yang Yu, Kazi Saidul Hasan, Mo Yu, Wei Zhang, Zhiguo Wang
2018 J jnl
CoRR
Yang Yu, Kazi Saidul Hasan, Mo Yu, Wei Zhang, Zhiguo Wang
2018 A* conf
AAAI
Shuohang Wang, Mo Yu, Xiaoxiao Guo, Zhiguo Wang, Tim Klinger, Wei Zhang, Shiyu Chang, Gerry Tesauro, Bowen Zhou, Jing Jiang
2017 J jnl
CoRR
Shuohang Wang, Mo Yu, Jing Jiang, Wei Zhang, Xiaoxiao Guo, Shiyu Chang, Zhiguo Wang, Tim Klinger, Gerald Tesauro, Murray Campbell
2017 A* conf
ICDM
Wei Zhang, Minwei Feng, Yunhui Zheng, Yufei Ren, Yandong Wang, Ji Liu, Peng Liu, Bing Xiang, Li Zhang, Bowen Zhou, Fei Wang
2017 J jnl
CoRR
Wei Zhang, Bowen Zhou
2017 B conf
MASCOTS
Yandong Wang, Li Zhang, Yufei Ren, Wei Zhang
2017 J jnl
CoRR
Shuohang Wang, Mo Yu, Xiaoxiao Guo, Zhiguo Wang, Tim Klinger, Wei Zhang, Shiyu Chang, Gerald Tesauro, Bowen Zhou, Jing Jiang
2017 conf
HPCC/SmartCity/DSS
Yufei Ren, Xingbo Wu, Li Zhang, Yandong Wang, Wei Zhang, Zijun Wang, Michel Hack, Song Jiang
2016 J jnl
CoRR
Yang Yu, Wei Zhang, Kazi Saidul Hasan, Mo Yu, Bing Xiang, Bowen Zhou
2016 J jnl
CoRR
Wei Zhang, Minwei Feng, Yunhui Zheng, Yufei Ren, Yandong Wang, Ji Liu, Peng Liu, Bing Xiang, Li Zhang, Bowen Zhou
2015 J jnl
CoRR
Yang Yu, Wei Zhang, Chung-Wei Hang, Bowen Zhou
2015 J jnl
CoRR
Wei Zhang, Judith Gelernter
2015 J jnl
CoRR
Wei Zhang, Yang Yu, Osho Gupta, Judith Gelernter
2015 J jnl
CoRR
Wei Zhang, Yang Yu, Bowen Zhou
2014 J jnl
J. Spatial Inf. Sci.
Wei Zhang, Judith Gelernter
2013 conf
GEOGROWD
Judith Gelernter, Gautam Ganesh, Hamsini Krishnakumar, Wei Zhang
2013 conf
GIR
Judith Gelernter, Wei Zhang
2013 J jnl
Comput. Speech Lang.
Bowen Zhou, Xiaodong Cui, Songfang Huang, Martin Cmejrek, Wei Zhang, Jian Xue, Jia Cui, Bing Xiang, Gregg Daggett, Upendra V. Chaudhari, Sameer Maskey, Etienne Marcheret
2007 conf
SemEval@ACL
Yuhang Guo, Wanxiang Che, Yuxuan Hu, Wei Zhang, Ting 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