Kashif Naseer Qureshi

110 papers C 1Misc 1Journal 97Unranked 5
YearRankTypeTitle / Venue / Authors
2025 J jnl
Expert Syst. J. Knowl. Eng.
Marryam Murtaza, Muhammad Fayyaz, Mussarat Yasmin, Muhammad Anwar, Kashif Naseer Qureshi, Usman Ahmed Raza
2025 J jnl
J. Netw. Comput. Appl.
Abeer Iftikhar, Kashif Naseer Qureshi, Faisal Bashir Hussain, Muhammad Shiraz, Mehdi Sookhak
2025 J jnl
Intell. Data Anal.
Bashar Hamad Aubaidan, Rabiah Abdul Kadir, Mohamed Taha Lajb, Muhammad Anwar, Kashif Naseer Qureshi, Bakr Ahmed Taha, Kayhan Zrar Ghafoor
2025 J jnl
Expert Syst. J. Knowl. Eng.
Kashif Naseer Qureshi, Hanaa Nafea, Pyoungwon Kim
2025 J jnl
J. Netw. Comput. Appl.
Abeer Iftikhar, Faisal Bashir Hussain, Kashif Naseer Qureshi, Muhammad Shiraz, Mehdi Sookhak
2024 J jnl
Computing
Fahim Niaz, Jian Zhang, Muhammad Khalid, Kashif Naseer Qureshi, Yang Zheng, Muhammad Younas, Naveed Imran
2024 ch.
Cybersecurity Vigilance and Security Engineering of Internet of Everything
Raja Waseem Anwar, Kashif Naseer Qureshi
2024 J jnl
IEEE Access
Kashif Naseer Qureshi, Hanaa Nafea, Ibrahim Tariq Javed, Kayhan Zrar Ghafoor
2024 ch.
Cybersecurity Vigilance and Security Engineering of Internet of Everything
Kashif Naseer Qureshi, Garret O'Keeffe, Shane O'Farrell, Graham Costelloe
2024 book
Cybersecurity Vigilance and Security Engineering of Internet of Everything
Kashif Naseer Qureshi, Thomas Newe, Gwanggil Jeon, Abdellah Chehri
2024 J jnl
J. King Saud Univ. Comput. Inf. Sci.
Seemab Karim, Kashif Naseer Qureshi, Ashraf Osman Ibrahim, Anas Waleed Abulfaraj, Kayhan Zrar Ghafoor
2024 ch.
Cybersecurity Vigilance and Security Engineering of Internet of Everything
Abeer Iftikhar, Kashif Naseer Qureshi
2024 ch.
Cybersecurity Vigilance and Security Engineering of Internet of Everything
Kashif Naseer Qureshi, Thomas Newe, Gwanggil Jeon, Abdellah Chehri
2024 J jnl
Wirel. Networks
Aneeqa Ahmed, Kashif Naseer Qureshi, Muhammad Anwar, Farhan Masud, Junaid Imtiaz, Gwanggil Jeon
2024 ch.
Cybersecurity Vigilance and Security Engineering of Internet of Everything
Ibrahim Tariq Javed, Kashif Naseer Qureshi
2024 J jnl
Trans. Emerg. Telecommun. Technol.
Waqas Buksh, Ying Guo, Saleem Iqbal, Kashif Naseer Qureshi, Jaime Lloret
2023 J jnl
IEEE Trans. Comput. Soc. Syst.
Muhammad Rehman, Ibrahim Tariq Javed, Kashif Naseer Qureshi, Tiziana Margaria, Gwanggil Jeon
2023 J jnl
Comput. Syst. Sci. Eng.
Adil Hussain, Kashif Naseer Qureshi, Khalid Javeed, Musaed A. Alhussein
2023 J jnl
Future Internet
Phan Hien Vu, Danh Phan Hong Pham, Tran Vu Pham, Kashif Naseer Qureshi, Cuong Pham-Quoc
2023 J jnl
Microprocess. Microsystems
Bushra Khalid, Kashif Naseer Qureshi, Kayhan Zrar Ghafoor, Gwanggil Jeon
2023 J jnl
Pers. Ubiquitous Comput.
Shahid Naseem, Adi Alhudhaif, Muhammad Anwar, Kashif Naseer Qureshi, Gwanggil Jeon
2023 J jnl
IEEE Trans. Intell. Transp. Syst.
Kashif Naseer Qureshi, Gwanggil Jeon, Mohammad Mehedi Hassan, Md. Rafiul Hassan, Kuljeet Kaur
2023 J jnl
Trans. Emerg. Telecommun. Technol.
Khalid Mahmood Awan, Madeeha Tariq, Kashif Naseer Qureshi, Thomas Newe, Gwanggil Jeon
2023 J jnl
Concurr. Comput. Pract. Exp.
Zeeshan Saleem, Adi Alhudhaif, Kashif Naseer Qureshi, Gwanggil Jeon
2023 J jnl
IEEE Access
Zulfiqar Ali, Kashif Naseer Qureshi, Ahmad Sami Al-Shamayleh, Adnan Akhunzada, Aadil Raza, Muhammad Fasih Uddin Butt
2023 J jnl
IEEE Access
Zulfiqar Ali, Asif Muhammad, Ahmad Sami Al-Shamayleh, Kashif Naseer Qureshi, Wagdi Alrawagfeh, Adnan Akhunzada
2023 J jnl
Clust. Comput.
Faisal Kiyani, Kashif Naseer Qureshi, Kayhan Zrar Ghafoor, Gwanggil Jeon
2023 C conf
PDP
Kashif Naseer Qureshi, Noman Arshad, Thomas Newe
2023 J jnl
IEEE Access
Abeer Iftikhar, Kashif Naseer Qureshi, Ali A. Altalbe, Khalid Javeed
2023 J jnl
J. King Saud Univ. Comput. Inf. Sci.
Abeer Iftikhar, Kashif Naseer Qureshi, Muhammad Shiraz, Saleh Albahli
2023 J jnl
Int. J. Syst. Assur. Eng. Manag.
Muhammad Junaid Nazar, Adi Alhudhaif, Kashif Naseer Qureshi, Saleem Iqbal, Gwanggil Jeon
2023 J jnl
IEEE Access
Raja Waseem Anwar, Fatma Outay, Kashif Naseer Qureshi, Saleem Iqbal, Kayhan Zrar Ghafoor
2022 J jnl
Wirel. Pers. Commun.
Kashif Naseer Qureshi, Adi Alhudhaif, Moeen Azahar, Ibrahim Tariq Javed, Gwanggil Jeon
2022 J jnl
Trans. Emerg. Telecommun. Technol.
Saleem Iqbal, Kashif Naseer Qureshi, Nabeela Kanwal, Gwanggil Jeon
2022 J jnl
Wirel. Pers. Commun.
Kashif Naseer Qureshi, Ejaz Ahmad, Muhammad Anwar, Kayhan Zrar Ghafoor, Gwanggil Jeon
2022 J jnl
Wirel. Pers. Commun.
Saleem Iqbal, Kashif Naseer Qureshi, Saqib Majeed, Kayhan Zrar Ghafoor, Gwanggil Jeon
2022 J jnl
Sensors
Saqib Majeed, Adnan Sohail, Kashif Naseer Qureshi, Saleem Iqbal, Ibrahim Tariq Javed, Noël Crespi, Wamda Abdelrahman Elhag Nagmeldin, Abdelzahir Abdelmaboud
2022 J jnl
Sensors
Raja Waseem Anwar, Kashif Naseer Qureshi, Wamda Abdelrahman Elhag Nagmeldin, Abdelzahir Abdelmaboud, Kayhan Zrar Ghafoor, Ibrahim Tariq Javed, Noël Crespi
2022 J jnl
Multim. Tools Appl.
Kashif Naseer Qureshi, Adi Alhudhaif, Noman Arshad, Um Kalsoom, Gwanggil Jeon
2022 J jnl
Multim. Syst.
Muhammad Hassan Zaib, Faisal Bashir, Kashif Naseer Qureshi, Sumaira Kausar, Muhammad Rizwan, Gwanggil Jeon
2022 J jnl
Neural Comput. Appl.
Maria Ahmed Qureshi, Kashif Naseer Qureshi, Gwanggil Jeon, Francesco Piccialli
2022 J jnl
Concurr. Comput. Pract. Exp.
Muhammad Saidu Aliero, Kashif Naseer Qureshi, Muhammad Fermi Pasha, Awais Ahmad, Gwanggil Jeon
2022 J jnl
Entropy
Zulfiqar Ali, Kashif Naseer Qureshi, Kainat Mustafa, Rasool Bukhsh, Sheraz Aslam, Hana Mohammed Mujlid, Kayhan Zrar Ghafoor
2022 J jnl
Online Soc. Networks Media
Faima Abbasi, Muhammad Muzammal, Kashif Naseer Qureshi, Ibrahim Tariq Javed, Tiziana Margaria, Noël Crespi
2022 J jnl
Concurr. Comput. Pract. Exp.
Saleem Iqbal, Kashif Naseer Qureshi, Faisal Shoaib, Awais Ahmad, Gwanggil Jeon
2022 J jnl
Int. J. Commun. Syst.
Tariq Khan, Adnan Sohail, Kashif Naseer Qureshi, Saleem Iqbal, Gwanggil Jeon
2022 J jnl
Wirel. Pers. Commun.
Kashif Naseer Qureshi, Ejaz Ahmad, Muhammad Anwar, Kayhan Zrar Ghafoor, Gwanggil Jeon
2022 J jnl
Neurocomputing
Kashif Naseer Qureshi, Omprakash Kaiwartya, Gwanggil Jeon, Francesco Piccialli
2022 J jnl
Wirel. Pers. Commun.
Saleem Iqbal, Kashif Naseer Qureshi, Saqib Majeed, Kayhan Zrar Ghafoor, Gwanggil Jeon
2022 J jnl
Microprocess. Microsystems
Kashif Naseer Qureshi, Adi Alhudhaif, Syed Wasim Haidar, Saqib Majeed, Gwanggil Jeon
2022 J jnl
Microprocess. Microsystems
Khaleeq un Nisa, Adi Alhudhaif, Kashif Naseer Qureshi, Hassan Jalil Hadi, Gwanggil Jeon
2022 J jnl
Multim. Syst.
Kashif Naseer Qureshi, Adi Alhudhaif, Moazam Ali, Maria Ahmed Qureshi, Gwanggil Jeon
2022 J jnl
Comput. Electr. Eng.
Kashif Naseer Qureshi, Adi Alhudhaif, Adil Hussain, Saleem Iqbal, Gwanggil Jeon
2021 J jnl
Int. J. Circuit Theory Appl.
Kashif Naseer Qureshi, Sundus Qayyum, Muhammad Najam-ul-Islam, Gwanggil Jeon
2021 J jnl
J. Ambient Intell. Smart Environ.
Kashif Naseer Qureshi, Muhammad Najam-ul-Islam, Gwanggil Jeon
2021 J jnl
IEEE Trans. Intell. Transp. Syst.
Kashif Naseer Qureshi, Muhammed Zaharadeen Ahmed, Gwanggil Jeon, Francesco Piccialli
2021 J jnl
Comput. Networks
Kashif Naseer Qureshi, Gwanggil Jeon, Francesco Piccialli
2021 J jnl
Comput. Electr. Eng.
Junaid Shabbir Abbasi, Faisal Bashir, Kashif Naseer Qureshi, Muhammad Najam-ul-Islam, Gwanggil Jeon
2021 J jnl
Big Data
Kashif Naseer Qureshi, Adi Alhudhaif, Raja Waseem Anwar, Shahid Nazir Bhati, Gwanggil Jeon
2021 J jnl
Comput. Electr. Eng.
Kashif Naseer Qureshi, Ayesha Naveed, Yamna Kashif, Gwanggil Jeon
2021 J jnl
IEEE Trans. Intell. Transp. Syst.
Kashif Naseer Qureshi, Sadia Din, Gwanggil Jeon, Francesco Piccialli
2021 J jnl
Neural Comput. Appl.
Kashif Naseer Qureshi, Awais Ahmad, Francesco Piccialli, Giampaolo Casolla, Gwanggil Jeon
2021 J jnl
Comput. Electr. Eng.
Kashif Naseer Qureshi, Adi Alhudhaif, Maria Ahmed Qureshi, Gwanggil Jeon
2021 J jnl
IEEE Access
Piyush Dhawankar, Arvind Kumar, Noël Crespi, Krishna Busawon, Kashif Naseer Qureshi, Ibrahim Tariq Javed, Shiv Prakash, Omprakash Kaiwartya
2021 J jnl
IEEE Access
Ibrahim Tariq Javed, Fares Alharbi, Tiziana Margaria, Noël Crespi, Kashif Naseer Qureshi
2021 J jnl
J. Ambient Intell. Humaniz. Comput.
Rosheen Qazi, Kashif Naseer Qureshi, Faisal Bashir, Muhammad Najam-ul-Islam, Saleem Iqbal, Arsalan Arshad
2021 J jnl
Comput. Commun.
Sabih Khan, Saleem Iqbal, Kashif Naseer Qureshi, Kayhan Zrar Ghafoor, Pyoungwon Kim, Gwanggil Jeon
2021 J jnl
Wirel. Pers. Commun.
Muhammad Saidu Aliero, Kashif Naseer Qureshi, Muhammad Fermi Pasha, Imran Ghani, Aliyu Rufai Yauri
2021 J jnl
J. Inf. Secur. Appl.
Kashif Naseer Qureshi, Adi Alhudhaif, Adeel Abass Shah, Saqib Majeed, Gwanggil Jeon
2020 J jnl
Comput. Electr. Eng.
Kashif Naseer Qureshi, Raza Hussain, Gwanggil Jeon
2020 J jnl
Inf. Sci.
Kashif Naseer Qureshi, Sadia Din, Gwanggil Jeon, Francesco Piccialli
2020 J jnl
Concurr. Comput. Pract. Exp.
Saleem Iqbal, Abdul Hanan Abdullah, Kashif Naseer Qureshi
2020 J jnl
J. Ambient Intell. Humaniz. Comput.
Muhammad Saidu Aliero, Imran Ghani, Kashif Naseer Qureshi, Mohd. Foad Rohani
2020 J jnl
IEEE Access
Sadia Din, Kashif Naseer Qureshi, M. Sheheryar Afsar, Joel J. P. C. Rodrigues, Awais Ahmad, Gyu Sang Choi
2020 J jnl
Int. J. Distributed Sens. Networks
Yousaf Zia, Arshad Farhad, Faisal Bashir, Kashif Naseer Qureshi, Ghufran Ahmed
2020 J jnl
Comput. Commun.
Kashif Naseer Qureshi, Sadia Din, Gwanggil Jeon, Francesco Piccialli
2020 J jnl
Neural Comput. Appl.
Kashif Naseer Qureshi, Faisal Bashir, Abdul Hanan Abdullah
2020 J jnl
Int. J. Distributed Sens. Networks
Yousaf Zia, Fasial Bashir, Kashif Naseer Qureshi
2020 J jnl
IEEE Access
Hanaa Nafea, Kashif Kifayat, Qi Shi, Kashif Naseer Qureshi, Bob Askwith
2020 J jnl
Comput. Commun.
Kashif Naseer Qureshi, Sadia Din, Gwanggil Jeon, Francesco Piccialli
2020 J jnl
J. Sensors
Kashif Naseer Qureshi, Muhammad Umair Bashir, Jaime Lloret, Antonio León
2020 J jnl
IEEE Access
Kashif Naseer Qureshi, Muhammad Moghees Idrees, Jaime Lloret, Ignacio Bosch
2020 J jnl
Wirel. Pers. Commun.
Muhammad Saidu Aliero, Kashif Naseer Qureshi, Muhammad Fermi Pasha, Imran Ghani, Aliyu Rufai Yauri
2020 J jnl
Eng. Appl. Artif. Intell.
Kashif Naseer Qureshi, Abeer Iftikhar, Shahid Nazeer Bhatti, Francesco Piccialli, Fabio Giampaolo, Gwanggil Jeon
2020 J jnl
EURASIP J. Wirel. Commun. Netw.
Saqib Majeed, Adnan Sohail, Kashif Naseer Qureshi, Arvind Kumar, Saleem Iqbal, Jaime Lloret
2020 J jnl
Telecommun. Syst.
Kashif Naseer Qureshi, Abdul Hanan Abdullah, Omprakash Kaiwartya, Fasee Ullah, Saleem Iqbal, Ayman Altameem
2019 J jnl
Int. J. Distributed Sens. Networks
Khalid M. Awan, Nadeem Ashraf, Muhammad Qaiser Saleem, Osama E. Sheta, Kashif Naseer Qureshi, Asim Zeb, Khalid Haseeb, Ali Safaa Sadiq
2019 J jnl
IEEE Internet Things J.
Sushil Kumar, Upasana Dohare, Kirshna Kumar, Durga Prasad Dora, Kashif Naseer Qureshi, Rupak Kharel
2018 J jnl
Comput. Electr. Eng.
Kashif Naseer Qureshi, Abdul Hanan Abdullah, Omprakash Kaiwartya, Saleem Iqbal, Rizwan Aslam Butt, Faisal Bashir
2018 conf
ICOIN
Kashif Naseer Qureshi, Faisal Bashir, Abdul Hanan Abdullah
2018 J jnl
Opt. Switch. Netw.
Rizwan Aslam Butt, Sevia Mahdaliza Idrus, Kashif Naseer Qureshi, Pir Meher Ali Shah, Nadiatulhuda Zulkifli
2018 conf
CloudNet
Kashif Naseer Qureshi, Faisal Bashir, Saleem Iqbal
2018 J jnl
Int. J. Commun. Syst.
Kashif Naseer Qureshi, Abdul Hanan Abdullah, Faisal Bashir, Saleem Iqbal, Khalid M. Awan
2018 J jnl
Wirel. Networks
Saleem Iqbal, Abdul Hanan Abdullah, Faraz Ahsan, Kashif Naseer Qureshi
2018 conf
ICACS
Khalid Mahmood Awan, Ahmad Ali, Farhan Aadil, Kashif Naseer Qureshi
2018 J jnl
Sensors
Muhammad Anwar, Abdul Hanan Abdullah, Ayman Altameem, Kashif Naseer Qureshi, Farhan Masud, Muhammad Faheem, Yue Cao, Rupak Kharel
2018 J jnl
Comput. Sci. Inf. Syst.
Bushra Zafar, Rehan Ashraf, Nouman Ali, Mudassar Ahmed, Sohail Jabbar, Kashif Naseer Qureshi, Awais Ahmad, Gwanggil Jeon
2018 J jnl
IEEE Access
Saleem Iqbal, Abdul Hanan Abdullah, Kashif Naseer Qureshi, Jaime Lloret
2017 J jnl
J. Medical Syst.
Hamdan O. Alanazi, Abdul Hanan Abdullah, Kashif Naseer Qureshi
2017 J jnl
Comput. Electr. Eng.
Saleem Iqbal, Abdul Hanan Abdullah, Kashif Naseer Qureshi
2017 J jnl
JOCN
Rizwan Aslam Butt, Sevia Mahdaliza Idrus, Kashif Naseer Qureshi, Nadiatulhuda Zulkifli, Siti Hasunah Mohammad
2017 Misc conf
FIT
Kashif Naseer Qureshi, Faisal Bashir, Abdul Hanan Abdullah
2017 conf
WMNC
Kashif Naseer Qureshi, Faisal Bashir, Abdul Hanan Abdullah
2017 J jnl
Wirel. Pers. Commun.
Kashif Naseer Qureshi, Abdul Hanan Abdullah, Ayman Altameem
2016 J jnl
KSII Trans. Internet Inf. Syst.
Kashif Naseer Qureshi, Abdul Hanan Abdullah, Jaime Lloret, Ayman Altameem
2016 J jnl
Int. J. Distributed Sens. Networks
Kashif Naseer Qureshi, Abdul Hanan Abdullah, Jaime Lloret
2016 J jnl
Int. J. Distributed Sens. Networks
Kashif Naseer Qureshi, Abdul Hanan Abdullah, Jaime Lloret, Ayman Altameem
2015 J jnl
J. Comput. Networks Commun.
Fasee Ullah, Abdul Hanan Abdullah, Muhammad Qasim Jan, Kashif Naseer Qureshi
2014 J jnl
Smart Comput. Rev.
Kashif Naseer Qureshi, Abdul Hanan Abdullah
2014 conf
UIC/ATC/ScalCom
Kashif Naseer Qureshi, Abdul Hanan Abdullah, Ghufran Ullah
redb/extractors/apk_extractors/apk_inconsistency_tests.py
← Index redb/extractors/apk_extractors/apk_inconsistency_tests.py python
import inspect
import re
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 APKInconsistencyTests

# Emulator detection indicator strings
EMULATOR_INDICATORS = {
    "generic", "sdk", "google_sdk", "Emulator",
    "goldfish", "ranchu", "Andy", "Genymotion",
    "BlueStacks", "nox", "ttVM_Hdragon",
}

# Root detection indicator strings
ROOT_INDICATORS = {
    "/system/app/Superuser.apk",
    "/system/xbin/su",
    "/system/bin/su",
    "com.noshufou.android.su",
    "com.thirdparty.superuser",
    "eu.chainfire.supersu",
    "com.koushikdutta.superuser",
    "com.topjohnwu.magisk",
}

# Standard DEX filename pattern
STANDARD_DEX_PATTERN = re.compile(r"^classes\d*\.dex$")


class APKInconsistencyTestsExtractor(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.test_results = None
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    def _test_zip_bomb(self):
        """Check if any ZIP entry has compression ratio > 100:1."""
        try:
            zf = self._get_zip_file()
            if not zf:
                return None
            with zf:
                for info in zf.infolist():
                    if info.compress_size > 0:
                        ratio = info.file_size / info.compress_size
                        if ratio > 100:
                            return True
            return False
        except Exception as e:
            self.log.warning(f"Error in zip bomb test: {e}")
            return None

    def _test_zip_duplicate_entries(self):
        """Check for duplicate filenames in ZIP directory."""
        try:
            zf = self._get_zip_file()
            if not zf:
                return None
            with zf:
                names = [info.filename for info in zf.infolist()]
                return len(names) != len(set(names))
        except Exception as e:
            self.log.warning(f"Error in duplicate entries test: {e}")
            return None

    def _test_zip_path_traversal(self):
        """Check for path traversal (../) in ZIP entry names."""
        try:
            for f in self._list_files():
                if ".." in f or f.startswith("/"):
                    return True
            return False
        except Exception as e:
            self.log.warning(f"Error in path traversal test: {e}")
            return None

    def _test_zip_suspicious_timestamps(self):
        """Check for timestamps at epoch (1980) or in the future."""
        try:
            zf = self._get_zip_file()
            if not zf:
                return None
            now = datetime.now()
            with zf:
                for info in zf.infolist():
                    try:
                        dt = datetime(*info.date_time)
                        if dt.year <= 1980 or dt > now:
                            return True
                    except (ValueError, TypeError):
                        continue
            return False
        except Exception as e:
            self.log.warning(f"Error in suspicious timestamps test: {e}")
            return None

    def _test_hidden_dex_files(self):
        """Check for DEX files not matching classes*.dex pattern."""
        try:
            for f in self._list_files():
                if f.endswith(".dex"):
                    basename = f.split("/")[-1]
                    if not STANDARD_DEX_PATTERN.match(basename):
                        return True
            return False
        except Exception as e:
            self.log.warning(f"Error in hidden DEX files test: {e}")
            return None

    def _test_manifest_component_mismatch(self):
        """Check for declared components that don't exist in DEX."""
        try:
            if not self._is_valid_apk():
                return None

            # Get all class names from DEX
            dex_classes = set()
            try:
                from androguard.core.dex import DEX
                for dex_data in (self.apk.get_all_dex() or []):
                    try:
                        d = DEX(dex_data)
                        for cls in d.get_classes():
                            name = cls.get_name()
                            if name:
                                # Convert "Lcom/example/Foo;" to "com.example.Foo"
                                dex_classes.add(
                                    name[1:-1].replace("/", ".") if name.startswith("L") else name
                                )
                    except Exception:
                        continue
            except Exception:
                return None

            if not dex_classes:
                return None

            # Check manifest components against DEX classes
            components = []
            try:
                components.extend(self.apk.get_activities() or [])
                components.extend(self.apk.get_services() or [])
                components.extend(self.apk.get_receivers() or [])
                components.extend(self.apk.get_providers() or [])
            except Exception:
                return None

            for comp in components:
                if comp and comp not in dex_classes:
                    # Component might use a shorthand; check with package prefix
                    package = self.apk.get_package() or ""
                    full_name = package + comp if comp.startswith(".") else comp
                    if full_name not in dex_classes:
                        return True

            return False
        except Exception as e:
            self.log.warning(f"Error in manifest component mismatch test: {e}")
            return None

    def _test_debuggable_release(self):
        """Check android:debuggable=true combined with a release signature."""
        try:
            if not self._is_valid_apk():
                return None

            is_debuggable = self.apk.get_attribute_value(
                "application", "debuggable"
            ) == "true"

            if not is_debuggable:
                return False

            # Check if it has a signing certificate (release builds have certs)
            try:
                certs = self.apk.get_certificates()
                if certs and len(certs) > 0:
                    return True
            except Exception:
                pass

            return False
        except Exception as e:
            self.log.warning(f"Error in debuggable release test: {e}")
            return None

    def _get_dex_strings(self):
        """Get all string constants from DEX files."""
        all_strings = set()
        try:
            from androguard.core.dex import DEX
            for dex_data in (self.apk.get_all_dex() or []):
                try:
                    d = DEX(dex_data)
                    for s in d.get_strings():
                        if s:
                            all_strings.add(s)
                except Exception:
                    continue
        except Exception:
            pass
        return all_strings

    def _test_emulator_detection_strings(self):
        """Check for emulator detection patterns in DEX strings."""
        try:
            if not self._is_valid_apk():
                return None

            dex_strings = self._get_dex_strings()
            for indicator in EMULATOR_INDICATORS:
                for s in dex_strings:
                    if indicator in s:
                        return True
            return False
        except Exception as e:
            self.log.warning(f"Error in emulator detection test: {e}")
            return None

    def _test_debugger_detection(self):
        """Check for debugger detection API calls in DEX."""
        try:
            if not self._is_valid_apk():
                return None

            dex_strings = self._get_dex_strings()
            debugger_patterns = {
                "isDebuggerConnected",
                "waitingForDebugger",
                "Debug.isDebuggerConnected",
            }
            for pattern in debugger_patterns:
                for s in dex_strings:
                    if pattern in s:
                        return True
            return False
        except Exception as e:
            self.log.warning(f"Error in debugger detection test: {e}")
            return None

    def _test_root_detection(self):
        """Check for root detection patterns in DEX."""
        try:
            if not self._is_valid_apk():
                return None

            dex_strings = self._get_dex_strings()
            for indicator in ROOT_INDICATORS:
                for s in dex_strings:
                    if indicator in s:
                        return True
            return False
        except Exception as e:
            self.log.warning(f"Error in root detection test: {e}")
            return None

    def extract(self):
        if not self._is_valid_apk():
            self.log.error(f"Invalid APK for {self.hash.sha256}")
            return None

        self.test_results = APKInconsistencyTests(
            test_zip_bomb=self._test_zip_bomb(),
            test_zip_duplicate_entries=self._test_zip_duplicate_entries(),
            test_zip_path_traversal=self._test_zip_path_traversal(),
            test_zip_suspicious_timestamps=self._test_zip_suspicious_timestamps(),
            test_hidden_dex_files=self._test_hidden_dex_files(),
            test_manifest_component_mismatch=self._test_manifest_component_mismatch(),
            test_debuggable_release=self._test_debuggable_release(),
            test_emulator_detection_strings=self._test_emulator_detection_strings(),
            test_debugger_detection=self._test_debugger_detection(),
            test_root_detection=self._test_root_detection(),
        )
        return self.test_results

    def _bool_to_nullable(self, val):
        """Convert bool/None to ClickHouse Nullable(UInt8)."""
        if val is None:
            return None
        return int(val)

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

            current_time = datetime.now(timezone.utc)
            t = self.test_results

            data = [[
                self.sha256,
                self._bool_to_nullable(t.test_zip_bomb),
                self._bool_to_nullable(t.test_zip_duplicate_entries),
                self._bool_to_nullable(t.test_zip_path_traversal),
                self._bool_to_nullable(t.test_zip_suspicious_timestamps),
                self._bool_to_nullable(t.test_hidden_dex_files),
                self._bool_to_nullable(t.test_manifest_component_mismatch),
                self._bool_to_nullable(t.test_debuggable_release),
                self._bool_to_nullable(t.test_emulator_detection_strings),
                self._bool_to_nullable(t.test_debugger_detection),
                self._bool_to_nullable(t.test_root_detection),
                current_time,
            ]]

            column_names = [
                'sha256',
                'test_zip_bomb', 'test_zip_duplicate_entries',
                'test_zip_path_traversal', 'test_zip_suspicious_timestamps',
                'test_hidden_dex_files', 'test_manifest_component_mismatch',
                'test_debuggable_release', 'test_emulator_detection_strings',
                'test_debugger_detection', 'test_root_detection',
                'analysis_date',
            ]

            column_type_names = [
                'FixedString(64)',
                'Nullable(UInt8)', 'Nullable(UInt8)',
                'Nullable(UInt8)', 'Nullable(UInt8)',
                'Nullable(UInt8)', 'Nullable(UInt8)',
                'Nullable(UInt8)', 'Nullable(UInt8)',
                'Nullable(UInt8)', 'Nullable(UInt8)',
                "DateTime64(3, 'UTC')",
            ]

            return (data, column_names, column_type_names)

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