Walter G. Besio

45 papers Misc 1Journal 13Unranked 31
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Biomed. Eng.
Ali Rabiee, Sima Ghafoori, Anna Cetera, Maryam Norouzi, Walter G. Besio, Reza Abiri
2024 J jnl
CoRR
Ali Rabiee, Sima Ghafoori, Anna Cetera, Walter G. Besio, Reza Abiri
2024 J jnl
Sensors
Cassidy Considine, Walter G. Besio
2024 conf
AIIoT
Rafael Da Luz Barbosa, Kaushallya Adhikari, Walter G. Besio
2023 conf
AIIoT
Thao Pham, Kaushallya Adhikari, Walter G. Besio
2022 conf
EMBC
Kaushallya Adhikari, Thao Pham, Joanne Hall, Alexander Rotenberg, Walter G. Besio
2021 J jnl
Sensors
Manob Jyoti Saikia, Walter G. Besio, Kunal Mankodiya
2020 J jnl
J. Sensors
Xiang Liu, Oleksandr Makeyev, Walter G. Besio
2019 J jnl
IEEE Trans. Biomed. Eng.
Seyed Hadi Nasrollaholhosseini, Jason Mercier, Godi Fischer, Walter G. Besio
2019 J jnl
IEEE Trans. Biomed. Circuits Syst.
Manob Jyoti Saikia, Walter G. Besio, Kunal Mankodiya
2018 conf
ISSPIT
Chase Haddix, Amir F. Al-Bakri, Walter G. Besio, Sridhar Sunderam
2018 conf
EMBC
Yafen Chen, Julia H. Tang, Guofa Shou, Diamond Gleghorn, Benjamin C. Doudican, Walter G. Besio, Yoon-Hee Cha, Lei Ding, Han Yuan
2018 conf
EMBC
Amir F. Al-Bakri, Farid Yaghouby, Walter G. Besio, Lei Ding, Pradeep Modur, Sridhar Sunderam
2017 conf
EMBC
Oleksandr Makeyev, Cody Joe, Colin Lee, Walter G. Besio
2017 conf
EMBC
Junwei Ma, Han Yuan, Sridhar Sunderam, Walter G. Besio, Lei Ding
2017 conf
EMBC
Rachel Bellisle, Preston Steele, Rachel Bartels, Lei Ding, Sridhar Sunderam, Walter G. Besio
2017 conf
EMBC
Seyed Hadi Nasrollaholhosseini, Daniel Salazar Herrera, Walter G. Besio
2017 conf
IEEE SENSORS
Walter G. Besio
2017 conf
IEEE SENSORS
Preston Steele, Jason Mercier, Seyed Hadi Nasrollaholhosseini, Rachel Bartels, Walter G. Besio
2017 conf
EMBC
Oleksandr Makeyev, Colin Lee, Walter G. Besio
2017 Misc conf
MMAR
Chase Haddix, Ahmed A. Bahrani, Aleksandra Kawala-Janik, Walter G. Besio, Guoqiang Yu, Sridhar Sunderam
2016 conf
EMBC
Oleksandr Makeyev, Walter G. Besio
2016 conf
EMBC
Seyed Hadi Nasrollaholhosseini, Preston Steele, Walter G. Besio
2016 conf
EMBC
Oleksandr Makeyev, Walter G. Besio
2016 J jnl
IEEE J. Biomed. Health Informatics
Elsa D. Angelini, Riccardo Bellazzi, Walter G. Besio, Marius George Linguraru
2016 J jnl
Sensors
Oleksandr Makeyev, Walter G. Besio
2015 J jnl
IEEE J. Biomed. Health Informatics
Walter G. Besio, Leslie Ying, Jie Liang, Nigel H. Lovell, Carmen C. Y. Poon, May D. Wang
2015 conf
EMBC
Rand K. Almajidy, Yacine Boudria, Ulrich G. Hofmann, Walter G. Besio, Kunal Mankodiya
2015 conf
EMBC
Cesar E. Santana-Gomez, David Alcantara-Gonzalez, Hiram Luna-Munguia, Ivette Banuelos-Cabrera, Victor Magdaleno-Madrigal, Michael Tamayo, Luisa L. Rocha, Walter G. Besio
2014 conf
EMBC
Matthew D. Luby, Oleksandr Makeyev, Walter G. Besio
2014 conf
EMBC
Zhenghan Zhu, James Brooks, Oleksandr Makevey, Steven M. Kay, Walter G. Besio
2013 conf
EMBC
Oleksandr Makeyev, Quan Ding, Iris E. Martinez-Juarez, John Gaitanis, Steven M. Kay, Walter G. Besio
2013 conf
EMBC
Oleksandr Makeyev, Quan Ding, Steven M. Kay, Walter G. Besio
2012 J jnl
Biomed. Signal Process. Control.
Oleksandr Makeyev, Paulo Lopez-Meyer, Stephanie Schuckers, Walter G. Besio, Edward Sazonov
2012 conf
EMBC
Oleksandr Makeyev, Xiang Liu, Liling Wang, Zhenghan Zhu, Aristides Taveras, Derek Troiano, Andrei V. Medvedev, Walter G. Besio
2012 conf
EMBC
Oleksandr Makeyev, Quan Ding, Steven M. Kay, Walter G. Besio
2011 conf
EMBC
Xiang Liu, Oleksandr Makeyev, Walter G. Besio
2011 conf
EMBC
Walter G. Besio, X. Liu, Yurong Liu, Y. L. Sun, Andrei V. Medvedev, Kanthaiah Koka
2011 conf
EMBC
Walter G. Besio, Ruba Hadidi, Oleksandr Makeyev, Hiram Luna-Munguia, Luisa L. Rocha
2011 conf
EMBC
Oleksandr Makeyev, Xiang Liu, Kanthaiah Koka, Steven M. Kay, Walter G. Besio
2011 J jnl
Int. J. Neural Syst.
Walter G. Besio, Xiang Liu, Liling Wang, Andrei V. Medvedev, Kanthaiah Koka
2006 conf
EMBC
Walter G. Besio, Ashwini Prasad
2006 conf
EMBC
Walter G. Besio, Kanthaiah Koka
2006 conf
EMBC
Walter G. Besio, Ting Chen
2006 J jnl
IEEE Trans. Biomed. Eng.
Walter G. Besio, Kanthaiah Koka, Rajesh Aakula, Weizhong Dai
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"