Vesna Prckovska

12 papers B 1Journal 5Unranked 5
YearRankTypeTitle / Venue / Authors
2022 J jnl
NeuroImage
Chiara Maffei, Gabriel Girard, Kurt G. Schilling, Dogu Baran Aydogan, Nagesh Adluru, Andrey Zhylka, Ye Wu, Matteo Mancini, Andac Hamamci, Alessia Sarica, Achille Teillac, Steven H. Baete, Davood Karimi, Fang-Cheng Yeh, Mert E. Yildiz, Ali Gholipour, Yann Bihan-Poudec, Bassem Hiba, Andrea Quattrone, Aldo Quattrone, Tommy Boshkovski, Nikola Stikov, Pew-Thian Yap, Alberto De Luca, Josien P. W. Pluim, Alexander Leemans, Vivek Prabhakaran, Barbara B. Bendlin, Andrew L. Alexander, Bennett A. Landman, Erick Jorge Canales-Rodríguez, Muhamed Barakovic, Jonathan Rafael-Patino, Thomas Yu, Gaëtan Rensonnet, Simona Schiavi, Alessandro Daducci, Marco Pizzolato, Elda Fischi Gomez, Jean-Philippe Thiran, George Dai, Giorgia Grisot, Nikola Lazovski, Santi Puch, Marc Ramos, Paulo Rodrigues, Vesna Prckovska, Robert Jones, Julia Lehman, Suzanne N. Haber, Anastasia Yendiki
2018 conf
BrainLes@MICCAI (2)
Santi Puch, Irina Sánchez, Aura Hernández, Gemma Piella, Vesna Prckovska
2015 ch.
Visualization and Processing of Higher Order Descriptors for Multi-Valued Data
Vesna Prckovska, Magí Andorrà, Pablo Villoslada, Eloy Martinez-Heras, Remco Duits, David Fortin, Paulo Reis Rodrigues, Maxime Descoteaux
2015 conf
ICT Innovations
Tommy Boshkovski, Ilinka Ivanoska, Kire Trivodaliev, Slobodan Kalajdziski, Pablo Villoslada, Magí Andorrà, Vesna Prckovska, Ljupco Kocarev
2014 J jnl
IEEE Trans. Medical Imaging
Alessandro Daducci, Erick Jorge Canales-Rodríguez, Maxime Descoteaux, Eleftherios Garyfallidis, Yaniv Gur, Ying-Chia Lin, Merry Mani, Sylvain Merlet, Michael Paquette, Alonso Ramirez-Manzanares, Marco Reisert, Paulo Reis Rodrigues, Farshid Sepehrband, Emmanuel Caruyer, Jeiran Choupan, Rachid Deriche, Mathews Jacob, Gloria Menegaz, Vesna Prckovska, Mariano Rivera, Yves Wiaux, Jean-Philippe Thiran
2013 conf
MICCAI (1)
Paulo Reis Rodrigues, Alberto Prats-Galino, David Gallardo-Pujol, Pablo Villoslada, Carles Falcón, Vesna Prckovska
2013 J jnl
Int. J. Biomed. Imaging
Vesna Prckovska, Hakim C. Achterberg, Matteo Bastiani, Pim Pullens, Evgeniya Balmashnova, Bart M. ter Haar Romeny, Anna Vilanova, Alard Roebroeck
2011 J jnl
IEEE Trans. Vis. Comput. Graph.
Vesna Prckovska, Tim H. J. M. Peeters, Markus van Almsick, Bart M. ter Haar Romeny, Anna Vilanova
2011 J jnl
IEEE Trans. Vis. Comput. Graph.
Markus van Almsick, Tim H. J. M. Peeters, Vesna Prckovska, Anna Vilanova, Bart M. ter Haar Romeny
2009 conf
ICT Innovations
Vesna Prckovska, Anna Vilanova, Cyril Poupon, Bart M. ter Haar Romeny, Maxime Descoteaux
2009 B conf
PacificVis
Tim H. J. M. Peeters, Vesna Prckovska, Markus van Almsick, Anna Vilanova, Bart M. ter Haar Romeny
2008 conf
MICCAI (2)
Vesna Prckovska, Alard Roebroeck, W. L. P. M. Pullens, Anna Vilanova, Bart M. ter Haar Romeny
redb/extractors/decompiler/apk/library_filter.py
← Index redb/extractors/decompiler/apk/library_filter.py python
"""Package-based library filtering for APK DEX code analysis.

Determines whether a method belongs to a known library/framework package
and should be filtered out of content tables. This is the Android equivalent
of is_lib_or_thunk() in the Binary Ninja pipeline.
"""

import os
from typing import Dict, List


DEFAULT_LIBRARY_PREFIXES = [
    "android.",
    "androidx.",
    "com.google.android.",
    "com.google.firebase.",
    "com.google.gson.",
    "com.google.protobuf.",
    "kotlin.",
    "kotlinx.",
    "org.apache.",
    "com.squareup.",
    "io.reactivex.",
    "org.reactivestreams.",
    "com.facebook.",
    "com.crashlytics.",
    "io.fabric.",
    "org.junit.",
    "org.mockito.",
]


class LibraryFilter:
    """Filters library/framework classes from APK analysis."""

    def __init__(self, prefixes: List[str] = None):
        env_prefixes = os.getenv("APK_LIBRARY_PREFIXES")
        if env_prefixes:
            self._prefixes = [p.strip() for p in env_prefixes.split(",") if p.strip()]
        elif prefixes is not None:
            self._prefixes = prefixes
        else:
            self._prefixes = DEFAULT_LIBRARY_PREFIXES

        # Convert Dalvik-style prefixes to both formats for matching
        self._dot_prefixes = tuple(self._prefixes)

        self._stats = {"library": 0, "user": 0}

    def is_library(self, class_name: str) -> bool:
        """Check if a class belongs to a known library/framework package.

        Accepts both Java dot notation (com.example.Foo) and Dalvik
        descriptor notation (Lcom/example/Foo;).
        """
        # Normalize Dalvik descriptor to dot notation
        normalized = self._normalize_class_name(class_name)

        is_lib = normalized.startswith(self._dot_prefixes)
        if is_lib:
            self._stats["library"] += 1
        else:
            self._stats["user"] += 1
        return is_lib

    def get_filter_stats(self) -> Dict[str, int]:
        """Return counts of filtered vs. retained classes."""
        return dict(self._stats)

    @staticmethod
    def _normalize_class_name(class_name: str) -> str:
        """Convert Dalvik descriptor to dot notation.

        Lcom/example/Foo; -> com.example.Foo
        com.example.Foo -> com.example.Foo
        """
        if class_name.startswith("L") and class_name.endswith(";"):
            return class_name[1:-1].replace("/", ".")
        return class_name.replace("/", ".")