Raluca Lefticaru

44 papers A 1B 2Misc 5Journal 16Unranked 20
YearRankTypeTitle / Venue / Authors
2025 conf
ACIT
Mohammad Rezaul Karim, Sohag Kabir, Ci Lei, Raluca Lefticaru
2025 J jnl
J. Membr. Comput.
Marian Gheorghe, Florentin Ipate, Kumar Kannan, Savas Konur, Lakshmanan Kuppusamy, Raluca Lefticaru, Anand Mahendran, Ionut-Mihai Niculescu
2023 J jnl
Theor. Comput. Sci.
Florentin Ipate, Ionut-Mihai Niculescu, Raluca Lefticaru, Savas Konur, Marian Gheorghe
2023 conf
UKCI
Mohammad Usmaan Ali, Raluca Lefticaru
2023 J jnl
Robotics Auton. Syst.
Manuel Núñez, Robert M. Hierons, Raluca Lefticaru
2023 conf
UKCI
Olatunji Azeez, Raluca Lefticaru
2021 J jnl
Theor. Comput. Sci.
Florentin Ipate, Marian Gheorghe, Raluca Lefticaru
2021 J jnl
J. Membr. Comput.
Marian Gheorghe, Raluca Lefticaru, Savas Konur, Ionut-Mihai Niculescu, Henry N. Adorna
2020 J jnl
Softw. Test. Verification Reliab.
Anthony J. H. Simons, Raluca Lefticaru
2020 J jnl
J. Syst. Softw.
Raluca Lefticaru, Robert M. Hierons, Manuel Núñez
2019 B conf
SEFM
Raluca Lefticaru, Robert M. Hierons, Manuel Núñez
2019 conf
TAP@FM
Ana Cavalcanti, James Baxter, Robert M. Hierons, Raluca Lefticaru
2018 conf
QRS Companion
Ana Turlea, Florentin Ipate, Raluca Lefticaru
2018 J jnl
Theor. Comput. Sci.
Marian Gheorghe, Rodica Ceterchi, Florentin Ipate, Savas Konur, Raluca Lefticaru
2018 conf
Int. Conf. on Membrane Computing
Marian Gheorghe, Florentin Ipate, Raluca Lefticaru, Ana Turlea
2017 Misc conf
SYNASC
Ana Turlea, Florentin Ipate, Raluca Lefticaru
2017 conf
Int. Conf. on Membrane Computing
Raluca Lefticaru, Mehmet Emin Bakir, Savas Konur, Mike Stannett, Florentin Ipate
2017 conf
iThings/GreenCom/CPSCom/SmartData
Raluca Lefticaru, Savas Konur, Ünal Yildirim, Amad Uddin, Felician Campean, Marian Gheorghe
2016 Misc conf
SYNASC
Ana Turlea, Florentin Ipate, Raluca Lefticaru
2016 conf
Int. Conf. on Membrane Computing
Raluca Lefticaru, Luis F. Macías-Ramos, Ionut-Mihai Niculescu, Laurentiu Mierla
2016 J jnl
Integr. Comput. Aided Eng.
Xueyuan Wang, Gexiang Zhang, Ferrante Neri, Tao Jiang, Junbo Zhao, Marian Gheorghe, Florentin Ipate, Raluca Lefticaru
2015 J jnl
Int. J. Comput. Commun. Control
Xueyuan Wang, Gexiang Zhang, Junbo Zhao, Haina Rong, Florentin Ipate, Raluca Lefticaru
2014 conf
ESOCC Workshops
Raluca Lefticaru, Anthony J. H. Simons
2013 J jnl
Int. J. Comput. Math.
Marian Gheorghe, Florentin Ipate, Raluca Lefticaru, Mario J. Pérez-Jiménez, Adrian Turcanu, Luis Valencia-Cabrera, Manuel García-Quismondo, Laurentiu Mierla
2013 conf
BIC-TA
Florentin Ipate, Raluca Lefticaru, Laurentiu Mierla, Luis Valencia-Cabrera, Han Huang, Gexiang Zhang, Ciprian Dragomir, Mario J. Pérez-Jiménez, Marian Gheorghe
2013 conf
Int. Conf. on Membrane Computing
Ciprian Dragomir, Florentin Ipate, Savas Konur, Raluca Lefticaru, Laurentiu Mierla
2012 J jnl
J. Univers. Comput. Sci.
Gexiang Zhang, Fen Zhou, Xiaoli Huang, Jixiang Cheng, Marian Gheorghe, Florentin Ipate, Raluca Lefticaru
2012 B conf
SEFM
Raluca Lefticaru, Florentin Ipate
2011 J jnl
Nat. Comput.
Raluca Lefticaru, Marian Gheorghe, Florentin Ipate
2011 J jnl
Int. J. Found. Comput. Sci.
Florentin Ipate, Raluca Lefticaru, Cristina Tudose
2011 conf
Int. Conf. on Membrane Computing
Florentin Ipate, Raluca Lefticaru, Ignacio Pérez-Hurtado, Mario J. Pérez-Jiménez, Cristina Tudose
2011 conf
ICSECS (3)
Ionut Dinca, Alin Stefanescu, Florentin Ipate, Raluca Lefticaru, Cristina Tudose
2011 J jnl
Int. J. Nat. Comput. Res.
Raluca Lefticaru, Cristina Tudose, Florentin Ipate
2011 conf
ICST Workshops
Alin Stefanescu, Florentin Ipate, Raluca Lefticaru, Cristina Tudose
2011 conf
NICSO
Cristina Tudose, Raluca Lefticaru, Florentin Ipate
2010 Misc conf
ICNC
Fen Zhou, Gexiang Zhang, Haina Rong, Marian Gheorghe, Jixiang Cheng, Florentin Ipate, Raluca Lefticaru
2010 conf
Int. Conf. on Membrane Computing
Marian Gheorghe, Florentin Ipate, Raluca Lefticaru, Ciprian Dragomir
2010 J jnl
J. Log. Algebraic Methods Program.
Florentin Ipate, Marian Gheorghe, Raluca Lefticaru
2009 conf
BCI
Raluca Lefticaru, Florentin Ipate, Cristina Tudose
2009 conf
Workshop on Membrane Computing
Raluca Lefticaru, Florentin Ipate, Marian Gheorghe, Gexiang Zhang
2008 Misc conf
SYNASC
Raluca Lefticaru, Florentin Ipate
2008 A conf
ICST
Raluca Lefticaru, Florentin Ipate
2008 conf
ICST Workshops
Raluca Lefticaru, Florentin Ipate
2007 Misc conf
SYNASC
Raluca Lefticaru, Florentin Ipate
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.")