Irene Alice Chicchi Giglioli

21 papers C 2Journal 11Unranked 8
YearRankTypeTitle / Venue / Authors
2025 J jnl
Cyberpsychology Behav. Soc. Netw.
Eleonora Noselli, Irene Alice Chicchi Giglioli, Elena Sajno, Giuseppe Riva
2024 J jnl
Cyberpsychology Behav. Soc. Netw.
Asier Adriasola, Sergio Cervera-Torres, Yolanda Cañada, Irene Alice Chicchi Giglioli, Ana García-Blanco, Pilar Sierra, María López-Cerveró, Blanes Rodríguez Chloe, Pablo Navalón, Alcañiz Raya Mariano
2024 J jnl
Comput. Biol. Medicine
Maria Eleonora Minissi, Alberto Altozano, Javier Marín-Morales, Irene Alice Chicchi Giglioli, Fabrizia Mantovani, Mariano Alcañiz
2024 J jnl
Cyberpsychology Behav. Soc. Netw.
Sergio Cervera-Torres, Desirée I. Gracia Laso, Maria Eleonora Minissi, Luna Maddalon, Irene Alice Chicchi Giglioli, Mariano Alcañiz
2023 J jnl
IEEE J. Biomed. Health Informatics
Lucía Gómez-Zaragozá, Javier Marín-Morales, Elena Parra Vargas, Irene Alice Chicchi Giglioli, Mariano Alcañiz Raya
2023 conf
HCI (9)
Sergio Cervera-Torres, Maria Eleonora Minissi, Alberto Greco, Alejandro Luis Callara, Saideh Ferdowsi, Luca Citi, Luna Maddalon, Irene Alice Chicchi Giglioli, Mariano Alcañiz
2023 conf
SeGAH
Maria Eleonora Minissi, Giampaolo Abate Romero Landini, Luna Maddalon, Sergio Cervera-Torres, Irene Alice Chicchi Giglioli, Marian Sirera, Luis Abad, Soledad Gómez García, Mariano Alcañiz
2022 J jnl
BMC Medical Informatics Decis. Mak.
Sergio Cervera-Torres, Francisco José Núñez-Benjumea, Antonio De Arriba Muñoz, Irene Alice Chicchi Giglioli, Luis Fernández-Luque
2021 C conf
EDUCON
Javier Marín-Morales, Lucia A. Carrasco-Ribelles, Mariano Alcañiz, Irene Alice Chicchi Giglioli
2021 J jnl
Frontiers Virtual Real.
Federica Pallavicini, Irene Alice Chicchi Giglioli, Gerard Jounghyun Kim, Mariano Alcañiz, Albert A. Rizzo
2021 C conf
EDUCON
Irene Alice Chicchi Giglioli, Sara Mussoni, Pietro Cipresso, Javier Marín-Morales, Giuseppe Riva, Mariano Alcañiz
2021 J jnl
Cyberpsychology Behav. Soc. Netw.
Irene Alice Chicchi Giglioli, Bartolomé Pérez Gálvez, Andrea Gil Granados, Mariano Alcañiz Raya
2020 J jnl
Cyberpsychology Behav. Soc. Netw.
Carla de Juan Ripoll, José Luis Soler Domínguez, Irene Alice Chicchi Giglioli, Manuel Contero, Mariano Alcañiz
2018 conf
JCSG
Elena Parra, Carla de Juan Ripoll, Mariano Alcañiz Raya, Irene Alice Chicchi Giglioli
2017 conf
JCSG
Irene Alice Chicchi Giglioli, Elena Parra, Georgina Cárdenas-López, Giuseppe Riva, Mariano Alcañiz Raya
2016 conf
RTSI
Marta Gandolla, Simona Ferrante, Stefania Coelli, Giulia Tacchino, Irene Alice Chicchi Giglioli, Michele Cotti Cottini, Carlo Seneci, Alessandro Scannapieco, Mario Veniero, Alessandra Pedrocchi
2016 J jnl
Cyberpsychology Behav. Soc. Netw.
Federica Pallavicini, Silvia Serino, Pietro Cipresso, Elisa Pedroli, Irene Alice Chicchi Giglioli, Alice Chirico, Gian Mauro Manzoni, Gianluca Castelnuovo, Enrico Molinari, Giuseppe Riva
2015 J jnl
Comput. Math. Methods Medicine
Irene Alice Chicchi Giglioli, Federica Pallavicini, Elisa Pedroli, Silvia Serino, Giuseppe Riva
2015 conf
MindCare
Irene Alice Chicchi Giglioli, Alice Chirico, Pietro Cipresso, Silvia Serino, Elisa Pedroli, Federica Pallavicini, Giuseppe Riva
2015 conf
REHAB
Elisa Pedroli, Silvia Serino, Pietro Cipresso, Federica Pallavicini, Irene Alice Chicchi Giglioli, Erika Guastafierro, Andrea Gaggioli, Giuseppe Riva
2014 conf
AVR
Pietro Cipresso, Silvia Serino, Irene Alice Chicchi Giglioli, Igor Giuliano, Davide Borra, Andrea Farina, Giuseppe Riva
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"