Vasileios Mygdalis

57 papers A 1B 9C 5Misc 4Journal 18Unranked 19
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Samar Heydari, Jawher Said, Galip Ümit Yolcu, Evgenii Kortukov, Elena Golimblevskaia, Evgenios Vlachos, Vasileios Mygdalis, Ioannis Pitas, Sebastian Lapuschkin, Leila Arras
2026 J jnl
Pattern Recognit.
Matthaios Dimitrios Tzimas, Vasileios Mygdalis, Christos Papaioannidis, Ioannis Pitas
2026 J jnl
Neurocomputing
Evangelos Charalampakis, Vasileios Mygdalis, Ioannis Pitas
2026 J jnl
Neurocomputing
A. Apostolidis, Vasileios Mygdalis, Matthaios Dimitrios Tzimas, Ioannis Pitas
2025 C conf
ISCC
Dimitrios Papaioannou, Vasileios Mygdalis, Ioannis Pitas
2025 B conf
IJCNN
Matthaios Dimitrios Tzimas, Vasileios Mygdalis, Ioannis Pitas
2025 J jnl
Vis. Comput.
Iason Karakostas, Vasileios Mygdalis, Nikos Nikolaidis, Ioannis Pitas
2025 J jnl
CoRR
Evangelos Charalampakis, Vasileios Mygdalis, Ioannis Pitas
2025 conf
EUSIPCO
Diamantis Rafail Papadam, Pantelis Mentesidis, Alexandros Zamioudis, Vasileios Mygdalis, Dimitrios Psarras, Ioannis Pitas
2025 J jnl
Nat. Lang. Process. J.
Polydoros Giannouris, Vasileios Mygdalis, Ioannis Pitas
2025 Misc conf
ICASSP
Erofili Alexaki, Christos Papaioannidis, Vasileios Mygdalis, Ioannis Pitas
2025 J jnl
J. Ind. Inf. Integr.
Pantelis Mentesidis, Vasileios Mygdalis, Ioannis Pitas
2025 J jnl
Signal Process. Image Commun.
Dimitrios Papaioannou, Vasileios Mygdalis, Ioannis Pitas
2025 conf
ICIPW
Evangelos Spatharis, Christos Papaioannidis, Vasileios Mygdalis, Ioannis Pitas
2024 Misc conf
ICASSP
Dimitrios Psarras, Christos Papaioannidis, Vasileios Mygdalis, Ioannis Pitas
2024 conf
EUSIPCO
Vasileios Mygdalis, Nathalie Dens
2024 conf
MLSP
Marco A. Montes Grova, Vasileios Mygdalis, Francisco Javier Pérez-Grau, Antidio Viguria, Ioannis Pitas
2024 C conf
ISCC
Dimitrios Papaioannou, Vasileios Mygdalis, Ioannis Pitas
2024 conf
ICASSP Workshops
Marios Nikolaos Militsis, Vasileios Mygdalis, Ioannis Pitas
2023 conf
MLSP
Stefania Altini, Vasileios Mygdalis, Ioannis Pitas
2023 B conf
ICIP
Georgios Kalitsios, Vasileios Mygdalis, Ioannis Pitas
2023 C conf
BDCAT
Matthaios Dimitrios Tzimas, Christos Papaioannidis, Vasileios Mygdalis, Ioannis Pitas
2023 Misc conf
ICASSP
Vasileios Mygdalis, Ioannis Pitas
2023 C conf
MMSP
Daniel Aláez, Vasileios Mygdalis, Jesús E. Villadangos, Ioannis Pitas
2022 conf
IWSSIP
Emmanouil Patsiouras, Vasileios Mygdalis, Ioannis Pitas
2022 conf
IVMSP
Iason Karakostas, Vasileios Mygdalis, Ioannis Pitas
2022 J jnl
Pattern Recognit.
Vasileios Mygdalis, Ioannis Pitas
2022 B conf
CCGRID
Vasileios Mygdalis, Lorenzo Carnevale, José Ramiro Martinez de Dios, Dmitriy Shutin, Giovanni Aiello, Massimo Villari, Ioannis Pitas
2022 conf
IVMSP
Emmanouil Patsiouras, Vasileios Mygdalis, Ioannis Pitas
2022 conf
MLSP
Alexandros Zamichos, Vasileios Mygdalis, Ioannis Pitas
2022 B conf
ICPR
Emmanouil Patsiouras, Vasileios Mygdalis, Ioannis Pitas
2021 B conf
ICIP
Iason Karakostas, Vasileios Mygdalis, Ioannis Pitas
2021 conf
MLSP
Vasileios Mygdalis, Anastasios Tefas, Ioannis Pitas
2021 J jnl
Signal Process. Image Commun.
Iason Karakostas, Vasileios Mygdalis, Anastasios Tefas, Ioannis Pitas
2020 J jnl
IEEE Trans. Image Process.
Christos Papaioannidis, Vasileios Mygdalis, Ioannis Pitas
2020 J jnl
Neural Networks
Vasileios Mygdalis, Anastasios Tefas, Ioannis Pitas
2019 J jnl
Pattern Recognit.
Vasileios Mygdalis, Anastasios Tefas, Ioannis Pitas
2019 J jnl
IEEE Trans. Broadcast.
Ioannis Mademlis, Vasileios Mygdalis, Nikos Nikolaidis, Maurizio Montagnuolo, Fulvio Negro, Alberto Messina, Ioannis Pitas
2019 conf
EUSIPCO
Iason Karakostas, Vasileios Mygdalis, Anastasios Tefas, Ioannis Pitas
2019
Vasileios Mygdalis
2018 A conf
ICME
Ioannis Mademlis, Vasileios Mygdalis, Nikos Nikolaidis, Ioannis Pitas
2018 B conf
ICIP
Vasileios Mygdalis, Anastasios Tefas, Ioannis Pitas
2018 conf
MLSP
Panteleimon Chriskos, Rosen Zhelev, Vasileios Mygdalis, Ioannis Pitas
2018 J jnl
Neurocomputing
Vasileios Mygdalis, Alexandros Iosifidis, Anastasios Tefas, Ioannis Pitas
2017 conf
GlobalSIP
Nikos Nikolaidis, Ioannis Mademlis, Orestis Zachariadis, Vasileios Mygdalis, Ioannis Pitas
2017 conf
GlobalSIP
Panteleimon Chriskos, Jonathan Munro, Vasileios Mygdalis, Ioannis Pitas
2017 J jnl
Neural Process. Lett.
Alexandros Iosifidis, Vasileios Mygdalis, Anastasios Tefas, Ioannis Pitas
2016 B conf
ICPR
Vasileios Mygdalis, Anastasios Tefas, Ioannis Pitas
2016 conf
DMIAF
Christos Avgerinos, Nikos Nikolaidis, Vasileios Mygdalis, Ioannis Pitas
2016 J jnl
Pattern Recognit.
Vasileios Mygdalis, Alexandros Iosifidis, Anastasios Tefas, Ioannis Pitas
2016 conf
SPLINE
Vasileios Mygdalis, Alexandros Iosifidis, Anastasios Tefas, Ioannis Pitas
2016 C conf
MMSP
Vasileios Mygdalis, Alexandros Iosifidis, Anastasios Tefas, Ioannis Pitas
2016 B conf
ICIP
Vasileios Mygdalis, Alexandros Iosifidis, Anastasios Tefas, Ioannis Pitas
2016 B conf
ICPR
Stamatis Samaras, Vasileios Mygdalis, Ioannis Pitas
2015 Misc conf
ICASSP
Vasileios Mygdalis, Alexandros Iosifidis, Anastasios Tefas, Ioannis Pitas
2015 conf
TrustCom/BigDataSE/ISPA (2)
Vasileios Mygdalis, Alexandros Iosifidis, Anastasios Tefas, Ioannis Pitas
2014 conf
CIES
Vasileios Mygdalis, Alexandros Iosifidis, Anastasios Tefas, Ioannis Pitas
redb/extractors/apk_extractors/apk_native_libs.py
← Index redb/extractors/apk_extractors/apk_native_libs.py python
import fnmatch
import hashlib
import inspect
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.apk_extractor import APKExtractor
from redb.models.dataclasses import APKNativeLib

# Known packer/protector native library names
KNOWN_PACKER_LIBS = {
    # Jiagu (360/Qihoo)
    "libjiagu.so", "libjiagu_a64.so", "libjiagu_x86.so", "libjiagu_x64.so",
    # Bangcle/SecNeo
    "libsecexe.so", "libsecmain.so", "libSecShell.so",
    # Baidu
    "libbaiduprotect.so",
    # Tencent (Legu)
    "libtxAppProtect.so", "libBugly.so",
    # iJiami
    "libexec.so", "libexecmain.so",
    # Alibaba
    "libmobisec.so", "libaliprotect.so",
    # APKProtect
    "libAPKProtect.so",
    # Pangxie (Pangolin)
    "libdexjni.so",
    # DexProtector
    "libdexprotector.so",
    # AppSolid
    "libAppSolid.so",
    # Kiwisec
    "libkwscmm.so",
    # DingXiang
    "libx3g.so",
    # NQ Shield
    "libnqshield.so",
    # Generic / other
    "libprotectClass.so",
    "libDexHelper.so",
    "libdexloader.so",
    "libfdog.so",
}

# Glob-style patterns for packer libs (e.g. libshella-*.so)
KNOWN_PACKER_PATTERNS = [
    "libshella-*.so",
    "libshell-super.*.so",
]


def is_known_packer_lib(filename):
    """Check if a native library filename matches known packer signatures."""
    if filename in KNOWN_PACKER_LIBS:
        return True
    for pattern in KNOWN_PACKER_PATTERNS:
        if fnmatch.fnmatch(filename, pattern):
            return True
    return False


class APKNativeLibExtractor(APKExtractor):

    def __init__(
        self, filepath, log, exporters=None, index_prefix=None,
        known_benign=False, known_malicious=False,
        apk=None,
    ):
        super().__init__(
            filepath, log, exporters, index_prefix,
            known_benign, known_malicious, apk,
        )
        self.native_libs = []
        self.abis = set()
        self.log.debug(inspect.currentframe().f_code.co_name)

    def tag(self):
        return Tag.APK_NATIVE_LIBS.value

    def extract(self):
        if not self._is_valid_apk():
            self.log.error(f"Invalid APK for {self.hash.sha256}")
            return None

        self.native_libs = []
        self.abis = set()

        zf = self._get_zip_file()
        if not zf:
            return None

        with zf:
            for info in zf.infolist():
                if not (info.filename.startswith("lib/") and info.filename.endswith(".so")):
                    continue
                parts = info.filename.split("/")
                if len(parts) < 3:
                    continue

                abi = parts[1]
                filename = parts[-1]
                self.abis.add(abi)

                try:
                    data = zf.read(info.filename)
                    lib_sha256 = hashlib.sha256(data).hexdigest()
                except Exception as e:
                    self.log.warning(f"Error reading native lib {info.filename}: {e}")
                    continue

                self.native_libs.append(APKNativeLib(
                    abi=abi,
                    filename=filename,
                    size=info.file_size,
                    sha256=lib_sha256,
                    is_known_packer=is_known_packer_lib(filename),
                ))

        if not self.native_libs:
            return None

        return {
            "native_lib_count": len(self.native_libs),
            "abis": sorted(self.abis),
            "native_libs": self.native_libs,
            "known_packer_libs": [
                lib for lib in self.native_libs if lib.is_known_packer
            ],
        }

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ClickHouseExporter":
            if not self.native_libs:
                return None

            current_time = datetime.now(timezone.utc)
            data = []
            for lib in self.native_libs:
                data.append([
                    self.sha256,
                    lib.abi,
                    lib.filename,
                    lib.size,
                    lib.sha256,
                    int(lib.is_known_packer),
                    current_time,
                ])

            column_names = [
                'sha256', 'lib_abi', 'lib_filename', 'lib_size',
                'lib_sha256', 'lib_is_known_packer', 'analysis_date',
            ]

            column_type_names = [
                'FixedString(64)', 'LowCardinality(String)', 'String', 'UInt64',
                'FixedString(64)', 'UInt8', "DateTime64(3, 'UTC')",
            ]

            return (data, column_names, column_type_names)

    def get_clickhouse_table(self) -> str:
        return "redb_apk_native_libs"