Nauman Ahmed

52 papers A 2C 3Journal 42Unranked 5
YearRankTypeTitle / Venue / Authors
2026 J jnl
Adv. Eng. Informatics
Muhammad Umar, Imran Shafi, Nauman Ahmed, Hafiz Muhammad Raza Ur Rehman, Imran Ashraf
2025 J jnl
Biomed. Signal Process. Control.
Reem K. Alhefthi, Muhammad Aziz ur Rehman, Nauman Ahmed, Zafar Iqbal, Mustafa Inç, Muhammad Iqbal, Muhammad Sajid Iqbal, Ali Raza, Muhammad Rafiq
2025 J jnl
J. Appl. Math. Comput.
Nauman Ahmed, Muhammad Waqas Yasin, Ali Akgül, Dumitru Baleanu, Ovidiu Tintareanu-Mircea
2025 J jnl
Evol. Intell.
Humaira Muslim, Nauman Ahmed, Siegfried Macías, Muhammad Ozair Ahmed, Muhammad Zafarullah Baber, Baboucarr Ceesay, Jorge Eduardo Macías-Díaz
2025 J jnl
Complex.
Ali Raza, Mohammed M. Ali Al-Shamiri, Wafa F. Alfwzan, Muhammad Rafiq, Emad Fadhal, Nauman Ahmed
2024 J jnl
Int. J. Comput. Math.
Nauman Ahmed, Jorge Eduardo Macías-Díaz, Muhammad Waqas Yasin, Muhammad Sajid Iqbal
2024 J jnl
Biomed. Signal Process. Control.
Ali Raza, Muhammad Rafiq, Nauman Ahmed, Muhammad Sajid Iqbal, Shahram Rezapour, Mustafa Inç
2024 J jnl
Wirel. Pers. Commun.
Khurram Hameed, Nauman Ahmed, Wasim Khan, Muneeb Ahmed, Salma Zainab Farooq, Muhammad Rashid Ramzan, Muhammad Ramzan
2023 J jnl
Axioms
Tahira Sumbal Shaikh, Ali Akgül, Muhammad Aziz ur Rehman, Nauman Ahmed, Muhammad Sajid Iqbal, Naveed Shahid, Muhammad Rafiq, Manuel de la Sen
2023 J jnl
Intell. Autom. Soft Comput.
Wafa F. Alfwzan, Dumitru Baleanu, Fazal Dayan, Sami Ullah, Nauman Ahmed, Muhammad Rafiq, Ali Raza
2023 J jnl
Int. J. Wavelets Multiresolution Inf. Process.
Muhammad Sajid Iqbal, Mustafa Inç, Sidra Ghazanfar, Nauman Ahmed
2023 J jnl
Symmetry
Baboucarr Ceesay, Muhammad Zafarullah Baber, Nauman Ahmed, Ali Akgül, Alicia Cordero, Juan R. Torregrosa
2023 J jnl
Comput. Syst. Sci. Eng.
Nesreen Althobaiti, Ali Raza, Arooj Nasir, Jan Awrejcewicz, Muhammad Rafiq, Nauman Ahmed, Witold Pawlowski, Muhammad Jawaz, Emad E. Mahmoud
2023 J jnl
Wirel. Pers. Commun.
Nauman Ahmed, Huigang Wang, Muhammad Asif Zahoor Raja, Wasiq Ali, Muhammad Kashif, Fawad Zaman
2023 J jnl
Intell. Autom. Soft Comput.
Muhammad Tariq Ali, Dumitru Baleanu, Muhammad Rafiq, Jan Awrejcewicz, Nauman Ahmed, Ali Raza, Muhammad Sajid Iqbal, Muhammad Ozair Ahmad
2023 J jnl
J. Comput. Appl. Math.
Muhammad Sajid Iqbal, Muhammad Waqas Yasin, Nauman Ahmed, Ali Akgül, Muhammad Rafiq, Ali Raza
2023 J jnl
CoRR
Seongyeon Park, Hajin Kim, Tanveer Ahmad, Nauman Ahmed, Zaid Al-Ars, H. Peter Hofstee, Youngsok Kim, Jinho Lee
2022 J jnl
Complex.
M. M. Alqarni, Arooj Nasir, Maryam Ahmed Alyami, Ali Raza, Jan Awrejcewicz, Muhammad Rafiq, Nauman Ahmed, Tahira Sumbal Shaikh, Emad E. Mahmoud
2022 J jnl
Comput. Biol. Medicine
Fazal Dayan, Muhammad Rafiq, Nauman Ahmed, Ali Raza, Muhammad Ozair Ahmad
2022 J jnl
Expert Syst. Appl.
Fazal Dayan, Nauman Ahmed, Muhammad Rafiq, Muhammad Sajid Iqbal, Ilyas Khan, Ali Raza, Muhammad Ozair Ahmad
2022 J jnl
Comput. Methods Programs Biomed.
Nauman Ahmed, Jorge Eduardo Macías-Díaz, Naveed Shahid, Ali Raza, Muhammad Rafiq
2022 J jnl
Complex.
Salma Kanwal, Muhammad Kamran Siddiqui, Ebenezer Bonyah, Khadija Sarwar, Tahira Sumbal Shaikh, Nauman Ahmed
2022 J jnl
Symmetry
Zafar Iqbal, Jorge Eduardo Macías-Díaz, Nauman Ahmed, Aqsa Javaid, Muhammad Rafiq, Ali Raza
2022 J jnl
Intell. Autom. Soft Comput.
Shami A. M. Alsallami, Ali Raza, Mona Elmahi, Muhammad Rafiq, Shamas Bilal, Nauman Ahmed, Emad E. Mahmoud
2022 J jnl
Axioms
Nauman Ahmed, Jorge Eduardo Macías-Díaz, Ali Raza, Dumitru Baleanu, Muhammad Rafiq, Zafar Iqbal, Muhammad Ovais Ahmad
2022 A conf
IPDPS
Seongyeon Park, Hajin Kim, Tanveer Ahmad, Nauman Ahmed, Zaid Al-Ars, H. Peter Hofstee, Youngsok Kim, Jinho Lee
2021 J jnl
Wirel. Pers. Commun.
Wasiq Ali, Ya'an Li, Nauman Ahmed, Wasif Ali, Muhammad Kashif
2021 J jnl
Comput. Methods Programs Biomed.
Zafar Iqbal, Jorge Eduardo Macías-Díaz, Nauman Ahmed, M. Aziz-ur Rehman, Ali Raza, Muhammad Rafiq
2021 J jnl
Comput. Methods Programs Biomed.
Jorge Eduardo Macías-Díaz, Ali Raza, Nauman Ahmed, Muhammad Rafiq
2021 J jnl
Int. J. Comput. Math.
Nauman Ahmed, Alper Korkamaz, M. A. Rehman, Muhammad Rafiq, Mubasher Ali, Muhammad Ozair Ahmad
2021 J jnl
IEEE Access
Nauman Ahmed, Huigang Wang, Muhammad Asif Zahoor Raja, Wasiq Ali, Fawad Zaman, Wasim Ullah Khan, Yigang He
2021 J jnl
Entropy
Haq Nawaz, Ahsen Tahir, Nauman Ahmed, Ubaid U. Fayyaz, Tayyeb Mahmood, Abdul Jaleel, Mandar Gogate, Kia Dashtipour, Usman Masud, Qammer H. Abbasi
2020 J jnl
Comput. Methods Programs Biomed.
Nauman Ahmed, Mubasher Ali, Muhammad Rafiq, Ilyas Khan, Kottakkaran Sooppy Nisar, M. A. Rehman, Muhammad Ozair Ahmad
2020 conf
ICBBB
Nauman Ahmed, Koen Bertels, Zaid Al-Ars
2020 J jnl
BMC Bioinform.
Nauman Ahmed, Tong Dong Qiu, Koen Bertels, Zaid Al-Ars
2020 J jnl
CoRR
Shubhankar Mohapatra, Nauman Ahmed, Paulo S. C. Alencar
2020 J jnl
Comput. Methods Programs Biomed.
Shumaila Azam, Jorge Eduardo Macías-Díaz, Nauman Ahmed, Ilyas Khan, Muhammad Sajid Iqbal, Muhammad Rafiq, Kottakkaran Sooppy Nisar, Muhammad Ozair Ahmad
2020 J jnl
BMC Genom.
Tanveer Ahmad, Nauman Ahmed, Zaid Al-Ars, H. Peter Hofstee
2020 J jnl
Wirel. Pers. Commun.
Wasiq Ali, Ya'an Li, Kashif Javaid, Nauman Ahmed
2020 J jnl
Comput. Appl. Math.
Zafar Iqbal, Nauman Ahmed, Dumitru Baleanu, Muhammad Rafiq, Muhammad Sajid Iqbal, Muhammad Aziz-ur Rehman
2019 J jnl
Entropy
Wasiq Ali, Ya'an Li, Zhe Chen, Muhammad Asif Zahoor Raja, Nauman Ahmed, Xiao Chen
2019 J jnl
BMC Bioinform.
Nauman Ahmed, Jonathan Levy, Shanshan Ren, Hamid Mushtaq, Koen Bertels, Zaid Al-Ars
2019 J jnl
BMC Bioinform.
Nauman Ahmed, Jonathan Levy, Shanshan Ren, Hamid Mushtaq, Koen Bertels, Zaid Al-Ars
2019 J jnl
BMC Genom.
Shanshan Ren, Nauman Ahmed, Koen Bertels, Zaid Al-Ars
2019 conf
IEEE BigData
Shubhankar Mohapatra, Nauman Ahmed, Paulo S. C. Alencar
2019 conf
SIGCOMM Posters and Demos
Farzan Dehbashi, Nauman Ahmed, Manav Mehra, Ju Wang, Omid Abari
2018 C conf
BIBE
Shanshan Ren, Nauman Ahmed, Koen Bertels, Zaid Al-Ars
2017 conf
BIBM
Nauman Ahmed, Hamid Mushtaq, Koen Bertels, Zaid Al-Ars
2017 C conf
BIBE
Nauman Ahmed, Koen Bertels, Zaid Al-Ars
2017 C conf
BIBE
Hamid Mushtaq, Nauman Ahmed, Zaid Al-Ars
2016 conf
BIBM
Nauman Ahmed, Koen Bertels, Zaid Al-Ars
2015 A conf
ICCAD
Nauman Ahmed, Vlad Mihai Sima, Ernst Houtgast, Koen Bertels, Zaid Al-Ars
redb/extractors/elf_extractors/elf_imports.py
← Index redb/extractors/elf_extractors/elf_imports.py python
import inspect
from datetime import datetime, timezone
from typing import Any, List, Set

from elftools.elf.elffile import ELFFile
from elftools.common.exceptions import ELFError

from redb.extractors.enum import Tag
from redb.extractors.elf_extractor import ELFExtractor
from redb.models.dataclasses import ELFImport


class ELFImportExtractor(ELFExtractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        elf=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            elf,
        )
        self.elf_imports = None
        self.elastic_index = self.index_prefix + "-elf_imports"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def _get_import_libraries(self, elf) -> List[str]:
        """Extract imported libraries from dynamic section."""
        libraries = []

        try:
            # Get the dynamic section
            dynamic_section = elf.get_section_by_name('.dynamic')
            if not dynamic_section:
                return libraries

            # Extract DT_NEEDED entries (required libraries)
            for tag in dynamic_section.iter_tags():
                if tag.entry.d_tag == 'DT_NEEDED':
                    libraries.append(tag.needed)

        except Exception as e:
            self.log.error(f"Error extracting import libraries: {e}")

        return libraries

    def _get_imported_functions_from_symbols(self, elf) -> Set[str]:
        """Extract imported functions from dynamic symbol table."""
        imported_functions = set()

        try:
            # Get the dynamic symbol table
            dynsym_section = elf.get_section_by_name('.dynsym')
            if not dynsym_section or not hasattr(dynsym_section, 'iter_symbols'):
                return imported_functions

            # Look for undefined symbols (imports)
            for symbol in dynsym_section.iter_symbols():
                # Check if symbol is undefined (imported)
                if (symbol.entry.get('st_shndx', 0) == 'SHN_UNDEF' and
                    symbol.name and
                    symbol.entry.get('st_info', {}).get('bind') in ['STB_GLOBAL', 'STB_WEAK']):
                    imported_functions.add(symbol.name)

        except Exception as e:
            self.log.error(f"Error extracting imported functions from symbols: {e}")

        return imported_functions

    def _get_imported_functions_from_relocations(self, elf) -> Set[str]:
        """Extract imported functions from relocation sections."""
        imported_functions = set()

        try:
            # Look through relocation sections
            for section in elf.iter_sections():
                if hasattr(section, 'iter_relocations'):
                    try:
                        for relocation in section.iter_relocations():
                            # Get symbol associated with relocation
                            if hasattr(relocation, 'symbol') and relocation.symbol:
                                symbol_name = relocation.symbol.name
                                if symbol_name:
                                    imported_functions.add(symbol_name)
                    except Exception as e:
                        self.log.debug(f"Could not process relocations in section {section.name}: {e}")

        except Exception as e:
            self.log.error(f"Error extracting imported functions from relocations: {e}")

        return imported_functions

    def _get_plt_functions(self, elf) -> Set[str]:
        """Extract functions from PLT (Procedure Linkage Table) sections."""
        plt_functions = set()

        try:
            # Look for PLT-related sections
            plt_sections = ['.plt', '.plt.got', '.plt.sec']

            for section_name in plt_sections:
                section = elf.get_section_by_name(section_name)
                if section:
                    # PLT functions are typically associated with relocations
                    # We'll get them from the relocation analysis
                    pass

        except Exception as e:
            self.log.error(f"Error extracting PLT functions: {e}")

        return plt_functions

    def tag(self):
        return Tag.ELF_IMPORTS.value if hasattr(Tag, 'ELF_IMPORTS') else "elf_imports"

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)

            def extract_data(elf):
                # Extract import libraries
                import_libraries = self._get_import_libraries(elf)

                # Extract imported functions from multiple sources
                imported_functions = set()

                # From dynamic symbols
                symbol_imports = self._get_imported_functions_from_symbols(elf)
                imported_functions.update(symbol_imports)

                # From relocations
                relocation_imports = self._get_imported_functions_from_relocations(elf)
                imported_functions.update(relocation_imports)

                # From PLT
                plt_imports = self._get_plt_functions(elf)
                imported_functions.update(plt_imports)

                # Convert to sorted lists for consistent output
                import_libraries_list = sorted(list(set(import_libraries)))
                import_functions_list = sorted(list(imported_functions))

                # Return ELFImport dataclass
                return ELFImport(
                    elf_imports_total=len(import_functions_list),
                    elf_import_libraries=import_libraries_list,
                    elf_import_functions=import_functions_list,
                )

            if not self._is_elf_file():
                return None

            result = self._with_elf_file(extract_data)
            if result is None:
                return None

            self.elf_imports = result
            return self.elf_imports

        except Exception as e:
            self.log.error(f"Error extracting ELF imports {self.hash.sha256}: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        self.log.debug(inspect.currentframe().f_code.co_name)

        if exporter_type == "ElasticsearchExporter":
            return self.elf_imports
        elif exporter_type == "ClickHouseExporter":
            try:
                if not self.elf_imports:
                    return None

                # Prepare data array
                data = [[
                    self.sha256,
                    self.md5,
                    self.sha1,
                    self.elf_imports.elf_imports_total,
                    self.elf_imports.elf_import_libraries,
                    self.elf_imports.elf_import_functions,
                    datetime.now(timezone.utc)
                ]]

                column_names = [
                    'sha256', 'md5', 'sha1',
                    'elf_imports_total',
                    'elf_import_libraries',
                    'elf_import_functions',
                    'analysis_date'
                ]

                column_type_names = [
                    'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                    'UInt32',
                    'Array(LowCardinality(String))',
                    'Array(LowCardinality(String))',
                    'DateTime64(3, \'UTC\')'
                ]

                if not data:
                    return None

                return (data, column_names, column_type_names)

            except Exception as e:
                self.log.error(f"Error preparing export data: {e}")
                raise

    def get_clickhouse_table(self) -> str:
        return "redb_elf_imports"