Vilmos Simon

38 papers B 1C 11Misc 1Journal 10Unranked 13
YearRankTypeTitle / Venue / Authors
2026 J jnl
Big Data Res.
Norman Bereczki, Vilmos Simon
2025 C conf
VEHITS
Mohammad Bawaneh, Vilmos Simon
2025 C conf
VEHITS
Aram Nasser, Vilmos Simon
2023 J jnl
Concurr. Comput. Pract. Exp.
Mohammad Bawaneh, Vilmos Simon
2022 ch.
Artificial Intelligence, Machine Learning, and Optimization Tools for Smart Cities
Attila Matyas Nagy, Vilmos Simon
2021 C conf
WOWMOM
Aram Nasser, Vilmos Simon
2021 J jnl
Pervasive Mob. Comput.
Attila Matyas Nagy, Vilmos Simon
2021 J jnl
Adv. Eng. Informatics
Attila Matyas Nagy, Vilmos Simon
2019 Misc conf
SoftCOM
Mohammad Bawaneh, Vilmos Simon
2018 C conf
FedCSIS
Bernát Wiandt, Vilmos Simon
2018 C conf
FedCSIS
Attila Matyas Nagy, Vilmos Simon
2018 J jnl
Pervasive Mob. Comput.
Attila Matyas Nagy, Vilmos Simon
2017 conf
EUROCON
Bernát Wiandt, Vilmos Simon, András Kokuti
2016 conf
ISC2
Attila Matyas Nagy, Vilmos Simon
2016 C conf
FedCSIS
András Kokuti, Vilmos Simon, Bernát Wiandt
2015 J jnl
Scalable Comput. Pract. Exp.
Bernát Wiandt, András Kokuti, Vilmos Simon
2015 C conf
MoMM
Ármin Petkovics, Vilmos Simon, István Gódor, Bence Böröcz
2015 J jnl
Telecommun. Syst.
Vilmos Simon, András Kokuti
2013 conf
SASO Workshops
András Kokuti, Vilmos Simon, Bernát Wiandt
2013 conf
SASO Workshops
Bernát Wiandt, Vilmos Simon, András Kokuti, Jacob Beal
2012 conf
CSNDSP
András Kokuti, Vilmos Simon
2012 ch.
Biologically Inspired Networking and Sensing
Endre Sándor Varga, Bernát Wiandt, Borbála Katalin Benko, Vilmos Simon
2012 conf
EUNICE
Bernát Wiandt, Vilmos Simon, Endre Sándor Varga
2012 conf
TSP
András Kokuti, Vilmos Simon
2011 conf
VTC Spring
Minh Tri Tran, Vilmos Simon
2011 C conf
MoMM
Minh Tri Tran, Vilmos Simon
2010 conf
ICARIS
Borbala Katalin Benko, Vilmos Simon
2010 C conf
iiWAS
Vilmos Simon, Endre Varga
2009 J jnl
J. Mobile Multimedia
Vilmos Simon, László Bokor, Sándor Imre
2009 conf
BIONETICS
Iacopo Carreras, Louay Bassbouss, David Linner, Heiko Pfeffer, Vilmos Simon, Endre Varga, Daniel Schreckling, Jyrki Huusko, Helena Rivas
2009 B conf
WiOpt
Vilmos Simon, Márton Bérces, Endre Varga, László Bacsárdi
2008 conf
VALUETOOLS
Ahmad Al Hanbali, Mouhamad Ibrahim, Vilmos Simon, Endre Varga, Iacopo Carreras
2007 J jnl
Mob. Inf. Syst.
Vilmos Simon, Sándor Imre
2007 J jnl
Int. J. Bus. Data Commun. Netw.
Vilmos Simon, Sándor Imre
2007 C conf
MoMM
Vilmos Simon, László Bokor, Sándor Imre
2007 conf
MWCN
Vilmos Simon, László Bacsárdi, Endre Varga, Tibor Csvorics, Márton Bérces, Sándor Szabó, Sándor Imre
2006 C conf
MoMM
Vilmos Simon, Sándor Imre
2003 conf
Euro-Par
Vilmos Simon, Árpád Huszák, Sándor Szabó, Sándor Imre
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.")