Hamid Reza Tohidypour

55 papers B 5C 9Misc 9Journal 17Unranked 15
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Junbin Zhang, Hamid Reza Tohidypour, Yixiao Wang, Panos Nasiopoulos
2026 J jnl
IEEE Trans. Multim.
Zhenchao Ma, Hamid Reza Tohidypour, Panos Nasiopoulos, Victor C. M. Leung
2025 Misc conf
ICNC
Zhenchao Ma, Forrest Paul, Sara Zhang, Hongjing Chen, Hamid Reza Tohidypour, Panos Nasiopoulos
2025 conf
ICIPW
Simin Mirzaei, Hamid Reza Tohidypour, Shahriar Mirabbasi, Panos Nasiopoulos
2025 conf
DSP
Alireza Rafiei Sardouei, Hamid Reza Tohidypour, Panos Nasiopoulos, Junbin Zhang
2025 J jnl
IEEE Trans. Intell. Veh.
Tala Bazzaza, Hamid Reza Tohidypour, Yixiao Wang, Panos Nasiopoulos
2025 J jnl
IEEE Trans. Consumer Electron.
Simin Mirzaei, Hamid Reza Tohidypour, Panos Nasiopoulos, Siddharth R. Vora, Shahriar Mirabbasi
2025 J jnl
IEEE Access
Junbin Zhang, Yixiao Wang, Hamid Reza Tohidypour, Panos Nasiopoulos
2025 C conf
ICCE
Alireza Rafiei Sardouei, Aakash Ramesh, Tianyi Ren, Hamid Reza Tohidypour, Panos Nasiopoulos
2025 conf
DSP
Simin Mirzaei, Hamid Reza Tohidypour, Shahriar Mirabbasi, Panos Nasiopoulos
2025 conf
ICIPW
Junbin Zhang, Hamid Reza Tohidypour, Yixiao Wang, Panos Nasiopoulos
2025 Misc conf
ICASSP
Zhenchao Ma, Hamid Reza Tohidypour, Panos Nasiopoulos, Victor C. M. Leung
2024 C conf
ICCE
Hamid Reza Tohidypour, K. Jin, R. Fang, A. Rajavaram, H. Feng, Yixiao Wang, Tala Bazzaza, Mahsa T. Pourazad, Panos Nasiopoulos
2024 Misc conf
ICNC
Kaitai Tong, Junbin Zhang, Yixiao Wang, Hamid Reza Tohidypour, Panos Nasiopoulos
2024 J jnl
IEEE J. Emerg. Sel. Topics Circuits Syst.
Zhenchao Ma, Yixiao Wang, Hamid Reza Tohidypour, Panos Nasiopoulos, Victor C. M. Leung
2024 conf
ICFSP
Simin Mirzaei, Ailar Mahdizadeh, Milad Yazdani, Hamid Reza Tohidypour, Siddharth R. Vora, Shahriar Mirabbasi, Panos Nasiopoulos, Dena Shahriari
2024 Misc conf
ICNC
Yixiao Wang, Zhe Li, Guowei Guan, Yipin Sun, Chunyu Wang, Hamid Reza Tohidypour, Panos Nasiopoulos, Victor C. M. Leung
2023 conf
MLN
Hamid Reza Tohidypour, Tala Bazzaza, Yixiao Wang, Panos Nasiopoulos, Vincent Sastra, Bowei Ren, Elbert Ng, Sebastian Gonzalez, Andrew Shieh
2023 J jnl
IEEE Trans. Broadcast.
Jie Xiang, Hamid Reza Tohidypour, Yixiao Wang, Panos Nasiopoulos, Mahsa T. Pourazad
2023 Misc conf
ICNC
Junbin Zhang, Yixiao Wang, Hamid Reza Tohidypour, Mahsa T. Pourazad, Panos Nasiopoulos
2023 B conf
SMC
Jie Xiang, Hamid Reza Tohidypour, Yixiao Wang, Panos Nasiopoulos, Mahsa T. Pourazad
2023 C conf
ISCAS
Yixiao Wang, Nusrat Mehajabin, Hamid Reza Tohidypour, Jerry Song, Menghong Huang, Behnoosh Babaghorbani, Zuhao Chen, Mahsa T. Pourazad, Panos Nasiopoulos, Victor C. M. Leung
2023 C conf
ICCE
Yixiao Wang, Hamid Reza Tohidypour, Mahsa T. Pourazad, Panos Nasiopoulos, Victor C. M. Leung
2023 B conf
ICIP
Junbin Zhang, Yixiao Wang, Hamid Reza Tohidypour, Panos Nasiopoulos
2023 conf
DSP
Hamid Reza Tohidypour, Yixiao Wang, Mahsa T. Pourazad, Chen Yuan, Runze Wang, Travis LePage, Panos Nasiopoulos
2023 C conf
ICCE
Hamid Reza Tohidypour, Yixiao Wang, Mahsa T. Pourazad, Panos Nasiopoulos, D. Zhao, M. Xie, D. Kamat
2023 conf
DSP
Mobina Mobaraki, Mohamed Zidan, Hamid Reza Tohidypour, Yixiao Wang, Rui Zhong, Haoxiang Lei, Panos Nasiopoulos
2023 Misc conf
ICNC
Junbin Zhang, Hamid Reza Tohidypour, Yixiao Wang, Panos Nasiopoulos
2022 conf
PETRA
Hamid Reza Tohidypour, Anahita Shojaei-Hashemi, Panos Nasiopoulos, Mahsa T. Pourazad
2022 B conf
WiMob
Hamid Reza Tohidypour, Mahsa T. Pourazad, Panos Nasiopoulos
2022 conf
HICSS
Nusrat Mehajabin, Peizhi Yan, Supreet Kaur, Jingxiang Song, Mahsa T. Pourazad, Yixiao Wang, Hamid Reza Tohidypour, Panos Nasiopoulos
2022 C conf
ICCE
Tala Bazzaza, Zuhao Chen, Sandhiya Prabha, Hamid Reza Tohidypour, Yixiao Wang, Mahsa T. Pourazad, Panos Nasiopoulos, Victor C. M. Leung
2022 C conf
ICCE
Yixiao Wang, Hamid Reza Tohidypour, Mahsa T. Pourazad, Panos Nasiopoulos, Victor C. M. Leung
2022 conf
CSCI
Junbin Zhang, Yixiao Wang, Hamid Reza Tohidypour, Panos Nasiopoulos
2022 B conf
WiMob
Nusrat Mehajabin, Zhenchao Ma, Yixiao Wang, Hamid Reza Tohidypour, Panos Nasiopoulos
2021 conf
MeditCom
Mahsa T. Pourazad, T. Sung, H. Hu, S. Wang, Hamid Reza Tohidypour, Yixiao Wang, Panos Nasiopoulos, Victor C. M. Leung
2021 conf
GoodIT
Parnia Haji Faraji, Hamid Reza Tohidypour, Yixiao Wang, Panos Nasiopoulos, Simon Ren, Arash Rizvi, Cloris Feng, Mahsa T. Pourazad, Victor C. M. Leung
2017 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Hamid Reza Tohidypour, Hossein Bashashati, Mahsa T. Pourazad, Panos Nasiopoulos
2016 J jnl
IEEE Trans. Broadcast.
Hamid Reza Tohidypour, Mahsa T. Pourazad, Panos Nasiopoulos
2016 J jnl
Comput. Speech Lang.
Hamid Reza Tohidypour, Seyed Mohammad Ahadi
2016 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Hamid Reza Tohidypour, Mahsa T. Pourazad, Panos Nasiopoulos
2016 J jnl
IEEE Trans. Multim.
Hamid Reza Tohidypour, Mahsa T. Pourazad, Panos Nasiopoulos
2016 J jnl
Signal Image Video Process.
Hamid Reza Tohidypour, Amin Banitalebi-Dehkordi
2015 C conf
ICCE
Hamid Reza Tohidypour, Mahsa T. Pourazad, Panos Nasiopoulos, Jim Slevinsky
2015 B conf
QoMEX
Maryam Azimi, Ronan Boitard, Basak Oztas, Stelios E. Ploumis, Hamid Reza Tohidypour, Mahsa T. Pourazad, Panos Nasiopoulos
2014 J jnl
IEEE Trans. Inf. Forensics Secur.
Mohsen Zareian, Hamid Reza Tohidypour
2014 Misc conf
ICASSP
Hamid Reza Tohidypour, Mahsa T. Pourazad, Panos Nasiopoulos
2014 C conf
ICCE
Hamid Reza Tohidypour, Mahsa T. Pourazad, Panos Nasiopoulos
2013 conf
DSP
Hamid Reza Tohidypour, Mahsa T. Pourazad, Panos Nasiopoulos, Victor C. M. Leung
2013 Misc conf
ICASSP
Mohsen Zareian, Hamid Reza Tohidypour, Z. Jane Wang
2013 Misc conf
ICASSP
Hamid Reza Tohidypour, Mahsa T. Pourazad, Panos Nasiopoulos
2013 conf
BCI
Hamid Reza Tohidypour, Hossein Bashashati, Mahsa T. Pourazad, Panos Nasiopoulos
2013 J jnl
IET Image Process.
Mohsen Zareian, Hamid Reza Tohidypour
2012 J jnl
Speech Commun.
Hamid Reza Tohidypour, Seyyed Ali Seyyedsalehi, Hossein Behbood, Hossein Roshandel
2012 J jnl
Neural Comput. Appl.
Hossein Behbood, Seyyed Ali Seyyedsalehi, Hamid Reza Tohidypour, Mojtaba Najafi, Shahriar Gharibzadeh
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.")