Vadym Aizinger

32 papers C 3Journal 24Unranked 5
YearRankTypeTitle / Venue / Authors
2025 conf
HPEC
Shivam Sundriyal, Markus Büttner, Christoph Alt, Tobias Kenter, Vadym Aizinger
2025 J jnl
J. Supercomput.
Markus Büttner, Christoph Alt, Tobias Kenter, Harald Köstler, Christian Plessl, Vadym Aizinger
2024 conf
PASC
Markus Büttner, Christoph Alt, Tobias Kenter, Harald Köstler, Christian Plessl, Vadym Aizinger
2024 J jnl
CoRR
Zhi-Song Liu, Markus Büttner, Vadym Aizinger, Andreas Rupp
2023 conf
PASC
Jennifer Faj, Tobias Kenter, Sara Faghih-Naini, Christian Plessl, Vadym Aizinger
2023 C conf
ISC
Christoph Alt, Tobias Kenter, Sara Faghih-Naini, Jennifer Faj, Jan-Oliver Opdenhövel, Christian Plessl, Vadym Aizinger, Jan Hönig, Harald Köstler
2023 J jnl
CoRR
Sara Faghih-Naini, Vadym Aizinger, Sebastian Kuckuk, Richard Angersbach, Harald Köstler
2021 J jnl
Comput. Math. Appl.
Andreas Rupp, Moritz Hauck, Vadym Aizinger
2021 conf
PASC
Tobias Kenter, Adesh Shambhu, Sara Faghih-Naini, Vadym Aizinger
2021 J jnl
Comput. Math. Appl.
Fei Xu, Qingang Xiong, Vadym Aizinger, Guillaume Ducrozet
2021 J jnl
Comput. Math. Appl.
Balthasar Reuter, Hennes Hajduk, Andreas Rupp, Florian Frank, Vadym Aizinger, Peter Knabner
2020 J jnl
CoRR
Andreas Rupp, Moritz Hauck, Vadym Aizinger
2019 J jnl
Comput. Math. Appl.
Balthasar Reuter, Andreas Rupp, Vadym Aizinger, Peter Knabner
2019 J jnl
J. Comput. Phys.
Hennes Hajduk, Dmitri Kuzmin, Vadym Aizinger
2019 J jnl
CoRR
Sara Faghih-Naini, Sebastian Kuckuk, Vadym Aizinger, Daniel Zint, Roberto Grosso, Harald Köstler
2018 J jnl
Comput. Vis. Sci.
Vadym Aizinger, Leon Bungert, Michael Fried
2018 J jnl
CoRR
Balthasar Reuter, Andreas Rupp, Vadym Aizinger, Florian Frank, Peter Knabner
2018 J jnl
Comput. Math. Appl.
Alexander Jaust, Balthasar Reuter, Vadym Aizinger, Jochen Schütz, Peter Knabner
2018 J jnl
Environ. Model. Softw.
Hennes Hajduk, Ben R. Hodges, Vadym Aizinger, Balthasar Reuter
2017 J jnl
J. Math. Imaging Vis.
Leon Bungert, Vadym Aizinger, Michael Fried
2017 J jnl
J. Comput. Appl. Math.
Jochen Schütz, Vadym Aizinger
2016 C conf
SIMULTECH
Dominik Schoenwetter, Alexander Ditter, Vadym Aizinger, Balthasar Reuter, Dietmar Fey
2016 J jnl
Comput. Sci. Res. Dev.
Markus Geveler, Balthasar Reuter, Vadym Aizinger, Dominik Göddeke, Stefan Turek
2016 J jnl
CoRR
Balthasar Reuter, Vadym Aizinger, Manuel Wieland, Florian Frank, Peter Knabner
2016 J jnl
Comput. Math. Appl.
Balthasar Reuter, Vadym Aizinger, Manuel Wieland, Florian Frank, Peter Knabner
2015 J jnl
Comput. Math. Appl.
Florian Frank, Balthasar Reuter, Vadym Aizinger, Peter Knabner
2015 J jnl
Appl. Math. Comput.
Vadym Aizinger, Dmitri Kuzmin, Lukas Korous
2015 C conf
SIMULTECH
Dominik Schoenwetter, Alexander Ditter, Bruno Kleinert, Arne Hendricks, Vadym Aizinger, Harald Köstler, Dietmar Fey
2015 conf
SIMULTECH (Selected Papers)
Dominik Schoenwetter, Alexander Ditter, Bruno Kleinert, Arne Hendricks, Vadym Aizinger, Dietmar Fey
2014 J jnl
CoRR
Florian Frank, Balthasar Reuter, Vadym Aizinger, Peter Knabner
2012 J jnl
J. Comput. Phys.
Peter D. Düben, Peter Korn, Vadym Aizinger
2005 J jnl
J. Sci. Comput.
Clint Dawson, Vadym Aizinger
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