Maciej Drozdowski

81 papers C 1Misc 5Journal 59Unranked 13
YearRankTypeTitle / Venue / Authors
2026 J jnl
Future Gener. Comput. Syst.
Maciej Drozdowski, Jakub Wawrzyniak, Jakub Marszalkowski
2026 J jnl
Eur. J. Oper. Res.
Jakub Wawrzyniak, Maciej Drozdowski, Eric Sanlaville
2024 J jnl
CoRR
Maciej Drozdowski
2024 J jnl
Int. Trans. Oper. Res.
Jakub Wawrzyniak, Maciej Drozdowski, Eric Sanlaville, Yoann Pigné, Frédéric Guinand
2024 conf
PPAM (2)
Maciej Drozdowski, Jakub Wawrzyniak, Jakub Marszalkowski
2023 C conf
FedCSIS
Maciej Drozdowski, Joanna Berlinska, Thomas G. Robertazzi
2022 J jnl
Int. J. Appl. Math. Comput. Sci.
Jakub Wawrzyniak, Maciej Drozdowski, Eric Sanlaville
2022 J jnl
Comput. Ind. Eng.
Kamil Piechowiak, Maciej Drozdowski, Eric Sanlaville
2022 conf
DEXA (1)
Witold Andrzejewski, Jedrzej Potoniec, Maciej Drozdowski, Jerzy Stefanowski, Robert Wrembel, Pawel Stapf
2022 J jnl
CoRR
Witold Andrzejewski, Jedrzej Potoniec, Maciej Drozdowski, Jerzy Stefanowski, Robert Wrembel, Pawel Stapf
2021 J jnl
Discret. Appl. Math.
Mathilde Vernet, Maciej Drozdowski, Yoann Pigné, Eric Sanlaville
2021 J jnl
CoRR
Thomas G. Robertazzi, Maciej Drozdowski
2021 J jnl
J. Sched.
Maciej Drozdowski, Natalia V. Shakhlevich
2020 J jnl
Eur. J. Oper. Res.
Jakub Wawrzyniak, Maciej Drozdowski, Eric Sanlaville
2020 J jnl
J. Parallel Distributed Comput.
Jedrzej M. Marszalkowski, Maciej Drozdowski, Gaurav Singh
2019 conf
PPAM (1)
Maciej Drozdowski, Gaurav Singh, Jedrzej M. Marszalkowski
2018 J jnl
Parallel Comput.
Joanna Berlinska, Maciej Drozdowski
2017 J jnl
Eng. Appl. Artif. Intell.
Jakub Marszalkowski, Dariusz Mokwa, Maciej Drozdowski, Lukasz Rusiecki, Hubert Narozny
2017 J jnl
Oper. Res.
Maciej Drozdowski, Florian Jaehn, Radoslaw Paszkowski
2017 conf
PPAM (1)
Witold Andrzejewski, Maciej Drozdowski, Gang Mu, Yong-Chao Sun
2016 J jnl
ACM Trans. Web
Jakub Marszalkowski, Jan Mizgajski, Dariusz Mokwa, Maciej Drozdowski
2016 J jnl
J. Grid Comput.
Jedrzej M. Marszalkowski, Maciej Drozdowski, Jakub Marszalkowski
2015 conf
PPAM (2)
Maciej Drozdowski, Jedrzej M. Marszalkowski
2015 J jnl
J. Sched.
Iwo Bladek, Maciej Drozdowski, Frédéric Guinand, Xavier Schepler
2015 J jnl
RAIRO Oper. Res.
Joanna Berlinska, Maciej Drozdowski
2014 J jnl
J. Web Eng.
Jakub Marszalkowski, Jedrzej M. Marszalkowski, Maciej Drozdowski
2014 J jnl
Future Gener. Comput. Syst.
Maciej Drozdowski, Jedrzej M. Marszalkowski, Jakub Marszalkowski
2014 J jnl
J. Heuristics
Maciej Drozdowski, Dawid Kowalski, Jan Mizgajski, Dariusz Mokwa, Grzegorz Pawlak
2014 conf
ICE-B
Jakub Marszalkowski, Lukasz Rusiecki, Maciej Drozdowski, Hubert Narozny
2013 J jnl
Eur. J. Oper. Res.
Jakub Marszalkowski, Maciej Drozdowski
2012 conf
LION
Tomasz Cichowicz, Maciej Drozdowski, Michal Frankiewicz, Grzegorz Pawlak, Filip Rytwinski, Jacek Wasilewski
2012 J jnl
Comput. Oper. Res.
Maciej Drozdowski, Dawid Kowalski, Jan Mizgajski, Dariusz Mokwa, Grzegorz Pawlak
2011 conf
PPAM (2)
Maciej Drozdowski, Pawel Marciniak, Grzegorz Pawlak, Maciej Plaza
2011 J jnl
J. Sched.
Jacek Blazewicz, Maciej Drozdowski, Graham Kendall, Barry McCollum
2011 J jnl
J. Parallel Distributed Comput.
Joanna Berlinska, Maciej Drozdowski
2010 J jnl
Parallel Comput.
Joanna Berlinska, Maciej Drozdowski
2010 J jnl
IEEE Trans. Parallel Distributed Syst.
Maciej Drozdowski, Lukasz Wielebski
2009 conf
PPAM (2)
Maciej Drozdowski
2009 J jnl
J. Comput. Appl. Math.
Joanna Berlinska, Maciej Drozdowski, Marcin Lawenda
2009 book
Maciej Drozdowski
2008 J jnl
J. Sched.
Maciej Drozdowski, Marcin Lawenda
2007 Misc conf
PPAM
Maciej Drozdowski, Marcin Lawenda
2007 J jnl
Concurr. Comput. Pract. Exp.
Maciej Drozdowski, Marcin Lawenda
2006 J jnl
Eur. J. Oper. Res.
Maciej Drozdowski, Pawel Wolniewicz
2006 J jnl
Int. J. High Perform. Comput. Appl.
Maciej Drozdowski, Marcin Lawenda, Frédéric Guinand
2005 J jnl
J. Sched.
Maciej Drozdowski, Denis Trystram
2005 Misc conf
PPAM
Maciej Drozdowski, Marcin Lawenda
2005 conf
Euro-Par
Maciej Drozdowski, Marcin Lawenda
2005 J jnl
J. Sched.
Maciej Drozdowski, Denis Trystram
2004 J jnl
J. Parallel Distributed Comput.
Maciej Drozdowski, Pawel Wolniewicz
2004 ch.
Handbook of Scheduling
Maciej Drozdowski
2003 J jnl
Clust. Comput.
Maciej Drozdowski, Pawel Wolniewicz
2003 Misc conf
PPAM
Maciej Drozdowski, Lukasz Wielebski
2003 J jnl
IEEE Trans. Parallel Distributed Syst.
Maciej Drozdowski, Pawel Wolniewicz
2003 J jnl
Eur. J. Oper. Res.
Jacek Blazewicz, Paolo Dell'Olmo, Maciej Drozdowski, Przemyslaw Maczka
2002 conf
Euro-Par
Maciej Drozdowski, Ioannis Milis, Larry Rudolph, Denis Trystram
2002 J jnl
RAIRO Oper. Res.
Jacek Blazewicz, Paolo Dell'Olmo, Maciej Drozdowski
2001 Misc conf
PPAM
Maciej Drozdowski
2001 Misc conf
PPAM
Pawel Wolniewicz, Maciej Drozdowski
2000 conf
Euro-Par
Maciej Drozdowski, Pawel Wolniewicz
2000 ch.
Handbook on Parallel and Distributed Processing
Jacek Blazewicz, Maciej Drozdowski, Klaus Ecker
2000 J jnl
Comput. Oper. Res.
Maciej Drozdowski, Paolo Dell'Olmo
2000 J jnl
Parallel Comput.
Jacek Blazewicz, Maciej Drozdowski, Piotr Formanowicz, Wieslaw Kubiak, Günter Schmidt
1999 J jnl
Parallel Comput.
Jacek Blazewicz, Maciej Drozdowski, Mariusz Markiewicz
1999 J jnl
Discret. Appl. Math.
Jacek Blazewicz, Maciej Drozdowski, Frédéric Guinand, Denis Trystram
1999 J jnl
Parallel Comput.
Maciej Drozdowski, Wodzimierz Gazek
1999 J jnl
Ann. Oper. Res.
Maciej Drozdowski, Wieslaw Kubiak
1997 J jnl
Discret. Appl. Math.
Jacek Blazewicz, Maciej Drozdowski
1997 J jnl
Discret. Appl. Math.
Lucio Bianco, Jacek Blazewicz, Paolo Dell'Olmo, Maciej Drozdowski
1997 J jnl
Ann. Oper. Res.
Lucio Bianco, Jacek Blazewicz, Paolo Dell'Olmo, Maciej Drozdowski
1996 J jnl
Discret. Appl. Math.
Jacek Blazewicz, Maciej Drozdowski, Dominique de Werra, Jan Weglarz
1996 J jnl
Inf. Process. Lett.
Maciej Drozdowski
1995 J jnl
Parallel Comput.
Jacek Blazewicz, Maciej Drozdowski
1995 J jnl
Ann. Oper. Res.
Lucio Bianco, Jacek Blazewicz, Paolo Dell'Olmo, Maciej Drozdowski
1994 J jnl
Inf. Process. Lett.
Jacek Blazewicz, Paolo Dell'Olmo, Maciej Drozdowski, Maria Grazia Speranza
1994 J jnl
Parallel Comput.
Jacek Blazewicz, Maciej Drozdowski, Günter Schmidt, Dominique de Werra
1994 J jnl
Perform. Evaluation
Lucio Bianco, Jacek Blazewicz, Paolo Dell'Olmo, Maciej Drozdowski
1993 J jnl
Inf. Process. Lett.
Lucio Bianco, Jacek Blazewicz, Paolo Dell'Olmo, Maciej Drozdowski
1993 conf
PARCO
Jacek Blazewicz, Maciej Drozdowski, Günter Schmidt, Dominique de Werra
1992 J jnl
Inf. Process. Lett.
Jacek Blazewicz, Paolo Dell'Olmo, Maciej Drozdowski, Maria Grazia Speranza
1990 J jnl
Discret. Appl. Math.
Jacek Blazewicz, Maciej Drozdowski, Günter Schmidt, Dominique de Werra
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.")