Kashif Bilal

83 papers B 2C 2Misc 5Journal 65Unranked 8
YearRankTypeTitle / Venue / Authors
2026 J jnl
Computing
Kalim Qureshi, Kashif Bilal
2025 J jnl
Comput. Networks
Ehzaz Mustafa, Junaid Shuja, Faisal Rehman, Abdallah Namoun, Muhammad Bilal, Kashif Bilal
2025 J jnl
Clust. Comput.
Sana Saeed, Kashif Bilal, Junaid Shuja, Abdallah Namoun, Isa Ali Ibrahim
2024 J jnl
IEEE Access
Laila Junaid, Kashif Bilal, Junaid Shuja, Abdullateef Oluwagbemiga Balogun, Joel J. P. C. Rodrigues
2024 J jnl
PeerJ Comput. Sci.
Sana Nasim Karam, Kashif Bilal, Abdul Nasir Khan, Junaid Shuja, Said Jadid Abdulkadir
2024 conf
FLLM
Sana Saeed, Kashif Bilal, Abdallah Namoun, Isa Ali Ibrahim, Junaid Shuja
2024 J jnl
IEEE Wirel. Commun.
Latif U. Khan, Ehzaz Mustafa, Junaid Shuja, Faisal Rehman, Kashif Bilal, Zhu Han, Choong Seon Hong
2024 J jnl
IT Prof.
Sana Nasim Karam, Kashif Bilal, Junaid Shuja, Latif U. Khan, Muhammad Bilal, Muhammad Khurram Khan
2023 C conf
ISNCC
Ali Haider, Sana Saeed, Kashif Bilal, Aiman Erbad
2023 Misc conf
FIT
Sana Saeed, Ali Haider, Kashif Bilal
2023 J jnl
Telecommun. Syst.
Laila Junaid, Kashif Bilal, Osman Khalid, Aiman Erbad
2023 J jnl
Clust. Comput.
Ehzaz Mustafa, Junaid Shuja, Kashif Bilal, Saad Mustafa, Tahir Maqsood, Faisal Rehman, Atta ur Rehman Khan
2023 J jnl
Comput. Electr. Eng.
Syed Muhammad Ammar Hassan Bukhari, Emna Baccour, Kashif Bilal, Junaid Shuja, Aiman Erbad, Muhammad Bilal
2023 J jnl
Clust. Comput.
Syed Muhammad Ammar Hassan Bukhari, Kashif Bilal, Aiman Erbad, Amr Mohamed, Mohsen Guizani
2022 J jnl
Sensors
Kashif Bilal, Junaid Shuja, Aiman Erbad, Waleed Alasmary, Eisa Alanazi, Abdullah Alourani
2022 J jnl
IEEE Syst. J.
Emna Baccour, Fatima Haouari, Aiman Erbad, Amr Mohamed, Kashif Bilal, Mohsen Guizani, Mounir Hamdi
2022 J jnl
CoRR
Latif U. Khan, Ehzaz Mustafa, Junaid Shuja, Faisal Rehman, Kashif Bilal, Zhu Han, Choong Seon Hong
2022 J jnl
J. Electronic Imaging
Sana Saeed, Kashif Bilal, Zia Ur Rehman, Shoaib Azmat, Junaid Shuja, Akhtar Jamil
2021 J jnl
CoRR
Emna Baccour, Fatima Haouari, Aiman Erbad, Amr Mohamed, Kashif Bilal, Mohsen Guizani, Mounir Hamdi
2021 J jnl
J. Netw. Comput. Appl.
Junaid Shuja, Kashif Bilal, Waleed Alasmary, Hassan H. Sinky, Eisa Alanazi
2021 J jnl
IEEE Access
Kamran Zahoor, Kashif Bilal, Aiman Erbad, Amr Mohamed, Mohsen Guizani
2020 J jnl
IEEE Trans. Cloud Comput.
Sahibzada Muhammad Ali, Muhammad Jawad, Muhammad Usman Shahid Khan, Kashif Bilal, Jacob Glower, Scott C. Smith, Samee U. Khan, Keqin Li, Albert Y. Zomaya
2020 J jnl
CoRR
Junaid Shuja, Kashif Bilal, Eisa Alanazi, Waleed Alasmary, Abdulaziz Alashaikh
2020 conf
ICIoT
Emna Baccour, Aiman Erbad, Kashif Bilal, Amr Mohamed, Mohsen Guizani, Mounir Hamdi
2020 J jnl
CoRR
Emna Baccour, Aiman Erbad, Kashif Bilal, Amr Mohamed, Mohsen Guizani, Mounir Hamdi
2020 J jnl
Future Gener. Comput. Syst.
Emna Baccour, Aiman Erbad, Kashif Bilal, Amr Mohamed, Mohsen Guizani
2020 J jnl
IEEE Netw.
Kamran Zahoor, Kashif Bilal, Aiman Erbad, Amr Mohamed
2019 J jnl
IEEE Trans. Parallel Distributed Syst.
Jianguo Chen, Kenli Li, Kashif Bilal, Xu Zhou, Keqin Li, Philip S. Yu
2019 J jnl
Comput. Syst. Sci. Eng.
Sardar Khaliq uz Zaman, Tahir Maqsood, Mazhar Ali, Kashif Bilal, Sajjad Ahmad Madani, Atta ur Rehman Khan
2019 J jnl
Inf. Sci.
Jianguo Chen, Kenli Li, Huigui Rong, Kashif Bilal, Keqin Li, Philip S. Yu
2019 J jnl
J. Netw. Comput. Appl.
Kashif Bilal, Emna Baccour, Aiman Erbad, Amr Mohamed, Mohsen Guizani
2019 J jnl
IEEE Access
Ubaid Ur Rahman, Kashif Bilal, Aiman Erbad, Osman Khalid, Samee U. Khan
2019 B conf
WCNC
Emna Baccour, Aiman Erbad, Amr Mohamed, Kashif Bilal, Mohsen Guizani
2018 J jnl
CoRR
Jianguo Chen, Kenli Li, Kashif Bilal, Xu Zhou, Keqin Li, Philip S. Yu
2018 J jnl
CoRR
Jianguo Chen, Kenli Li, Huigui Rong, Kashif Bilal, Nan Yang, Keqin Li
2018 J jnl
CoRR
Jianguo Chen, Kenli Li, Zhuo Tang, Kashif Bilal, Keqin Li
2018 J jnl
CoRR
Jianguo Chen, Kenli Li, Zhuo Tang, Kashif Bilal, Shui Yu, Chuliang Weng, Keqin Li
2018 J jnl
CoRR
Jianguo Chen, Kenli Li, Huigui Rong, Kashif Bilal, Keqin Li, Philip S. Yu
2018 J jnl
Inf. Sci.
Jianguo Chen, Kenli Li, Huigui Rong, Kashif Bilal, Nan Yang, Keqin Li
2018 J jnl
Future Gener. Comput. Syst.
Tahir Maqsood, Kashif Bilal, Sajjad Ahmad Madani
2018 J jnl
IEEE Trans. Cloud Comput.
Mazhar Ali, Kashif Bilal, Samee U. Khan, Bharadwaj Veeravalli, Keqin Li, Albert Y. Zomaya
2018 J jnl
CoRR
Jianguo Chen, Kenli Li, Kashif Bilal, Ahmed A. Metwally, Keqin Li, Philip S. Yu
2018 J jnl
Comput. Networks
Kashif Bilal, Osman Khalid, Aiman Erbad, Samee U. Khan
2018 J jnl
CoRR
Emna Baccour, Aiman Erbad, Amr Mohamed, Kashif Bilal, Mohsen Guizani
2018 J jnl
J. Netw. Comput. Appl.
Kashif Bilal, Aiman Erbad, Mohamed Hefeeda
2018 J jnl
Comput. Electr. Eng.
Kashif Bilal, Marc Manzano, Aiman Erbad, Eusebi Calle, Samee U. Khan
2018 J jnl
IEEE Access
Saad Mustafa, Kashif Bilal, Saif Ur Rehman Malik, Sajjad Ahmad Madani
2018 J jnl
IEEE Trans. Big Data
Huazhong Liu, Baoshun Liu, Laurence T. Yang, Man Lin, Yuhui Deng, Kashif Bilal, Samee U. Khan
2017 J jnl
IEEE Trans. Parallel Distributed Syst.
Jianguo Chen, Kenli Li, Zhuo Tang, Kashif Bilal, Shui Yu, Chuliang Weng, Keqin Li
2017 J jnl
IEEE Trans. Serv. Comput.
Asad Waqar Malik, Kashif Bilal, Saif Ur Rehman Malik, Zahid Anwar, Khurram Aziz, Dzmitry Kliazovich, Nasir Ghani, Samee U. Khan, Rajkumar Buyya
2017 J jnl
IEEE Access
Kashif Bilal, Aiman Erbad, Mohamed Hefeeda
2017 J jnl
KSII Trans. Internet Inf. Syst.
Faisal Rehman, Osman Khalid, Nuhman ul Haq, Atta ur Rehman Khan, Kashif Bilal, Sajjad Ahmad Madani
2017 conf
FMEC
Kashif Bilal, Aiman Erbad
2017 B conf
IC2E
Kashif Bilal, Aiman Erbad
2017 J jnl
IEEE Syst. J.
Saif Ur Rehman Malik, Kashif Bilal, Samee U. Khan, Bharadwaj Veeravalli, Keqin Li, Albert Y. Zomaya
2016 J jnl
IEEE Access
Jianguo Chen, Kenli Li, Zhuo Tang, Kashif Bilal, Keqin Li
2016 J jnl
ACM Comput. Surv.
Junaid Shuja, Abdullah Gani, Kashif Bilal, Atta ur Rehman Khan, Sajjad Ahmad Madani, Samee U. Khan, Albert Y. Zomaya
2016 J jnl
IEEE Trans. Computers
Yuqi Lin, Saif Ur Rehman Malik, Kashif Bilal, Qiusong Yang, Yongji Wang, Samee U. Khan
2016 J jnl
IEEE Syst. J.
Junaid Shuja, Kashif Bilal, Sajjad Ahmad Madani, Mazliza Othman, Rajiv Ranjan, Pavan Balaji, Samee Ullah Khan
2015 J jnl
Future Gener. Comput. Syst.
Assad Abbas, Kashif Bilal, Limin Zhang, Samee Ullah Khan
2015 ch.
Handbook on Data Centers
Kashif Bilal, Samee U. Khan, Marc Manzano, Eusebi Calle, Sajjad Ahmad Madani, Khizar Hayat, Dan Chen, Lizhe Wang, Rajiv Ranjan
2015 conf
SmartCity
Ubaid Ur Rahman, Owais Hakeem, Muhammad Raheem, Kashif Bilal, Samee U. Khan, Laurence T. Yang
2015 conf
DSDIS
Saad Mustafa, Kashif Bilal, Sajjad Ahmad Madani, Nikos Tziritas, Samee Ullah Khan, Laurence T. Yang
2015 J jnl
Clust. Comput.
Kashif Bilal, Ahmad Fayyaz, Samee Ullah Khan, Saeeda Usman
2015 conf
LCN Workshops
Saeeda Usman, Kashif Bilal, Nasir Ghani, Samee U. Khan, Laurence T. Yang
2014 J jnl
Clust. Comput.
Aftab Ahmed Chandio, Kashif Bilal, Nikos Tziritas, Zhibin Yu, Qingshan Jiang, Samee Ullah Khan, Cheng-Zhong Xu
2014 J jnl
Future Gener. Comput. Syst.
Kashif Bilal, Saif Ur Rehman Malik, Osman Khalid, Abdul Hameed, Enrique Alvarez, Vidura Wijaysekara, Rizwana Irfan, Sarjan Shrestha, Debjyoti Dwivedy, Mazhar Ali, Usman Shahid Khan, Assad Abbas, Nauman Jalil, Samee Ullah Khan
2014 J jnl
Clust. Comput.
Junaid Shuja, Kashif Bilal, Sajjad Ahmad Madani, Samee Ullah Khan
2014 J jnl
IEEE Cloud Comput.
Kashif Bilal, Saif Ur Rehman Malik, Samee U. Khan, Albert Y. Zomaya
2013 conf
TrustCom/ISPA/IUCC
Aftab Ahmed Chandio, Cheng-Zhong Xu, Nikos Tziritas, Kashif Bilal, Samee Ullah Khan
2013 J jnl
Clust. Comput.
Kashif Bilal, Samee Ullah Khan, Sajjad Ahmad Madani, Khizar Hayat, Majid Iqbal Khan, Nasro Min-Allah, Joanna Kolodziej, Lizhe Wang, Sherali Zeadally, Dan Chen
2013 J jnl
Comput. Electr. Eng.
Muhammad Mehran Ajmal, Sajjad Ahmad Madani, Tahir Maqsood, Kashif Bilal, Babar Nazir, Khizar Hayat
2013 Misc conf
FIT
Kashif Bilal, Samee Ullah Khan, Albert Y. Zomaya
2013 J jnl
IEEE Trans. Cloud Comput.
Kashif Bilal, Marc Manzano, Samee U. Khan, Eusebi Calle, Keqin Li, Albert Y. Zomaya
2013 J jnl
IEEE Commun. Lett.
Marc Manzano, Kashif Bilal, Eusebi Calle, Samee Ullah Khan
2013 J jnl
Concurr. Comput. Pract. Exp.
Kashif Bilal, Samee Ullah Khan, Limin Zhang, Hongxiang Li, Khizar Hayat, Sajjad Ahmad Madani, Nasro Min-Allah, Lizhe Wang, Dan Chen, Majid I. Iqbal, Cheng-Zhong Xu, Albert Y. Zomaya
2012 C conf
ECMS
Kashif Bilal, Samee Ullah Khan, Joanna Kolodziej, Limin Zhang, Khizar Hayat, Sajjad Ahmad Madani, Nasro Min-Allah, Lizhe Wang, Dan Chen
2012 J jnl
Computing
Junaid Shuja, Sajjad Ahmad Madani, Kashif Bilal, Khizar Hayat, Samee Ullah Khan, Shahzad Sarwar
2012 Misc conf
FIT
Kashif Bilal, Sajjad Mohsin
2012 J jnl
Int. J. Commun. Syst.
Saad Mustafa, Sajjad Ahmad Madani, Kashif Bilal, Khizar Hayat, Samee Ullah Khan
2010 Misc conf
FIT
Aida Vosoughi, Kashif Bilal, Samee Ullah Khan, Nasro Min-Allah, Juan Li, Nasir Ghani, Pascal Bouvry, Sajjad Ahmad Madani
2010 Misc conf
FIT
Siqian Liu, Kashif Bilal, Samee Ullah Khan, Hongxiang Li, Nasro Min-Allah, Juan Li, Nasir Ghani, Pascal Bouvry, Sajjad Ahmad Madani
2005 conf
WEC (5)
Kashif Bilal, Tassawar Iqbal, Asad Ali Safi, Nadeem Daudpota
redb/extractors/macho_extractors/macho_imports.py
← Index redb/extractors/macho_extractors/macho_imports.py python
import inspect
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.macho_extractor import MachOExtractor
from redb.models.dataclasses import MachOImport


class MachOImportExtractor(MachOExtractor):

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

    def tag(self):
        return Tag.MACHO_IMPORT.value

    def _extract_imports(self, arch_name=None):
        """Extract import information from the MachO binary for a specific architecture.

        Handles machofile v2026.2.4+ API where get_imported_functions() returns:
        Dict[str, List[Dict]] where each dict has {'name': str, 'sources': [str, ...]}
        """
        self.log.debug(inspect.currentframe().f_code.co_name)

        if not self.macho:
            return None

        try:
            # Get imported functions using API for specific architecture
            imported_functions = self.macho.get_imported_functions(arch=arch_name)
            if not imported_functions:
                return None

            # Keep the library→functions mapping (like PE does)
            library_names = []
            imports_with_mapping = []  # List of {library: [(name, source), ...]}

            for dylib_name, functions in imported_functions.items():
                # v2026.2.4+: dylib_name is already str, but handle bytes for compatibility
                if isinstance(dylib_name, bytes):
                    dylib_name = dylib_name.decode('utf-8', errors='replace')
                library_names.append(dylib_name)

                # Process function entries
                func_list = []
                for func_entry in functions:
                    # v2026.2.4+: func_entry is {'name': str, 'sources': [str, ...]}
                    if isinstance(func_entry, dict):
                        func_name = func_entry.get('name', '')
                        # Join sources if multiple, take first if single
                        sources = func_entry.get('sources', [])
                        import_source = sources[0] if sources else None
                        func_list.append((func_name, import_source))
                    else:
                        # Legacy format: func_entry is str or bytes
                        if isinstance(func_entry, bytes):
                            func_entry = func_entry.decode('utf-8', errors='replace')
                        func_list.append((func_entry, None))

                imports_with_mapping.append({dylib_name: func_list})

            # Count total functions
            total_functions = sum(len(list(d.values())[0]) for d in imports_with_mapping)

            # Create import dataclass with mapping preserved
            macho_import = MachOImport(
                macho_imports_total=total_functions,
                macho_import_libraryName=library_names if library_names else None,
                macho_import_functions=imports_with_mapping if imports_with_mapping else None
            )

            return macho_import

        except Exception as e:
            self.log.error(f"Error extracting MachO imports for arch {arch_name}: {e}")
            return None

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            # Get architectures (macho is already parsed in base class)
            architectures = self.macho.get_architectures()
            if len(architectures) > 1:
                # FAT binary - return list of imports for each architecture
                results = []
                for arch_name in architectures:
                    imports = self._extract_imports(arch_name)
                    if imports:
                        imports.arch_identifier = arch_name
                        results.append(imports)
                return results
            else:
                # Single architecture - return single result
                return self._extract_imports(architectures[0] if architectures else None)
        except Exception as e:
            self.log.error(f"Error extracting MachO imports: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            if not self.macho:
                return None

            # Get architectures (macho is already parsed in base class)
            try:
                architectures = self.macho.get_architectures()
                is_fat = len(architectures) > 1
            except Exception as e:
                self.log.error(f"Could not get architectures: {e}")
                return None

            # Flatten the data - one row per function import (like PE imports)
            data = []
            current_time = datetime.now(timezone.utc)

            # Loop through each architecture (1 for single, multiple for FAT)
            for arch_name in architectures:
                # Get architecture-specific sha256
                try:
                    arch_general_info = self.macho.get_general_info(arch=arch_name)
                    arch_header_raw = self.macho.get_macho_header(arch=arch_name)
                    arch_sha256 = arch_general_info.get('SHA256', self.sha256)
                    arch_cputype_raw = arch_header_raw.get('cputype', 0) if arch_header_raw else 0
                except Exception as e:
                    self.log.warning(f"Could not get arch-specific data for {arch_name}: {e}")
                    arch_sha256 = self.sha256
                    arch_cputype_raw = 0

                # Get imports for this architecture
                macho_import = self._extract_imports(arch_name)
                if not macho_import or not macho_import.macho_import_functions:
                    continue

                # Flatten to one row per (library, function) pair
                for lib_funcs in macho_import.macho_import_functions:
                    for lib, funcs in lib_funcs.items():
                        for func_name, import_source in funcs:
                            data.append([
                                arch_sha256,        # sha256 (arch-specific)
                                lib,                # library_name
                                func_name,          # function_name
                                import_source,      # import_source (chained_fixups, bind_opcodes, symtab)
                                current_time,       # analysis_date
                            ])

            column_names = [
                'sha256',
                'library_name', 'function_name', 'import_source',
                'analysis_date'
            ]

            if not data:
                return None

            column_type_names = [
                'FixedString(64)',
                'LowCardinality(String)', 'LowCardinality(String)', 'LowCardinality(Nullable(String))',
                'DateTime64(3, \'UTC\')'
            ]

            return (data, column_names, column_type_names)

        return None

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