Olena Tankyevych

20 papers B 2C 3Journal 6Unranked 8
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Numan Saeed, Salma Hassan, Shahad Hardan, Ahmed Aly, Darya Taratynova, Umair Nawaz, Ufaq Khan, Muhammad Ridzuan, Vincent Andrearczyk, Adrien Depeursinge, Yutong Xie, Thomas Eugene, Raphaël Metz, Mélanie Dore, Gregory Delpon, Vijay Ram Papineni, Kareem A. Wahid, Cem Dede, Alaa Mohamed Shawky Ali, Carlos Sjogreen, Mohamed A. Naser, Clifton D. Fuller, Valentin Oreiller, Mario Jreige, John O. Prior, Catherine Cheze Le Rest, Olena Tankyevych, Pierre Decazes, Su Ruan, Stephanie Tanadini-Lang, Martin Vallières, Hesham Elhalawani, Ronan Abgral, Romain Floch, Kevin Kerleguer, Ulrike Schick, Maelle Mauguen, David Bourhis, Jean-Christophe Leclere, Amandine Sambourg, Arman Rahmim, Mathieu Hatt, Mohammad Yaqub
2025 conf
ISBI
Ronrick Da-Ano, Olena Tankyevych, N. Lemée, I. Stamouli, G. Kagadis, T. Kalathas, K. Shi, J. Hu, H. Wang, Catherine Cheze Le Rest, Dimitris Visvikis
2024 conf
ISBI
Ronrick Da-Ano, Olena Tankyevych, Gustavo Andrade-Miranda, Pierre-Henri Conze, Catherine Cheze Le Rest, Dimitris Visvikis
2023 J jnl
Medical Image Anal.
Vincent Andrearczyk, Valentin Oreiller, Sarah Boughdad, Catherine Cheze Le Rest, Olena Tankyevych, Hesham Elhalawani, Mario Jreige, John O. Prior, Martin Vallières, Dimitris Visvikis, Mathieu Hatt, Adrien Depeursinge
2023 J jnl
Comput. Medical Imaging Graph.
Gustavo Andrade-Miranda, Vincent Jaouen, Olena Tankyevych, Catherine Cheze Le Rest, Dimitris Visvikis, Pierre-Henri Conze
2022 conf
HECKTOR@MICCAI
Vincent Andrearczyk, Valentin Oreiller, Moamen Abobakr, Azadeh Akhavanallaf, Panagiotis Balermpas, Sarah Boughdad, Leo Capriotti, Joël Castelli, Catherine Cheze Le Rest, Pierre Decazes, Ricardo Correia, Dina El-Habashy, Hesham Elhalawani, Clifton D. Fuller, Mario Jreige, Yomna Khamis, Agustina La Greca Saint-Esteven, Abdallah Sherif Radwan Mohamed, Mohamed A. Naser, John O. Prior, Su Ruan, Stephanie Tanadini-Lang, Olena Tankyevych, Yazdan Salimi, Martin Vallières, Pierre Vera, Dimitris Visvikis, Kareem A. Wahid, Habib Zaidi, Mathieu Hatt, Adrien Depeursinge
2019 J jnl
Comput. Biol. Medicine
Yasmina Chenoune, Olena Tankyevych, Fan Li, Michel Piotin, Raphaël Blanc, Eric Petit
2016 conf
ISBI
Vera Damerjian, Olena Tankyevych, Aziz Guellich, Thibaud Damy, Eric Petit
2015 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Benjamin Perret, Jean Cousty, Olena Tankyevych, Hugues Talbot, Nicolas Passat
2015 conf
EMBC
Fan Li, Olena Tankyevych, Yasmina Chenoune, Raphaël Blanc, Eric Petit
2014 C conf
IPAS
Saida Khachira, Fathi Kallel, Olena Tankyevych, Ahmed Ben Hamida
2013 J jnl
Medical Image Anal.
Alice Dufour, Olena Tankyevych, Benoît Naegel, Hugues Talbot, Christian Ronse, Joseph Baruthio, Petr Dokládal, Nicolas Passat
2013 conf
ISBI
Alice Dufour, Christian Ronse, Joseph Baruthio, Olena Tankyevych, Hugues Talbot, Nicolas Passat
2013 C conf
ISMM
Olena Tankyevych, Hugues Talbot, Nicolas Passat
2013 B conf
ICIP
T. A. Nguyen, Alice Dufour, Olena Tankyevych, Amir Nakib, Eric Petit, Hugues Talbot, Nicolas Passat
2010
Olena Tankyevych
2009 B conf
ICIP
Olena Tankyevych, Hugues Talbot, Petr Dokládal, Nicolas Passat
2009 C conf
ISMM
Olena Tankyevych, Hugues Talbot, Petr Dokládal, Nicolas Passat
2008 conf
ISBI
Olena Tankyevych, Hugues Talbot, Petr Dokládal
2007 conf
ISMM (2)
Olena Tankyevych, Laszlo Marak, Hugues Talbot, Petr Dokládal
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.")