Ioannis T. Christou

62 papers A* 1A 1B 3C 3Misc 4Journal 36Unranked 12
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Dependable Secur. Comput.
Pavol Mulinka, Ioannis T. Christou, Subham Sahoo, Charalampos Kalalas, Pedro H. J. Nardelli
2025 J jnl
IEEE Access
Alejandro Mozo, Sergio Gálvez Rojas, Ioannis T. Christou, Dimitrios Vogiatzis, Tomas Navarro, Francisco López Valverde
2025 J jnl
Oper. Res.
Ioannis T. Christou, Dimitris Doukas, Konstantina Skouri, Gerasimos Meletiou
2024 B conf
IEEE Big Data
Charalampos Marantos, Spyridon Evangelatos, Eleni Veroni, George Lalas, Konstantinos Chasapas, Ioannis T. Christou, Pantelis Lappas
2024 J jnl
INFORMS J. Appl. Anal.
Ioannis T. Christou, Evgenia Vagianou, George Vardoulias
2023 conf
DCOSS-IoT
Ioannis T. Christou, John Soldatos, Thanassis Papadakis, Daniel Gutierrez-Rojas, Pedro H. J. Nardelli
2023 conf
EMCIS (1)
Nikolaos P. Bakas, Maria Papadaki, Evgenia Vagianou, Ioannis T. Christou, Savvas A. Chatzichristofis
2023 J jnl
CoRR
Ioannis T. Christou, Dimitris Doukas, Konstantina Skouri, Gerasimos Meletiou
2022 conf
SmartGridComm
Alexander Beattie, Pavol Mulinka, Subham Sahoo, Ioannis T. Christou, Charalampos Kalalas, Daniel Gutierrez-Rojas, Pedro H. J. Nardelli
2022 J jnl
CoRR
Alexander Beattie, Pavol Mulinka, Subham Sahoo, Ioannis T. Christou, Charalampos Kalalas, Daniel Gutierrez-Rojas, Pedro H. J. Nardelli
2022 J jnl
Comput. Ind.
Ioannis T. Christou, Nikos Kefalakis, John K. Soldatos, Angela-Maria Despotopoulou
2022 J jnl
Knowl. Inf. Syst.
Daniel Gutierrez-Rojas, Ioannis T. Christou, Daniel Dantas, Arun Narayanan, Pedro H. J. Nardelli, Yongheng Yang
2022 J jnl
CoRR
Ioannis T. Christou, Evgenia Vagianou, George Vardoulias
2020 J jnl
Comput. Ind. Eng.
Ioannis T. Christou, Konstantinos Skouri, Athanasios G. Lagodimos
2020 B conf
DCOSS
Ioannis T. Christou, Nikos Kefalakis, Andreas Zalonis, John Soldatos
2020 conf
ICPS
Daniel Gutierrez-Rojas, Mehar Ullah, Ioannis T. Christou, Gustavo Matheus de Almeida, Pedro H. J. Nardelli, Dick Carrillo, Jean Michel de Souza Sant'Ana, Hirley Alves, Merim Dzaferagic, Alessandro Chiumento, Charalampos Kalalas
2020 J jnl
CoRR
Daniel Gutierrez-Rojas, Mehar Ullah, Ioannis T. Christou, Gustavo Matheus de Almeida, Pedro H. J. Nardelli, Dick Carrillo, Jean Michel de Souza Sant'Ana, Hirley Alves, Merim Dzaferagic, Alessandro Chiumento, Charalampos Kalalas
2019 conf
ISWCS
Ioannis T. Christou
2019 conf
ISWCS
Pedro H. J. Nardelli, Constantinos B. Papadias, Charalampos Kalalas, Hirley Alves, Ioannis T. Christou, Irene Macaluso, Nicola Marchetti, Raúl Palacios, Jesus Alonso-Zarate
2019 J jnl
CoRR
Ioannis T. Christou
2018 J jnl
CoRR
Ioannis T. Christou, Emmanouil Amolochitis, Zheng-Hua Tan
2018 J jnl
Eur. J. Oper. Res.
Athanasios G. Lagodimos, Konstantina Skouri, Ioannis T. Christou, Panos T. Chountalas
2018 J jnl
CoRR
Ioannis T. Christou, Sofoklis Efremidis
2017 J jnl
Knowl. Inf. Syst.
Nikitas Goumatianos, Ioannis T. Christou, Peter Lindgren, Ramjee Prasad
2016 J jnl
Knowl. Inf. Syst.
Ioannis T. Christou, Emmanouil Amolochitis, Zheng-Hua Tan
2015 conf
CSOC (1)
Nikitas Goumatianos, Ioannis T. Christou, Peter Lindgren
2014 J jnl
Int. Trans. Oper. Res.
Athanasios C. Spanos, Stavros T. Ponis, Ilias P. Tatsiopoulos, Ioannis T. Christou, Elena Rokou
2014 J jnl
IEEE Intell. Syst.
Emmanouil Amolochitis, Ioannis T. Christou, Zheng-Hua Tan
2013 J jnl
Inf. Process. Manag.
Emmanouil Amolochitis, Ioannis T. Christou, Zheng-Hua Tan, Ramjee Prasad
2013 J jnl
Comput. Oper. Res.
Ioannis T. Christou, Spyridon Vassilaras
2013 J jnl
Int. J. Bus. Inf. Syst.
Stavros T. Ponis, Ioannis T. Christou
2013 C conf
ICPRAM
Nikitas Goumatianos, Ioannis T. Christou, Peter Lindgren
2012 J jnl
Int. J. Mach. Learn. Cybern.
Ioannis T. Christou, George Gekas, Anna Kyrikou
2012 J jnl
Int. J. Syst. Sci.
Athanasios G. Lagodimos, Ioannis T. Christou, Konstantina Skouri
2012 J jnl
Comput. Oper. Res.
Athanasios G. Lagodimos, Ioannis T. Christou, Konstantina Skouri
2012 conf
ICPRAM (2)
Emmanouil Amolochitis, Ioannis T. Christou, Zheng-Hua Tan
2011 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Ioannis T. Christou
2011 J jnl
Expert Syst. Appl.
Ioannis T. Christou, Menelaos Bakopoulos, Tassos Dimitriou, Emmanouil Amolochitis, Sofia Tsekeridou, C. Dimitriadis
2011 J jnl
Int. J. Pervasive Comput. Commun.
Konstantinos Mourtzoukos, Ioannis T. Christou, Sofoklis Efremidis
2011 B conf
PIMRC
Spyridon Vassilaras, Ioannis T. Christou
2010 J jnl
Int. J. Mob. Comput. Multim. Commun.
Ioannis T. Christou, Sofoklis Efremidis, Aikaterini Roukounaki
2010 C conf
MoMM
Konstantinos Mourtzoukos, Ioannis T. Christou
2010 J jnl
J. Mobile Multimedia
Ioannis T. Christou, Sotiris Michalakos
2010 J jnl
IEEE Softw.
Ioannis T. Christou, Stavros T. Ponis, Eleni Palaiologou
2008 conf
CCNC
Ghassan Karame, Ioannis T. Christou, Tassos Dimitriou
2008 J jnl
Int. J. Enterp. Inf. Syst.
Ioannis T. Christou, Stavros T. Ponis
2008 C conf
MoMM
Sotiris Michalakos, Ioannis T. Christou
2008 ch.
The Learning Grid Handbook
Ioannis T. Christou, Thanassis Tiropanis, Sofia Tsekeridou, Konstantinos Roussos
2008 Misc conf
ICDCN
Tassos Dimitriou, Ghassan Karame, Ioannis T. Christou
2007 ch.
Emerging Artificial Intelligence Applications in Computer Engineering
Stefanos Koutsoutos, Ioannis T. Christou, Sofoklis Efremidis
2007 Misc conf
AIAI
Ioannis T. Christou, Sofoklis Efremidis
2007 Misc conf
AIAI
Ioannis T. Christou, Sofoklis Efremidis, Aikaterini Roukounaki, Marios Anapliotis
2007 J jnl
IEEE Trans. Educ.
Ioannis T. Christou, Sofoklis Efremidis, Thanassis Tiropanis, Antonis Kalis
2007 A* conf
PODC
Tassos Dimitriou, Ghassan Karame, Ioannis T. Christou
2006 Misc conf
AIAI
Stefanos Koutsoutos, Ioannis T. Christou, Sofoklis Efremidis
2005 conf
Peer-to-Peer Computing
Ioannis T. Christou
2001 conf
Virtual Reality, Archeology, and Cultural Heritage
Vassilios Vlahakis, John Karigiannis, Manolis Tsotros, Michael Gounaris, Luís Almeida, Didier Stricker, Tim Gleue, Ioannis T. Christou, Renzo Carlucci, Nikolaos Ioannidis
2000 A conf
GECCO
Ioannis T. Christou, Armand Zakarian
1999 J jnl
Interfaces
Ioannis T. Christou, Armand Zakarian, Jun-Min Liu, Helen Carter
1997 J jnl
Math. Program.
Jonathan Yackel, Robert R. Meyer, Ioannis T. Christou
1996 conf
IRREGULAR
Ioannis T. Christou, Robert R. Meyer
1996 J jnl
J. Glob. Optim.
Ioannis T. Christou, Robert R. Meyer
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"