Rafia Mumtaz

33 papers C 1Misc 2Journal 23Unranked 7
YearRankTypeTitle / Venue / Authors
2025 J jnl
Simul. Model. Pract. Theory
Alishba Tahir, Rafia Mumtaz, Muhammad Saqib Irshad
2025 J jnl
Comput. Mater. Continua
Asad Iqbal, Mehdi Hussain, Qaiser Riaz, Madiha Khalid, Rafia Mumtaz, Ki-Hyun Jung
2025 J jnl
IEEE Internet Things Mag.
Noor Sajjad, Rafia Mumtaz, Aryan Kaushik, Zahid Mahmood, Syed Ali Hassan
2025 J jnl
CoRR
Arslan Amin, Rafia Mumtaz, Muhammad Jawad Bashir, Syed Mohammad Hassan Zaidi
2024 J jnl
Sensors
Shoaib Sattar, Rafia Mumtaz, Mamoon Qadir, Sadaf Mumtaz, Muhammad Ajmal Khan, Timo De Waele, Eli De Poorter, Ingrid Moerman, Adnan Shahid
2024 J jnl
IEEE Access
Amna Faisal, Rafia Mumtaz, Muhammad Deedahwar Mazhar Qureshi, Muhammad Ali Tahir, N. Z. Jhanjhi, Mehedi Masud, Mohammad Shorfuzzaman
2024 conf
PLM (2)
Santichai Wicha, Naruedol Duangban, Abdullah, Rafia Mumtaz, Pradorn Sureephong
2024 J jnl
Inf.
Mariam Nasim, Rafia Mumtaz, Muneer Ahmad, Arshad Ali
2024 C conf
IGARSS
Shahbaz Baig, Waqas A. Qazi, Rafia Mumtaz
2023 J jnl
IEEE Access
Uferah Shafi, Rafia Mumtaz, Muhammad Deedahwar Mazhar Qureshi, Zahid Mahmood, Sikander Khan Tanveer, Ihsan Ul Haq, Syed Mohammad Hassan Zaidi
2023 J jnl
IEEE Access
Uferah Shafi, Rafia Mumtaz, Zahid Anwar, Muhammad Muzyyab Ajmal, Muhammad Ajmal Khan, Zahid Mahmood, Maqsood Qamar, Hafiz Muhammad Jhanzab
2022 J jnl
Sensors
Stefan Poslad, Tayyaba Irum, Patricia Charlton, Rafia Mumtaz, Muhammad Azam, Hassan Zaidi, Christothea Herodotou, Guangxia Yu, Fesal Toosy
2022 J jnl
Symmetry
Fahad Akbar, Mehdi Hussain, Rafia Mumtaz, Qaiser Riaz, Ainuddin Wahid Abdul Wahab, Ki-Hyun Jung
2022 J jnl
Comput. J.
Syed Saqib Ali Kazmi, Mehreen Ahmed, Rafia Mumtaz, Zahid Anwar
2022 conf
ICAI
Ihsan Ul Haq, Rafia Mumtaz, Muhammad Talha, Zunaira Shafaq, Muhammad Owais
2022 J jnl
Sensors
Uferah Shafi, Rafia Mumtaz, Ihsan Ul Haq, Maryam Hafeez, Naveed Iqbal, Arslan Shaukat, Syed Mohammad Hassan Zaidi, Zahid Mahmood
2021 J jnl
IEEE Access
Hassan Raza Bukhari, Rafia Mumtaz, Salman Inayat, Uferah Shafi, Ihsan Ul Haq, Syed Mohammad Hassan Zaidi, Maryam Hafeez
2021 J jnl
PeerJ Comput. Sci.
Naveed Iqbal, Rafia Mumtaz, Uferah Shafi, Syed Mohammad Hassan Zaidi
2021 J jnl
Wirel. Commun. Mob. Comput.
Leow Wei Qin, Muneer Ahmad, Ihsan Ali, Rafia Mumtaz, Syed Mohammad Hassan Zaidi, Sultan S. Alshamrani, Muhammad Ahsan Raza, Muhammad Tahir
2021 J jnl
Sensors
Muhammad Hassan Maqsood, Rafia Mumtaz, Ihsan Ul Haq, Uferah Shafi, Syed Mohammad Hassan Zaidi, Maryam Hafeez
2020 J jnl
IEEE Access
Uferah Shafi, Rafia Mumtaz, Naveed Iqbal, Syed Mohammad Hassan Zaidi, Syed Ali Raza Zaidi, Imtiaz Hussain, Zahid Mahmood
2020 conf
VTC Spring
Qamar Abbas, Shah Zeb, Syed Ali Hassan, Rafia Mumtaz, Syed Ali Raza Zaidi
2019 J jnl
Neural Comput. Appl.
Rafia Mumtaz, Shahbaz Baig, Syed Saqib Ali Kazmi, Hafiz Farooq Ahmad, Iram Fatima, Badar Ghauri
2019 conf
ISWCS
Shah Zeb, Qamar Abbas, Syed Ali Hassan, Aamir Mahmood, Rafia Mumtaz, Syed Mohammad Hassan Zaidi, Syed Ali Raza Zaidi, Mikael Gidlund
2019 J jnl
Sensors
Uferah Shafi, Rafia Mumtaz, José García-Nieto, Syed Ali Hassan, Syed Ali Raza Zaidi, Naveed Iqbal
2019 J jnl
Expert Syst. J. Knowl. Eng.
Iram Fatima, Burhan Ud Din Abbasi, Sharifullah Khan, Majed Al-Saeed, Hafiz Farooq Ahmad, Rafia Mumtaz
2018 Misc conf
FIT
Yumna Ghazi, Zahid Anwar, Rafia Mumtaz, Shahzad Saleem, Ali Tahir
2018 Misc conf
FIT
Zafar Iqbal, Zahid Anwar, Rafia Mumtaz
2015 J jnl
Comput. J.
Ayesha Kanwal, Rahat Masood, Muhammad Awais Shibli, Rafia Mumtaz
2014 conf
EUVIP
Arslan Ahmad, Atif Bin Mansoor, Rafia Mumtaz, Mukaram Khan, S. H. Mirza
2013 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Rafia Mumtaz, Phil Palmer
2012 conf
ICDIP
Mirza Muhammad Waqar, Rafia Mumtaz, Nadeem Sufyan, Mustafa Mumtaz
2006 conf
IIP
Rafia Mumtaz, Raja Iqbal, Shoab Ahmed Khan
redb/extractors/decompiler/_archive/ghidra-test.py
← Index redb/extractors/decompiler/_archive/ghidra-test.py python
import subprocess
import json
import os
import tempfile
import uuid
import shutil
import sys
import time


def run_command(cmd, env=None):
    try:
        print(f"Starting command: {' '.join(cmd)}")
        start_time = time.time()
        process = subprocess.Popen(
            cmd, env=env, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True
        )

        while True:
            output = process.stdout.readline()
            if output:
                print(output.strip())
            if process.poll() is not None:
                break

        stdout, stderr = process.communicate()
        end_time = time.time()

        print(f"Command finished. Execution time: {end_time - start_time:.2f} seconds")
        print(f"Return code: {process.returncode}")

        if process.returncode != 0:
            print(f"Error output:\n{stderr}")
            return None
        return stdout
    except Exception as e:
        print(f"Error running command {' '.join(cmd)}: {e}")
        return None


def analyze_binary(ghidra_path, binary_path, java_script_path):
    print(f"Ghidra path: {ghidra_path}")
    print(f"Binary path: {binary_path}")
    print(f"Java script path: {java_script_path}")

    # Check if Java script exists
    if not os.path.exists(java_script_path):
        print(f"Error: Java script not found at {java_script_path}")
        return None

    # Set up environment variables
    env = os.environ.copy()
    java_home = "/usr/lib/jvm/java-17-openjdk-amd64"  # Adjust this path if needed
    env["JAVA_HOME"] = java_home
    env["PATH"] = f"{java_home}/bin:{env['PATH']}"
    env["LD_LIBRARY_PATH"] = f"{java_home}/lib:{env.get('LD_LIBRARY_PATH', '')}"

    # Print environment variables for debugging
    print(f"JAVA_HOME: {env['JAVA_HOME']}")
    print(f"PATH: {env['PATH']}")
    print(f"LD_LIBRARY_PATH: {env['LD_LIBRARY_PATH']}")

    # Check Ghidra installation
    analyzeHeadless_path = f"{ghidra_path}/support/analyzeHeadless"
    print(f"analyzeHeadless exists: {os.path.exists(analyzeHeadless_path)}")

    print(f"Binary file exists: {os.path.exists(binary_path)}")

    # Check Java
    java_version = run_command(["java", "-version"], env=env)
    print(f"Java version: {java_version}")

    # Create a temporary project directory
    project_path = tempfile.gettempdir() + "/ghidra_" + str(uuid.uuid4())
    os.makedirs(project_path, exist_ok=True)
    print(f"Created temporary project path: {project_path}")
    output_file = ""

    try:
        # Run Ghidra's headless analyzer
        analyze_cmd = [
            analyzeHeadless_path,
            project_path,
            "TempProject",
            "-import",
            binary_path,
            "-postScript",
            java_script_path,
            "-deleteProject",
        ]

        result = run_command(analyze_cmd, env=env)
        if result is None:
            return None

        # Read the output JSON file
        output_file = "ghidra_output.json"
        if os.path.exists(output_file):
            with open(output_file, "r") as f:
                functions = json.load(f)
            return functions
        else:
            print(
                f"Output file {output_file} not found. Ghidra analysis may have failed."
            )
            # List files in the current directory
            print("Files in the current directory:")
            print("\n".join(os.listdir(".")))
            return None
    finally:
        # Clean up
        if os.path.exists(output_file):
            os.remove(output_file)
        if os.path.exists(project_path):
            shutil.rmtree(project_path)


# Example usage
if __name__ == "__main__":
    # if len(sys.argv) != 4:
    #     print("Usage: python script.py <ghidra_path> <binary_path> <java_script_path>")
    #     sys.exit(1)

    # ghidra_path = sys.argv[1]
    # binary_path = sys.argv[2]
    # java_script_path = sys.argv[3]

    ghidra_path = "/opt/ghidra"
    binary_path = "/home/p4c0/dev/redb/test_files/hello"
    java_script_path = (
        "/opt/ghidra/Ghidra/Features/Base/ghidra_scripts/GhidraDecompilerScript.java"
    )

    functions = analyze_binary(ghidra_path, binary_path, java_script_path)

    if functions:
        print(f"Extracted functions from {binary_path}:")
        for func in functions:
            print(f"\nFunction: {func['name']}")
            print(f"Address: {func['address']}")
            print(f"Decompiled code:\n{func['decompiled']}")
    else:
        print("Failed to extract functions.")