Hans Hegt

38 papers A 1B 3C 15Journal 5Unranked 14
YearRankTypeTitle / Venue / Authors
2017 C conf
ISCAS
Chenming Zhang, Lucien J. Breems, Georgi I. Radulov, Muhammed Bolatkale, Qilong Liu, Hans Hegt, Arthur H. M. van Roermund
2016 C conf
ISCAS
Chenming Zhang, Lucien J. Breems, Georgi I. Radulov, Muhammed Bolatkale, Hans Hegt, Arthur H. M. van Roermund
2015 J jnl
IEEE J. Emerg. Sel. Topics Circuits Syst.
Ketan J. Pol, Sotir Ouzounov, Hans Hegt, Arthur H. M. van Roermund
2015 conf
BioCAS
Ketan J. Pol, Hans Hegt, Arthur H. M. van Roermund, Sotir Ouzounov
2015 C conf
ISCAS
Jingjing Hu, Hans Hegt, Arthur H. M. van Roermund, Sotir Ouzounov
2014 C conf
ISCAS
Ketan J. Pol, Hans Hegt, Arthur H. M. van Roermund, Sotir Ouzounov
2013 conf
ESSCIRC
Yu Lin, Kostas Doris, Erwin Janssen, Athon Zanikopoulos, Alessandro Murroni, Gerard van der Weide, Hans Hegt, Arthur H. M. van Roermund
2013 C conf
ISCAS
Ketan J. Pol, Hans Hegt, Sotir Ouzounov
2012 C conf
ISCAS
Yu Lin, Kostas Doris, Hans Hegt, Arthur H. M. van Roermund
2012 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Yu Lin, Kostas Doris, Hans Hegt, Arthur H. M. van Roermund
2011 J jnl
IEEE J. Solid State Circuits
Yongjian Tang, Joost Briaire, Kostas Doris, Robert H. M. van Veldhoven, Pieter C. W. van Beek, Hans Hegt, Arthur H. M. van Roermund
2011 C conf
ISCAS
Yu Lin, Kostas Doris, Hans Hegt, Arthur H. M. van Roermund
2011 C conf
ISCAS
Elbert Bechthum, Yongjian Tang, Hans Hegt, Arthur H. M. van Roermund
2008 conf
APCCAS
Georgi I. Radulov, Patrick J. Quinn, Hans Hegt, Arthur H. M. van Roermund
2008 C conf
ISCAS
Yongjian Tang, Hans Hegt, Arthur H. M. van Roermund
2007 C conf
ISCAS
Pieter Harpe, Athon Zanikopoulos, Hans Hegt, Arthur H. M. van Roermund
2007 conf
ECCTD
Pieter Harpe, Hans Hegt, Arthur H. M. van Roermund
2007 conf
ICECS
Pieter Harpe, Hans Hegt, Arthur H. M. van Roermund
2007 J jnl
Integr.
Sotir Ouzounov, Engel Roza, Hans Hegt, Gerard van der Weide, Arthur H. M. van Roermund
2007 C conf
ISCAS
Athon Zanikopoulos, Pieter Harpe, Hans Hegt, Arthur H. M. van Roermund
2007 C conf
ISCAS
Georgi I. Radulov, Patrick J. Quinn, Pieter Harpe, Hans Hegt, Arthur H. M. van Roermund
2007 C conf
ISCAS
Yongjian Tang, Hans Hegt, Arthur H. M. van Roermund, Konstantinos Doris, Joost Briaire
2006 C conf
ISCAS
Yongjian Tang, Hans Hegt, Arthur H. M. van Roermund
2006 C conf
ISCAS
Pieter Harpe, Athon Zanikopoulos, Hans Hegt, Arthur H. M. van Roermund
2006 conf
ICECS
Athon Zanikopoulos, Pieter Harpe, Hans Hegt, Arthur H. M. van Roermund
2006 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Sotir Ouzounov, Hans Hegt, Arthur H. M. van Roermund
2005 conf
ISCAS (5)
Athon Zanikopoulos, Pieter Harpe, Hans Hegt, Arthur H. M. van Roermund
2005 conf
ESSCIRC
Georgi I. Radulov, Patrick J. Quinn, Hans Hegt, Arthur H. M. van Roermund
2005 conf
ISCAS (4)
Arthur H. M. van Roermund, Hans Hegt, Pieter Harpe, Georgi I. Radulov, Athon Zanikopoulos, Konstantinos Doris, Patrick J. Quinn
2004 conf
ESSCIRC
Sotir Ouzounov, Engel Roza, Hans Hegt, Gerard van der Weide, Arthur H. M. van Roermund
2004 conf
CICC
Sotir Ouzounov, Engel Roza, Hans Hegt, Gerard van der Weide, Arthur H. M. van Roermund
2001 conf
ICECS
Valeri M. Mladenov, Hans Hegt, Arthur H. M. van Roermund
2001 conf
ISCAS (3)
Valeri M. Mladenov, Hans Hegt, Arthur H. M. van Roermund
1999 A conf
ICDAR
Nadeem A. Khan, Hans Hegt
1998 B conf
SMC
Nadeem A. Khan, Hans Hegt
1998 B conf
SMC
Hans Hegt, Ron J. de la Haye, Nadeem A. Khan
1998 B conf
SMC
Nadeem A. Khan, Hans Hegt, Ignacio C. Allue
1998 conf
SSPR/SPR
Nadeem A. Khan, Hans Hegt
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("/", ".")