Iman Mohamad Sharaf

23 papers Journal 23
YearRankTypeTitle / Venue / Authors
2026 J jnl
Cogn. Comput.
Osamah Shihab Albahri, Yahya Layth Khaleel, Mustafa Abdulfattah Habeeb, Jameel R. Al-Obaidi, Ahmed Shihab Albahri, Abdullah Hussein Alamoodi, Moamin A. Mahmoud, Iman Mohamad Sharaf
2026 J jnl
Int. J. Data Sci. Anal.
Ahmed Shihab Albahri, Rula A. Hamid, Z. T. Al-qaysi, Mohammed A. Chyad, Mohammad Aljanabi, Ahmed Hussein Ali, Osamah Shihab Albahri, Abdullah Hussein Alamoodi, Ali M. Duhaim, Salem Garfan, Iman Mohamad Sharaf
2025 J jnl
Int. J. Inf. Technol. Decis. Mak.
Ahmed Shihab Albahri, Mustafa Mohammed Jassim, Laith Alzubaidi, Rula A. Hamid, Mohamed Aktham Ahmed, Z. T. Al-qaysi, Osamah Shihab Albahri, Abdullah Hussein Alamoodi, Mustafa Esam Alqaysi, Thura J. Mohammed, Gang Kou, Fahd S. Alotaibi, Iman Mohamad Sharaf
2025 J jnl
Int. J. Intell. Syst.
Osamah Shihab Albahri, M. A. Alsalem, Ahmed Shihab Albahri, Moamin A. Mahmoud, Laith Alzubaidi, Abdullah Hussein Alamoodi, Iman Mohamad Sharaf
2025 J jnl
Neural Comput. Appl.
Mustafa Abdulfattah Habeeb, Yahya Layth Khaleel, Ahmed Shihab Albahri, Osamah Shihab Albahri, Abdullah Hussein Alamoodi, Iman Mohamad Sharaf
2025 J jnl
Expert Syst. Appl.
Ahmed Shihab Albahri, Yahya Layth Khaleel, Mustafa Abdulfattah Habeeb, Raad Z. Homod, Osamah Shihab Albahri, Abdullah Hussein Alamoodi, Muhammet Deveci, Iman Mohamad Sharaf
2025 J jnl
Int. J. Inf. Technol. Decis. Mak.
Ahmed Shihab Albahri, Mohammed S. Al-Samarraay, Osamah Shihab Albahri, Abdullah Hussein Alamoodi, Rula A. Hamid, Raad Z. Homod, Saleh Mahdi Mohammed, Iman Mohamad Sharaf
2025 J jnl
Expert Syst. J. Knowl. Eng.
Rula A. Hamid, Idrees A. Zahid, Ahmed Shihab Albahri, Osamah Shihab Albahri, Abdullah Hussein Alamoodi, Laith Alzubaidi, Iman Mohamad Sharaf, Shahad Sabbar Joudar, Yuantong Gu, Z. T. Al-qaysi
2025 J jnl
Comput. Biol. Medicine
Ahmed Shihab Albahri, Rula A. Hamid, Mustafa Esam Alqaysi, Z. T. Al-qaysi, Osamah Shihab Albahri, Abdullah Hussein Alamoodi, Raad Z. Homod, Muhammet Deveci, Iman Mohamad Sharaf
2024 J jnl
J. Medical Syst.
Abdullah Hussein Alamoodi, Omar Zughoul, Dianes David, Salem Garfan, Dragan Pamucar, Osamah Shihab Albahri, Ahmed Shihab Albahri, Salman Yussof, Iman Mohamad Sharaf
2024 J jnl
Appl. Intell.
Iman Mohamad Sharaf, Osamah Shihab Albahri, M. A. Alsalem, Abdullah Hussein Alamoodi, Ahmed Shihab Albahri
2024 J jnl
Expert Syst. Appl.
Iman Mohamad Sharaf, Abdullah Hussein Alamoodi, Osamah Shihab Albahri, Muhammet Deveci, Mohammed Talal, Ahmed Shihab Albahri, Dursun Delen, Witold Pedrycz
2024 J jnl
Comput. Electron. Agric.
Abdullah Hussein Alamoodi, Salem Garfan, Muhammet Deveci, Osamah Shihab Albahri, Ahmed Shihab Albahri, Salman Yussof, Raad Z. Homod, Iman Mohamad Sharaf, Sarbast Moslem
2024 J jnl
Expert Syst. Appl.
M. A. Alsalem, Abdullah Hussein Alamoodi, Osamah Shihab Albahri, Ahmed Shihab Albahri, Luis Martínez-López, Raciel Yera, Ali Mohammed, Iman Mohamad Sharaf
2024 J jnl
Int. J. Fuzzy Syst.
Ahmed Shihab Albahri, Shahad Sabbar Joudar, Rula A. Hamid, Idrees A. Zahid, Mustafa Esam Alqaysi, Osamah Shihab Albahri, Abdullah Hussein Alamoodi, Gang Kou, Iman Mohamad Sharaf
2024 J jnl
Int. J. Comput. Intell. Syst.
Ghadeer Ghazi Shayea, Mohd Hazli Mohammed Zabil, Ahmed Shihab Albahri, Shahad Sabbar Joudar, Rula A. Hamid, Osamah Shihab Albahri, Abdullah Hussein Alamoodi, Idrees A. Zahid, Iman Mohamad Sharaf
2024 J jnl
Expert Syst. Appl.
Abdullah Hussein Alamoodi, Osamah Shihab Albahri, Muhammet Deveci, Ahmed Shihab Albahri, Salman Yussof, Hasan Dinçer, Serhat Yüksel, Iman Mohamad Sharaf
2024 J jnl
Eng. Appl. Artif. Intell.
Osamah Shihab Albahri, Abdullah Hussein Alamoodi, Dragan Pamucar, Vladimir Simic, Juliana Chen, Moamin A. Mahmoud, Ahmed Shihab Albahri, Iman Mohamad Sharaf
2023 J jnl
Soft Comput.
Iman Mohamad Sharaf
2023 J jnl
Adv. Eng. Informatics
Osamah Shihab Albahri, Abdullah Hussein Alamoodi, Muhammet Deveci, Ahmed Shihab Albahri, Moamin A. Mahmoud, Tahsien Al-Quraishi, Sarbast Moslem, Iman Mohamad Sharaf
2023 J jnl
Complex Intell. Syst.
Iman Mohamad Sharaf
2022 J jnl
Comput. Appl. Math.
Harish Garg, Iman Mohamad Sharaf
2022 J jnl
Auton. Intell. Syst.
Iman Mohamad Sharaf
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"