Washim Uddin Mondal

57 papers A* 4A 4Journal 46Unranked 3
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Anirudh Satheesh, Pankaj Kumar Barman, Washim Uddin Mondal, Vaneet Aggarwal
2026 J jnl
CoRR
Gaurav Chaudhary, Laxmidhar Behera, Washim Uddin Mondal
2025 A* conf
ICML
Swetha Ganesh, Washim Uddin Mondal, Vaneet Aggarwal
2025 J jnl
CoRR
Yang Xu, Washim Uddin Mondal, Vaneet Aggarwal
2025 J jnl
CoRR
Yang Xu, Swetha Ganesh, Washim Uddin Mondal, Qinbo Bai, Vaneet Aggarwal
2025 J jnl
Trans. Mach. Learn. Res.
Gaurav Chaudhary, Washim Uddin Mondal, Laxmidhar Behera
2025 A conf
UAI
Swetha Ganesh, Jiayu Chen, Washim Uddin Mondal, Vaneet Aggarwal
2025 A conf
AISTATS
Swetha Ganesh, Washim Uddin Mondal, Vaneet Aggarwal
2025 conf
NCC
Sambuddha Chakrabarti, Washim Uddin Mondal
2024 J jnl
CoRR
Vaneet Aggarwal, Washim Uddin Mondal, Qinbo Bai
2024 J jnl
Found. Trends Optim.
Vaneet Aggarwal, Washim Uddin Mondal, Qinbo Bai
2024 J jnl
IEEE J. Biomed. Health Informatics
Lu Ling, Washim Uddin Mondal, Satish V. Ukkusuri
2024 A conf
AISTATS
Washim Uddin Mondal, Vaneet Aggarwal
2024 J jnl
CoRR
Washim Uddin Mondal, Vaneet Aggarwal
2024 A* conf
NeurIPS
Qinbo Bai, Washim Uddin Mondal, Vaneet Aggarwal
2024 J jnl
CoRR
Qinbo Bai, Washim Uddin Mondal, Vaneet Aggarwal
2024 J jnl
J. Mach. Learn. Res.
Washim Uddin Mondal, Vaneet Aggarwal, Satish V. Ukkusuri
2024 J jnl
IEEE Netw. Lett.
Washim Uddin Mondal, Veni Goyal, Satish V. Ukkusuri, Goutam Das, Di Wang, Mohamed-Slim Alouini, Vaneet Aggarwal
2024 J jnl
CoRR
Washim Uddin Mondal, Veni Goyal, Satish V. Ukkusuri, Goutam Das, Di Wang, Mohamed-Slim Alouini, Vaneet Aggarwal
2024 A* conf
AAAI
Qinbo Bai, Washim Uddin Mondal, Vaneet Aggarwal
2024 A* conf
NeurIPS
Washim Uddin Mondal, Vaneet Aggarwal
2024 J jnl
CoRR
Washim Uddin Mondal, Vaneet Aggarwal
2024 J jnl
IEEE Open J. Commun. Soc.
Ruibo Wang, Washim Uddin Mondal, Mustafa A. Kishk, Vaneet Aggarwal, Mohamed-Slim Alouini
2024 J jnl
CoRR
Swetha Ganesh, Washim Uddin Mondal, Vaneet Aggarwal
2023 J jnl
IEEE Trans. Cogn. Commun. Netw.
Asif Ahmed Sardar, Dibbendu Roy, Washim Uddin Mondal, Goutam Das
2023 J jnl
CoRR
Lu Ling, Washim Uddin Mondal, Satish V. Ukkusuri
2023 J jnl
CoRR
Washim Uddin Mondal, Vaneet Aggarwal
2023 J jnl
CoRR
Washim Uddin Mondal, Vaneet Aggarwal, Satish V. Ukkusuri
2023 J jnl
Trans. Mach. Learn. Res.
Washim Uddin Mondal, Vaneet Aggarwal, Satish V. Ukkusuri
2023 J jnl
CoRR
Qinbo Bai, Washim Uddin Mondal, Vaneet Aggarwal
2023 J jnl
CoRR
Washim Uddin Mondal, Vaneet Aggarwal
2023 J jnl
Trans. Mach. Learn. Res.
Washim Uddin Mondal, Vaneet Aggarwal
2023 J jnl
CoRR
Jiawei Xue, Sangung Park, Washim Uddin Mondal, Sandro Martinelli Reia, Tong Yao, Satish V. Ukkusuri
2023 J jnl
CoRR
Ruibo Wang, Washim Uddin Mondal, Mustafa A. Kishk, Vaneet Aggarwal, Mohamed-Slim Alouini
2022 J jnl
CoRR
Washim Uddin Mondal, Vaneet Aggarwal, Satish V. Ukkusuri
2022 A conf
UAI
Washim Uddin Mondal, Vaneet Aggarwal, Satish V. Ukkusuri
2022 J jnl
CoRR
Washim Uddin Mondal, Praful D. Mankar, Goutam Das, Vaneet Aggarwal, Satish V. Ukkusuri
2022 J jnl
IEEE Trans. Cogn. Commun. Netw.
Washim Uddin Mondal, Praful D. Mankar, Goutam Das, Vaneet Aggarwal, Satish V. Ukkusuri
2022 J jnl
CoRR
Washim Uddin Mondal, Vaneet Aggarwal, Satish V. Ukkusuri
2022 J jnl
J. Mach. Learn. Res.
Washim Uddin Mondal, Mridul Agarwal, Vaneet Aggarwal, Satish V. Ukkusuri
2022 J jnl
CoRR
Washim Uddin Mondal, Vaneet Aggarwal, Satish V. Ukkusuri
2022 J jnl
Trans. Mach. Learn. Res.
Washim Uddin Mondal, Vaneet Aggarwal, Satish V. Ukkusuri
2022 J jnl
IEEE Trans. Wirel. Commun.
Asif Ahmed Sardar, Dibbendu Roy, Washim Uddin Mondal, Goutam Das
2022 J jnl
IEEE Trans. Cogn. Commun. Netw.
Asif Ahmed Sardar, Dibbendu Roy, Washim Uddin Mondal, Goutam Das
2021 J jnl
IEEE Trans. Veh. Technol.
Washim Uddin Mondal, Asif Ahmed Sardar, Goutam Das
2021 J jnl
CoRR
Washim Uddin Mondal, Mridul Agarwal, Vaneet Aggarwal, Satish V. Ukkusuri
2021 J jnl
CoRR
Asif Ahmed Sardar, Dibbendu Roy, Washim Uddin Mondal, Goutam Das
2020 J jnl
IEEE Trans. Cogn. Commun. Netw.
Washim Uddin Mondal, Asif Ahmed Sardar, Nilanjan Biswas, Goutam Das
2020 J jnl
IEEE Commun. Lett.
Washim Uddin Mondal, Goutam Das
2020 J jnl
CoRR
Washim Uddin Mondal, Goutam Das
2019 J jnl
JOCN
Washim Uddin Mondal, Dibbendu Roy, Sourav Dutta, Goutam Das
2019 J jnl
IEEE Commun. Lett.
Washim Uddin Mondal, Goutam Das
2019 conf
ICC
Washim Uddin Mondal, Asif Ahmed Sardar, Nilanjan Biswas, Goutam Das
2019 conf
VTC Fall
Washim Uddin Mondal, Goutam Das
2017 J jnl
IEEE Commun. Lett.
Washim Uddin Mondal, Goutam Das
2017 J jnl
Phys. Commun.
Washim Uddin Mondal, Sudipta Biswas, Goutam Das, Priyadip Ray
2017 J jnl
IEEE Commun. Lett.
Washim Uddin Mondal, Goutam Das
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.")