Ram N. Mohapatra

33 papers Journal 26Unranked 4
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Access
Shankhadeep Mondal, Ram N. Mohapatra
2026 J jnl
J. Appl. Math. Comput.
Subhashree Patel, Ratikanta Behera, Ram N. Mohapatra
2025 J jnl
J. Appl. Math. Comput.
Krushnachandra Panigrahy, Biswarup Karmakar, Jajati Keshari Sahoo, Ratikanta Behera, Ram N. Mohapatra
2024 J jnl
Axioms
Ram N. Mohapatra, Bijaya Kumar Sahu, Gayatri Pany
2024 J jnl
CoRR
Krushnachandra Panigrahy, Biswarup Karmakar, Jajati Keshari Sahoo, Ratikanta Behera, Ram N. Mohapatra
2024 J jnl
Symmetry
María A. Navascués, Ram N. Mohapatra
2024 J jnl
RAIRO Oper. Res.
Vivek Laha, Harsh Narayan Singh, Ram N. Mohapatra
2023 J jnl
Evol. Intell.
Moirangthem Tiken Singh, Surajit Borkotokey, Rachid Ait Maalem Lahcen, Ram N. Mohapatra
2023 J jnl
CoRR
Bibekananda Sitha, Ratikanta Behera, Jajati Keshari Sahoo, Ram N. Mohapatra, Predrag S. Stanimirovic
2022 J jnl
Numer. Linear Algebra Appl.
Ratikanta Behera, Jajati Keshari Sahoo, Ram N. Mohapatra, M. Zuhair Nashed
2020 J jnl
CoRR
Ratikanta Behera, Jajati Keshari Sahoo, Ram N. Mohapatra
2020 J jnl
J. Optim. Theory Appl.
Bijaya Kumar Sahu, Ouayl Chadli, Ram N. Mohapatra, Sabyasachi Pani
2020 J jnl
Cybersecur.
Rachid Ait Maalem Lahcen, Bruce D. Caulkins, Ram N. Mohapatra, Manish Kumar
2020 J jnl
Comput. Appl. Math.
Ratikanta Behera, Sandip Maji, Ram N. Mohapatra
2019 J jnl
Multim. Tools Appl.
Manish Kumar, Ram N. Mohapatra, Sajal Agarwal, G. Sathish, Sharada Nandan Raw
2019 conf
WCGO
Balendu Bhooshan Upadhyay, Priyanka Mishra, Ram N. Mohapatra, Shashi Kant Mishra
2019 J jnl
Cryptologia
Tanmoy Maitra, Debasis Giri, Ram N. Mohapatra
2018 J jnl
Secur. Priv.
Dipankar Dey, Debasis Giri, Biswapati Jana, Tanmoy Maitra, Ram N. Mohapatra
2018 ed.
ICMC
Debdas Ghosh, Debasis Giri, Ram N. Mohapatra, Ekrem Savas, Kouichi Sakurai, L. P. Singh
2018 conf
ICMC
Nabin Kumar Sahu, Ram N. Mohapatra
2018 J jnl
Ann. Oper. Res.
Gayatri Pany, Ram N. Mohapatra, Sabyasachi Pani
2017 conf
ICMC
Nabin Kumar Sahu, Chandal Nahak, Ram N. Mohapatra
2017 conf
ICMC
Nihar Kumar Mahato, Ram N. Mohapatra
2017 ed.
ICMC
Debasis Giri, Ram N. Mohapatra, Heinrich Begehr, Mohammad S. Obaidat
2017 J jnl
Appl. Math. Comput.
Vishnu Narayan Mishra, Ram N. Mohapatra, Preeti Sharma
2014 J jnl
Appl. Math. Comput.
Nabin Kumar Sahu, Ram N. Mohapatra, Chandal Nahak, Sudarshan Nanda
2013 J jnl
J. Appl. Math.
Zhenyu Huang, Ram N. Mohapatra, Shih-Sen Chang, Qingzhi Yang
2012 J jnl
Optim. Lett.
Chandal Nahak, Ram N. Mohapatra
2012 J jnl
J. Appl. Math.
Zhenyu Huang, Ram N. Mohapatra, Muhammad Aslam Noor, Hong-Kun Xu, Qingzhi Yang
2009 J jnl
Appl. Math. Comput.
Fahir Talay Akyildiz, K. Vajravelu, Ram N. Mohapatra, Erik Sweet, Robert A. Van Gorder
2009 J jnl
Appl. Math. Comput.
Hina Khan, Ram N. Mohapatra, K. Vajravelu, Shijun Liao
2007 book
Narendra Kumar Govil, Hrushikesh Narhar Mhaskar, Ram N. Mohapatra, Zuhair Nashed, József Szabados
2001 J jnl
J. Approx. Theory
Holly Carley, Xin Li, Ram N. Mohapatra
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"