Kasem Khalil

97 papers B 1C 7Misc 2Journal 29Unranked 58
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Prosen Kirtonia, Shelby Williams, Sonia Akter, Magdy A. Bayoumi, Kasem Khalil
2026 J jnl
IEEE Internet Things J.
Mahmoud Abbass, Ahmed B. T. Sherif, Justin Riley, Kasem Khalil
2026 J jnl
Appl. Soft Comput.
Jerina Eda, Tamador Mohaidat, Samiul Islam Niloy, Zhiqi Niu, Md Rahat Kader Khan, Kasem Khalil
2026 J jnl
IEEE Access
T. Maheswara Reddy Yenumula, Kasem Khalil, Ashok Kumar
2025 C conf
ISCAS
Sonia Akter, Kasem Khalil, Magdy A. Bayoumi
2025 J jnl
IEEE Open J. Circuits Syst.
Sonia Akter, Shelby Williams, Prosen Kirtonia, Magdy A. Bayoumi, Kasem Khalil
2025 J jnl
Image Vis. Comput.
Mohammad Mahbubur Rahman Khan Mamun, Ahmed B. T. Sherif, Mohamed Elsersy, Kasem Khalil, Ahmad Abdel-Aliem Imam, Kamal Abouzaid, Maazen Alsabaan
2025 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Kasem Khalil, Ashok Kumar, Magdy A. Bayoumi
2025 J jnl
IEEE Open J. Comput. Soc.
Kasem Khalil, Ashok Kumar, Magdy A. Bayoumi
2025 conf
ISQED
Prosen Kirtonia, Shelby Williams, Prasanna Kawatkar, Kasem Khalil, Magdy A. Bayoumi
2025 J jnl
IEEE Internet Things J.
Kasem Khalil, Ashok Kumar, Magdy A. Bayoumi
2025 J jnl
CoRR
Mahdi Hasanzadeh, Kasem Khalil, Cynthia Sturton, Ahmad Patooghy
2025 conf
SOCC
Sonia Akter, Shelby Williams, Prosen Kirtonia, Kasem Khalil, Magdy A. Bayoumi
2025 conf
SOCC
Prosen Kirtonia, Kasem Khalil, Magdy A. Bayoumi
2025 conf
SysCon
Rafeeq Muhammad, T. Maheswara Reddy Yenumula, Tanner Mergist, Tytiana James, Ali Harimi, Kasem Khalil, Ashok Kumar
2025 Misc conf
ICASSP
Shelby Williams, Prosen Kirtonia, Kasem Khalil, Magdy A. Bayoumi
2025 conf
SOCC
Md Rahat Kader Khan, Samiul Islam Niloy, Ahmad Patooghy, Kasem Khalil
2025 J jnl
Internet Things
Ujunwa Madububambachu, Rabeea Fatima, Ahmed B. T. Sherif, Kasem Khalil
2025 conf
SysCon
Tytiana James, T. Maheswara Reddy Yenumula, Tanner Mergist, Rafeeq Muhammad, Ali Harimi, Kasem Khalil, Ashok Kumar
2025 J jnl
IEEE Internet Things J.
Kasem Khalil, Bappaditya Dey, Magdy A. Bayoumi
2025 J jnl
Comput. Electr. Eng.
Hany Shaker, Kasem Khalil, Mohamed Abbas, Khalil Yousef
2025 conf
COINS
Prosen Kirtonia, Kasem Khalil, Magdy A. Bayoumi
2024 conf
MWSCAS
Sonia Akter, Shelby Williams, Kasem Khalil, Magdy A. Bayoumi
2024 J jnl
IEEE Trans. Artif. Intell.
Tamador Mohaidat, Kasem Khalil
2024 conf
AIBThings
Mahmoud Darwich, Kasem Khalil, Magdy A. Bayoumi
2024 J jnl
Clust. Comput.
Mahmoud Darwich, Taghreed Alghamdi, Kasem Khalil, Yasser Ismail, Magdy A. Bayoumi
2024 conf
AIBThings
Tamador Mohaidat, Md Rahat Kader Khan, Kasem Khalil
2024 C conf
IPCCC
Shelby Williams, Prosen Kirtonia, Kasem Khalil, Magdy A. Bayoumi
2024 J jnl
IEEE J. Emerg. Sel. Topics Circuits Syst.
Kasem Khalil, Ashok Kumar, Magdy A. Bayoumi
2024 conf
AIBThings
Kasem Khalil, Samiul Islam Niloy, Tamador Mohaidat, Md Rahat Kader Khan, Magdy A. Bayoumi
2024 conf
COINS
Kasem Khalil, Tamador Mohaidat, Mahmoud Darwich, Ashok Kumar, Magdy A. Bayoumi
2024 conf
MWSCAS
Kasem Khalil, Md Rahat Khan, Magdy A. Bayoumi, Ahmed B. T. Sherif
2024 conf
AICAS
Kasem Khalil, Tamador Mohaidat, Mahmoud Darwich, Ashok Kumar, Magdy A. Bayoumi
2024 conf
AIBThings
Mahmoud Darwich, Kasem Khalil, Magdy A. Bayoumi
2024 conf
MWSCAS
Sara Alahmadi, Kasem Khalil, Magdy A. Bayoumi
2024 C conf
ISCAS
Sara Alahmadi, Kasem Khalil, Haytham Idriss, Magdy A. Bayoumi
2024 conf
MCSoC
Kasem Khalil, Tamador Mohaidat, Ahmed B. T. Sherif, Magdy A. Bayoumi
2024 conf
ICAIIC
Mahmoud Darwich, Kasem Khalil, Magdy A. Bayoumi
2024 conf
MWSCAS
Shelby Williams, Kasem Khalil, Magdy A. Bayoumi
2024 conf
AIBThings
Md Rahat Kader Khan, Tamador Mohaidat, Kasem Khalil
2024 conf
SmartNets
Mahmoud Darwich, Kasem Khalil, Magdy A. Bayoumi
2024 conf
MCSoC
Richard Preston Swiley, Razan Alsulieman, Ahmed B. T. Sherif, Mohamed Elsersy, Kasem Khalil
2023 conf
AIBThings
Kasem Khalil, Mohammad M. R. Khan Mamun, Ahmed B. T. Sherif, Mohamed Elsersy, Ahmad Abdel-Aliem Imam, Kamal Abouzaid
2023 J jnl
Sensors
Kasem Khalil, Mohammad Mahbubur Rahman Khan Mamun, Ahmed B. T. Sherif, Mohamed Said Elsersy, Ahmad Abdel-Aliem Imam, Mohamed Mahmoud, Maazen Alsabaan
2023 J jnl
IEEE Access
Sonia Akter, Kasem Khalil, Magdy A. Bayoumi
2023 conf
AIBThings
Mahmoud Darwich, Kasem Khalil, Yasser Ismail, Magdy A. Bayoumi
2023 conf
FTC (1)
Mahmoud Darwich, Kasem Khalil, Yasser Ismail, Magdy A. Bayoumi
2023 conf
MCSoC
Mahmoud Darwich, Kasem Khalil, Yasser Ismail, Magdy A. Bayoumi
2023 conf
AIBThings
Mahmoud Darwich, Kasem Khalil, Yasser Ismail, Magdy A. Bayoumi
2023 conf
COINS
Mahmoud Darwich, Kasem Khalil, Yasser Ismail, Magdy A. Bayoumi
2023 conf
AIBThings
Mohamed Elsersy, Ahmed B. T. Sherif, Ahmad Abdel-Aliem Imam, Mohammad M. R. Khan Mamun, Kasem Khalil, Mohamed Haitham
2023 conf
SOCC
Sonia Akter, Kasem Khalil, Magdy A. Bayoumi
2023 C conf
ISCAS
Kasem Khalil, Tamador Mohaidat, Magdy A. Bayoumi
2023 conf
AICAS
Kasem Khalil, Ashok Kumar, Magdy A. Bayoumi
2023 conf
MWSCAS
Mahmoud Darwich, Kasem Khalil, Yasser Ismail, Magdy A. Bayoumi
2023 conf
MWSCAS
Kasem Khalil, Ahmed B. T. Sherif, Mohammad M. R. Khan Mamun, Mohamed Elsersy, Ahmad Abdel-Aliem Imam, Muhammad Hataba, Mohamed Mahmoud
2022 conf
MWSCAS
Kasem Khalil, Bappaditya Dey, Ashok Kumar, Magdy A. Bayoumi
2022 J jnl
CoRR
Bappaditya Dey, Enrique Dehaerne, Kasem Khalil, Sandip Halder, Philippe Leray, Magdy A. Bayoumi
2022 J jnl
CoRR
Bappaditya Dey, Dipam Goswami, Sandip Halder, Kasem Khalil, Philippe Leray, Magdy A. Bayoumi
2022 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Kasem Khalil, Omar Eldash, Ashok Kumar, Magdy A. Bayoumi
2022 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Kasem Khalil, Ashok Kumar, Magdy A. Bayoumi
2021 C conf
ISCAS
Kasem Khalil, Bappaditya Dey, Ashok Kumar, Magdy A. Bayoumi
2021 conf
MWSCAS
Kasem Khalil, Bappaditya Dey, Ashok Kumar, Magdy A. Bayoumi
2021 conf
ICECS
Bappaditya Dey, Kasem Khalil, Ashok Kumar, Magdy A. Bayoumi
2021 conf
MWSCAS
Kasem Khalil, Omar Eldash, Bappaditya Dey, Ashok Kumar, Magdy A. Bayoumi
2021 conf
ICECS
Kasem Khalil, Bappaditya Dey, Mostafa Abdelrehim, Ashok Kumar, Magdy A. Bayoumi
2021 conf
WF-IoT
David Cain, Omar Eldash, Kasem Khalil, Magdy A. Bayoumi
2021 conf
WF-IoT
Kasem Khalil, Ahmed Abdelgawad, Magdy A. Bayoumi
2021 J jnl
IEEE Open J. Circuits Syst.
Kasem Khalil, Omar Eldash, Ashok Kumar, Magdy A. Bayoumi
2020 C conf
ISCAS
Kasem Khalil, Bappaditya Dey, Yasser Sherazi, Ashok Kumar, Magdy A. Bayoumi
2020 conf
MWSCAS
Bappaditya Dey, Kasem Khalil, Ashok Kumar, Magdy A. Bayoumi
2020 conf
WF-IoT
Kasem Khalil, Khalid Elgazzar, Ahmed Abdelgawad, Magdy A. Bayoumi
2020 conf
MWSCAS
Kasem Khalil, Omar Eldash, Bappaditya Dey, Ashok Kumar, Magdy A. Bayoumi
2020 conf
WF-IoT
Omar Eldash, Adam Frost, Kasem Khalil, Ashok Kumar, Magdy A. Bayoumi
2020 J jnl
IEEE Trans. Biomed. Circuits Syst.
Kasem Khalil, Omar Eldash, Ashok Kumar, Magdy A. Bayoumi
2020 J jnl
IEEE Trans. Circuits Syst.
Kasem Khalil, Omar Eldash, Ashok Kumar, Magdy A. Bayoumi
2020 J jnl
Internet Things
Kasem Khalil, Khalid Elgazzar, Mohamed Seliem, Magdy A. Bayoumi
2019 conf
MWSCAS
Bappaditya Dey, Kasem Khalil, Ashok Kumar, Magdy A. Bayoumi
2019 conf
MWSCAS
Kasem Khalil, Omar Eldash, Bappaditya Dey, Ashok Kumar, Magdy A. Bayoumi
2019 conf
SoCC
Kasem Khalil, Omar Eldash, Ashok Kumar, Magdy A. Bayoumi
2019 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Kasem Khalil, Omar Eldash, Ashok Kumar, Magdy A. Bayoumi
2019 conf
SoCC
Kasem Khalil, Omar Eldash, Ashok Kumar, Magdy A. Bayoumi
2019 conf
MWSCAS
Kasem Khalil, Omar Eldash, Ashok Kumar, Magdy A. Bayoumi
2019 J jnl
Microelectron. J.
Kasem Khalil, Omar Eldash, Ashok Kumar, Magdy A. Bayoumi
2018 B conf
GLOBECOM
Kasem Khalil, Khalid Elgazzar, Magdy A. Bayoumi
2018 C conf
ISCAS
Kasem Khalil, Omar Eldash, Magdy A. Bayoumi
2018 Misc conf
ICASSP
Alaa Ali, Oladiran G. Olaleye, Bappaditya Dey, Kasem Khalil, Magdy A. Bayoumi
2018 conf
ICECS
Kasem Khalil, Omar Eldash, Ashok Kumar, Magdy A. Bayoumi
2018 conf
SoCC
Kasem Khalil, Omar Eldash, Ashok Kumar, Magdy A. Bayoumi
2018 conf
ICC Workshops
Oladiran G. Olaleye, Alaa Ali, Kasem Khalil, Bappaditya Dey, Dmitri D. Perkins, Magdy A. Bayoumi
2018 J jnl
Wirel. Commun. Mob. Comput.
Mohamed Seliem, Khalid Elgazzar, Kasem Khalil
2017 conf
MWSCAS
Kasem Khalil, Omar K. Eldash, Magdy A. Bayoumi
2017 conf
CCECE
Omar Eldash, Kasem Khalil, Magdy A. Bayoumi
2017 conf
ICECS
Omar Eldash, Kasem Khalil, Magdy A. Bayoumi
2017 conf
HLDVT
Siroos Madani, Kasem Khalil, Bappaditya Dey, Devante Bonton, Magdy A. Bayoumi
2017 conf
ICECS
Kasem Khalil, Omar Eldash, Magdy A. Bayoumi
2013 conf
IDT
Kasem Khalil, Mohamed Abbas, Mohamed Abdelgawad
redb/extractors/elf_extractors/elf_relocations.py
← Index redb/extractors/elf_extractors/elf_relocations.py python
import inspect
from datetime import datetime, timezone
from typing import Any, List, Dict

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 ELFRelocation


class ELFRelocationExtractor(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_relocations = []
        self.elastic_index = self.index_prefix + "-elf_relocations"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def _get_relocation_type_string(self, reloc_type: int, machine_arch: str) -> str:
        """Convert relocation type number to human-readable string based on architecture."""
        # This is a simplified mapping - real implementation would need comprehensive
        # architecture-specific relocation type mappings

        common_types = {
            0: "R_NONE",
            1: "R_DIRECT",
            2: "R_PC_RELATIVE",
            3: "R_GOT",
            4: "R_PLT",
            5: "R_COPY",
            6: "R_GLOB_DAT",
            7: "R_JMP_SLOT",
            8: "R_RELATIVE"
        }

        # Architecture-specific mappings could be added here
        if machine_arch == "x86_64":
            x86_64_types = {
                1: "R_X86_64_64",
                2: "R_X86_64_PC32",
                3: "R_X86_64_GOT32",
                4: "R_X86_64_PLT32",
                5: "R_X86_64_COPY",
                6: "R_X86_64_GLOB_DAT",
                7: "R_X86_64_JUMP_SLOT",
                8: "R_X86_64_RELATIVE"
            }
            return x86_64_types.get(reloc_type, f"R_X86_64_{reloc_type}")
        elif machine_arch == "x86":
            i386_types = {
                1: "R_386_32",
                2: "R_386_PC32",
                3: "R_386_GOT32",
                4: "R_386_PLT32",
                5: "R_386_COPY",
                6: "R_386_GLOB_DAT",
                7: "R_386_JMP_SLOT",
                8: "R_386_RELATIVE"
            }
            return i386_types.get(reloc_type, f"R_386_{reloc_type}")

        return common_types.get(reloc_type, f"R_UNKNOWN_{reloc_type}")

    def _extract_relocation_data(self, relocation, section_name: str, machine_arch: str) -> Dict:
        """Extract data from a single relocation entry."""
        try:
            # Get relocation offset
            relocation_offset = relocation.entry.get('r_offset', 0)

            # Get relocation type
            relocation_type = relocation.entry.get('r_info_type', 0)

            # Get symbol index
            relocation_symbol_index = relocation.entry.get('r_info_sym', 0)

            # Get addend (only present in RELA sections)
            relocation_addend = None
            if hasattr(relocation.entry, 'r_addend'):
                relocation_addend = relocation.entry.get('r_addend', 0)

            # Get symbol name if available
            relocation_symbol_name = ""
            if hasattr(relocation, 'symbol') and relocation.symbol:
                relocation_symbol_name = relocation.symbol.name or f"<symbol_{relocation_symbol_index}>"
            else:
                relocation_symbol_name = f"<symbol_{relocation_symbol_index}>"

            # Get type string mapping
            relocation_type_str = self._get_relocation_type_string(relocation_type, machine_arch)

            return ELFRelocation(
                relocation_offset=relocation_offset,
                relocation_type=relocation_type,
                relocation_type_str=relocation_type_str,
                relocation_symbol_index=relocation_symbol_index,
                relocation_symbol_name=relocation_symbol_name,
                relocation_section=section_name,
                relocation_addend=relocation_addend
            )

        except Exception as e:
            self.log.error(f"Error extracting relocation data: {e}")
            return None

    def _extract_relocations_from_section(self, section, machine_arch: str) -> List[Dict]:
        """Extract all relocations from a relocation section."""
        relocations = []

        try:
            if not hasattr(section, 'iter_relocations'):
                return relocations

            section_name = section.name or f"<unnamed_section>"

            for relocation in section.iter_relocations():
                reloc_data = self._extract_relocation_data(relocation, section_name, machine_arch)
                if reloc_data:
                    relocations.append(reloc_data)

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

        return relocations

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

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

            def extract_data(elf):
                # Get architecture for relocation type mapping
                machine_arch = self._get_architecture()
                all_relocations = []

                # Iterate through all sections looking for relocation sections with per-section error handling
                for section_index, section in enumerate(elf.iter_sections()):
                    try:
                        # Check if this is a relocation section (.rel or .rela)
                        if (section.name and
                            (section.name.startswith('.rel') or section.name.startswith('.rela')) and
                            hasattr(section, 'iter_relocations')):

                            section_relocations = self._extract_relocations_from_section(section, machine_arch)
                            all_relocations.extend(section_relocations)
                            self.log.debug(f"Extracted {len(section_relocations)} relocations from section {section.name}")
                    except Exception as e:
                        section_name = getattr(section, 'name', f'section_{section_index}')
                        self.log.warning(f"Error processing relocation section {section_name}: {e}")
                        # Continue processing other sections

                return all_relocations

            if not self._is_elf_file():
                return None

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

            self.elf_relocations = result
            return self.elf_relocations

        except Exception as e:
            self.log.error(f"Error extracting ELF relocations {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_relocations
        elif exporter_type == "ClickHouseExporter":
            try:
                # Return valid empty structure if no relocations (e.g., statically linked binary)
                # None is reserved for actual errors

                # Prepare data arrays for all relocations
                data = []
                current_time = datetime.now(timezone.utc)
                for reloc in self.elf_relocations:
                    row = [
                        self.sha256,
                        self.md5,
                        self.sha1,
                        reloc.relocation_offset,
                        reloc.relocation_type,
                        reloc.relocation_type_str,
                        reloc.relocation_symbol_index,
                        reloc.relocation_symbol_name,
                        reloc.relocation_addend,
                        reloc.relocation_section,
                        current_time
                    ]
                    data.append(row)

                column_names = [
                    'sha256', 'md5', 'sha1',
                    'relocation_offset', 'relocation_type', 'relocation_type_str',
                    'relocation_symbol_index', 'relocation_symbol_name',
                    'relocation_addend', 'relocation_section',
                    'analysis_date'
                ]

                if not data:
                    return None

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

                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_relocations"