Vimala Jayakumar

29 papers Journal 28Unranked 1
YearRankTypeTitle / Venue / Authors
2026 J jnl
Health Inf. Sci. Syst.
Jeevitha Kannan, Vimala Jayakumar, Nasreen Kausar, Liang Kong
2026 J jnl
Eng. Appl. Artif. Intell.
Vimala Jayakumar, Ashma Banu Kather Mohideen, Nasreen Kausar, Dragan Pamucar, Vladimir Simic
2025 J jnl
New Math. Nat. Comput.
Vimala Jayakumar, S. Sabeena Begam, Muhammad Haris Saeed, Khuram Ali Khan, Atiqe Ur Rahman
2025 J jnl
J. Supercomput.
Ashma Banu Kather Mohideen, Vimala Jayakumar, F. Karaaslan, S. Nithya Sri
2025 J jnl
PeerJ Comput. Sci.
Vimala Jayakumar, A. N. Surya, Nasreen Kausar, Dragan Pamucar, Seifedine Kadry, Jungeun Kim
2025 J jnl
New Math. Nat. Comput.
Jeevitha Kannan, Vimala Jayakumar, Arsham Borumand Saeid
2025 J jnl
Int. J. Comput. Intell. Syst.
Vimala Jayakumar, Mahalakshmi Pethaperumal, Nasreen Kausar, Dragan Pamucar, Vladimir Simic, Mohammed Abdullah Salman
2025 J jnl
PeerJ Comput. Sci.
Vimala Jayakumar, S. Nithya Sri, Nasreen Kausar, Dragan Pamucar, Vladimir Simic, Jungeun Kim
2025 J jnl
Inf. Sci.
A. N. Surya, Vimala Jayakumar
2024 J jnl
Adv. Intell. Syst.
Shio Gai Quek, Ganeshsree Selvachandran, Vimala Jayakumar, Phet Duong, Le Hoang Son
2024 J jnl
IEEE Access
Jeevitha Kannan, Vimala Jayakumar, Muhammad Haris Saeed, Tmader Alballa, Hamiden Abd El-Wahed Khalifa, Heba Ghareeb Gomaa
2024 J jnl
PeerJ Comput. Sci.
Ashma Banu Kather Mohideen, Vimala Jayakumar, Nasreen Kausar, Zeljko Stevic
2024 J jnl
Int. J. Fuzzy Syst.
Vimala Jayakumar, Harish Garg, Jeevitha Kannan
2023 J jnl
Soft Comput.
Vimala Jayakumar, P. Mahalakshmi, Atiqe Ur Rahman, Muhammad Haris Saeed
2023 J jnl
IEEE Access
Vimala Jayakumar, Ashma Banu Kather Mohideen, Muhammad Haris Saeed, Hamed H. Alsulami, Aftab Hussain, Muhammad Saeed
2023 J jnl
J. Intell. Fuzzy Syst.
Jeevitha Kannan, Harish Garg, Vimala Jayakumar, Hanan Aljuaid, Abdel-Haleem Abdel-Aty
2023 J jnl
Int. J. Fuzzy Log. Intell. Syst.
Vimala Jayakumar, D. Preethi, S. Rajareega, Seyyed Ahmad Edalatpanah
2022 J jnl
Math. Comput. Simul.
S. Sabeena Begam, Vimala Jayakumar
2021 J jnl
J. Intell. Fuzzy Syst.
D. Preethi, Vimala Jayakumar, S. Rajareega, Madeline Al Tahan
2021 J jnl
J. Intell. Fuzzy Syst.
S. Rajareega, Vimala Jayakumar
2021 J jnl
J. Intell. Fuzzy Syst.
D. Preethi, Vimala Jayakumar
2020 J jnl
J. Intell. Fuzzy Syst.
D. Preethi, Vimala Jayakumar, Bijan Davvaz, S. Rajareega
2020 J jnl
J. Intell. Fuzzy Syst.
Vimala Jayakumar, L. Vijayalakshmi, Xindong Peng
2019 J jnl
J. Intell. Fuzzy Syst.
S. Sabeena Begam, Vimala Jayakumar
2019 J jnl
J. Intell. Fuzzy Syst.
AR. Pandipriya, Vimala Jayakumar, V. S. Anusuya Ilamathi
2019 J jnl
J. Intell. Fuzzy Syst.
V. S. Anusuya Ilamathi, Vimala Jayakumar, Bijan Davvaz
2018 J jnl
J. Intell. Fuzzy Syst.
Vimala Jayakumar, J. Arockia Reeta, V. S. Anusuya Ilamathi
2018 conf
ICACCI
V. S. Anusuya Ilamathi, Vimala Jayakumar
2018 J jnl
J. Intell. Fuzzy Syst.
J. Arockia Reeta, Vimala Jayakumar
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("/", ".")