Chang-Shing Perng

48 papers A* 10A 7B 8C 1Journal 10Unranked 12
YearRankTypeTitle / Venue / Authors
2016 J jnl
ACM Trans. Intell. Syst. Technol.
Yexi Jiang, Chang-Shing Perng, Anca Sailer, Ignacio Silva-Lepe, Yang Zhou, Tao Li
2014 conf
BigData Congress
Mojgan Ghanavati, Raymond K. Wong, Fang Chen, Yang Wang, Chang-Shing Perng
2014 A conf
SDM
Yexi Jiang, Chang-Shing Perng, Tao Li
2014 conf
IEEE SCC
Victor W. Chu, Raymond K. Wong, Wei Liu, Fang Chen, Chang-Shing Perng
2013 J jnl
IEEE Trans. Netw. Serv. Manag.
Yexi Jiang, Chang-Shing Perng, Tao Li, Rong N. Chang
2013 A conf
ICWS
Yang Zhou, Ling Liu, Chang-Shing Perng, Anca Sailer, Ignacio Silva-Lepe, Zhiyuan Su
2012 B conf
NOMS
Yexi Jiang, Chang-Shing Perng, Tao Li, Rong N. Chang
2012 conf
ICEBE
Chang-Shing Perng, Rong N. Chang
2012 conf
IEEE SCC
Yexi Jiang, Chang-Shing Perng, Tao Li, Rong N. Chang
2012 B conf
CNSM
Chunqiang Tang, Chang-Shing Perng, Salman Abdul Baset
2012 B conf
SERVICES
Rahul P. Akolkar, Tom Chefalas, Jim Laredo, Chang-Shing Perng, Anca Sailer, Frank Schaffa, Ignacio Silva-Lepe, Tao Tao
2012 B conf
CNSM
Rahul P. Akolkar, Tom Chefalas, Jim Laredo, Chang-Shing Perng, Anca Sailer, Frank Schaffa, Ignacio Silva-Lepe, Tao Tao
2012 B conf
NOMS
Chang-Shing Perng, Rong N. Chang, Tao Tao, Edward So, Mihwa Choi, Hidayatullah Shaikh
2011 A* conf
ICDM
Yexi Jiang, Chang-Shing Perng, Tao Li, Rong N. Chang
2011 J jnl
IBM J. Res. Dev.
Kirk A. Beaty, Vijay K. Naik, Chang-Shing Perng
2011 A conf
CIKM
Liang Tang, Tao Li, Chang-Shing Perng
2011 A conf
CIKM
Yexi Jiang, Chang-Shing Perng, Tao Li
2011 B conf
CNSM
Chang-Shing Perng, Rong N. Chang, Tao Tao, Edward So, Mihwa Choi, Hidayatullah Shaikh
2009 conf
IEEE SCC
Chun Zhang, Rong N. Chang, Chang-Shing Perng, Edward So, Chunqiang Tang, Tao Tao
2008 A conf
ICWS
Ting Wang, Chang-Shing Perng, Tao Tao, Chunqiang Tang, Edward So, Chun Zhang, Rong N. Chang, Ling Liu
2008 A conf
CIKM
Haixun Wang, Jian Yin, Chang-Shing Perng, Philip S. Yu
2008 J jnl
Data Min. Knowl. Discov.
Tao Li, Chang-Shing Perng, Sheng Ma
2008 conf
IEEE SCC (1)
Chun Zhang, Rong N. Chang, Chang-Shing Perng, Edward So, Chunqiang Tang, Tao Tao
2007 conf
Integrated Network Management
Chang-Shing Perng, Shang Guo
2007 conf
IEEE SCC
Chun Zhang, Rong N. Chang, Chang-Shing Perng, Edward So, Chunqiang Tang, Tao Tao
2006 A* conf
ICDM
Chang-Shing Perng, Haixun Wang, Sheng Ma
2006 J jnl
SIGKDD Explor.
Tao Li, Chang-Shing Perng
2005 conf
Integrated Network Management
Chang-Shing Perng, Sheng Ma, S. Lin, David Thoenen
2005 J jnl
Knowl. Inf. Syst.
Haixun Wang, Chang-Shing Perng, Sheng Ma, Philip S. Yu
2005 A conf
SDM
Haixun Wang, Chang-Shing Perng, Philip S. Yu
2003 A* conf
KDD
Chang-Shing Perng, David Thoenen, Genady Grabarnik, Sheng Ma, Joseph L. Hellerstein
2003 A* conf
ICDE
Haixun Wang, Chang-Shing Perng, Wei Fan, Sanghyun Park, Philip S. Yu
2002 conf
PKDD
Carlotta Domeniconi, Chang-Shing Perng, Ricardo Vilalta, Sheng Ma
2002 conf
CSB
Haixun Wang, Chang-Shing Perng, Wei Fan, Philip S. Yu
2002 J jnl
IBM Syst. J.
Joseph L. Hellerstein, Sheng Ma, Chang-Shing Perng
2002 J jnl
SIGKDD Explor.
Chang-Shing Perng, Haixun Wang, Sheng Ma, Joseph L. Hellerstein
2002 J jnl
Intell. Data Anal.
Alina Beygelzimer, Chang-Shing Perng, Sheng Ma
2002 A* conf
ICDM
Haixun Wang, Chang-Shing Perng, Sheng Ma, Philip S. Yu
2002 A* conf
ICDM
Sheng Ma, Joseph L. Hellerstein, Chang-Shing Perng, Genady Grabarnik
2002 A* conf
ICDM
Chang-Shing Perng, Haixun Wang, Sheng Ma, Joseph L. Hellerstein
2001 A* conf
ICDM
Chang-Shing Perng, Haixun Wang, Sheng Ma, Joseph L. Hellerstein
2001 A* conf
KDD
Alina Beygelzimer, Chang-Shing Perng, Sheng Ma
2001 B conf
PAKDD
Haixun Wang, Chang-Shing Perng
2001 conf
Integrated Network Management
Luanne Burns, Joseph L. Hellerstein, Sheng Ma, Chang-Shing Perng, David A. Rabenhorst, David J. Taylor
2000 A* conf
ICDE
Chang-Shing Perng, Haixun Wang, Sylvia R. Zhang, Douglas Stott Parker Jr.
2000 J jnl
J. Intell. Inf. Syst.
Chang-Shing Perng, Douglas Stott Parker Jr.
1999 B conf
DaWaK
Chang-Shing Perng, Douglas Stott Parker Jr.
1999 C conf
DEXA
Chang-Shing Perng, Douglas Stott Parker Jr.
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