Ceriel J. H. Jacobs

35 papers A* 2A 4B 1Journal 16Unranked 10
YearRankTypeTitle / Venue / Authors
2020 A* conf
WWW
Jacopo Urbani, Ceriel J. H. Jacobs
2020 J jnl
CoRR
Jacopo Urbani, Ceriel J. H. Jacobs
2020 A conf
ECAI
Unmesh Joshi, Ceriel J. H. Jacobs, Jacopo Urbani
2019 conf
ISWC (2)
David Carral, Irina Dragoste, Larry González, Ceriel J. H. Jacobs, Markus Krötzsch, Jacopo Urbani
2018 J jnl
Digit. Investig.
Ben van Werkhoven, Pieter Hijma, Ceriel J. H. Jacobs, Jason Maassen, Zeno J. M. H. Geradts, Henri E. Bal
2018 A conf
IJCAR
Jacopo Urbani, Markus Krötzsch, Ceriel J. H. Jacobs, Irina Dragoste, David Carral
2018 conf
Description Logics
Jacopo Urbani, Markus Krötzsch, Ceriel J. H. Jacobs, Irina Dragoste, David Carral
2017 conf
ISWC (Posters, Demos & Industry Tracks)
Varsha Ravichandra Mouli, Unmesh Joshi, Ceriel J. H. Jacobs, Jacopo Urbani
2016 A* conf
AAAI
Jacopo Urbani, Ceriel J. H. Jacobs, Markus Krötzsch
2016 conf
ISWC (Posters & Demos)
Jacopo Urbani, Ceriel J. H. Jacobs, Markus Krötzsch
2015 A conf
IPDPS
Pieter Hijma, Ceriel J. H. Jacobs, Rob van Nieuwpoort, Henri E. Bal
2015 J jnl
CoRR
Jacopo Urbani, Ceriel J. H. Jacobs, Markus Krötzsch
2015 conf
GKR
Jacopo Urbani, Ceriel J. H. Jacobs
2015 J jnl
Concurr. Comput. Pract. Exp.
Pieter Hijma, Rob van Nieuwpoort, Ceriel J. H. Jacobs, Henri E. Bal
2014 A conf
ICDCS
Jacopo Urbani, Alessandro Margara, Ceriel J. H. Jacobs, Spyros Voulgaris, Henri E. Bal
2013 conf
ISWC (1)
Jacopo Urbani, Alessandro Margara, Ceriel J. H. Jacobs, Frank van Harmelen, Henri E. Bal
2012 J jnl
Parallel Comput.
Pieter Hijma, Rob van Nieuwpoort, Ceriel J. H. Jacobs, Henri E. Bal
2011 conf
IPDPS Workshops
Pieter Hijma, Rob van Nieuwpoort, Ceriel J. H. Jacobs, Henri E. Bal
2010 J jnl
Computer
Henri E. Bal, Jason Maassen, Rob van Nieuwpoort, Niels Drost, Roelof Kemp, Nick Palmer, Thilo Kielmann, Frank J. Seinstra, Ceriel J. H. Jacobs
2010 J jnl
ACM Trans. Program. Lang. Syst.
Rob van Nieuwpoort, Gosia Wrzesinska, Ceriel J. H. Jacobs, Henri E. Bal
2010 conf
Euro-Par (1)
Mathijs den Burger, Ceriel J. H. Jacobs, Thilo Kielmann, André Merzky, Ole Weidner, Hartmut Kaiser
2008 book
Dick Grune, Ceriel J. H. Jacobs
2006 conf
ICGI
Pieter W. Adriaans, Ceriel J. H. Jacobs
2005 J jnl
Concurr. Pract. Exp.
Rob van Nieuwpoort, Jason Maassen, Gosia Wrzesinska, Rutger F. H. Hofman, Ceriel J. H. Jacobs, Thilo Kielmann, Henri E. Bal
2005 J jnl
Concurr. Pract. Exp.
Ronald Veldema, Ceriel J. H. Jacobs, Rutger F. H. Hofman, Henri E. Bal
2002 book
Dick Grune, Henri E. Bal, Ceriel J. H. Jacobs, Koen Langendoen
2002 conf
Java Grande
Ronald Veldema, Ceriel J. H. Jacobs, Rutger F. H. Hofman, Henri E. Bal
2001 J jnl
ACM Trans. Program. Lang. Syst.
Jason Maassen, Rob van Nieuwpoort, Ronald Veldema, Henri E. Bal, Thilo Kielmann, Ceriel J. H. Jacobs, Rutger F. H. Hofman
2001 B conf
PPoPP
Ronald Veldema, Rutger F. H. Hofman, Raoul Bhoedjang, Ceriel J. H. Jacobs, Henri E. Bal
2000 J jnl
ACM SIGOPS Oper. Syst. Rev.
Henri E. Bal, Raoul Bhoedjang, Rutger F. H. Hofman, Ceriel J. H. Jacobs, Thilo Kielmann, Jason Maassen, Rob van Nieuwpoort, John Romain, Luc Renambot, Tim Rühl, Ronald Veldema, Kees Verstoep, Aline Baggio, Gerco Ballintijn, Ihor Kuz, Guillaume Pierre, Maarten van Steen, Andrew S. Tanenbaum, Gerben Doornbos, Desmond Germans, Hans J. W. Spoelder, Evert Jan Baerends, Stan J. A. van Gisbergen, Hamid Afsermanseh, G. Dick van Albada, Adam Belloum, David Dubbeldam, Zeger W. Hendrikse, Louis O. Hertzberger, Alfons G. Hoekstra, Kamil Iskra, Drona Kandhai, Dennis C. Koelma, Frank van der Linden, Benno J. Overeinder, Peter M. A. Sloot, Piero Spinnato, Dick H. J. Epema, Arjan J. C. van Gemund, Pieter P. Jonker, Andrei Radulescu, Kees van Reeuwijk, Henk J. Sips, Peter M. W. Knijnenburg, Michael S. Lew, Floris Sluiter, Lex Wolters, Hans Blom, Cees de Laat
1998 J jnl
ACM Trans. Program. Lang. Syst.
Saniya Ben Hassen, Henri E. Bal, Ceriel J. H. Jacobs
1998 J jnl
ACM Trans. Comput. Syst.
Henri E. Bal, Raoul Bhoedjang, Rutger F. H. Hofman, Ceriel J. H. Jacobs, Koen Langendoen, Tim Rühl
1997 J jnl
J. Parallel Distributed Comput.
Henri E. Bal, Raoul Bhoedjang, Rutger F. H. Hofman, Ceriel J. H. Jacobs, Koen Langendoen, Tim Rühl, Kees Verstoep
1989 J jnl
ACM SIGPLAN Notices
Andrew S. Tanenbaum, M. Frans Kaashoek, Koen Langendoen, Ceriel J. H. Jacobs
1988 J jnl
Softw. Pract. Exp.
Dick Grune, Ceriel J. H. Jacobs
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