Jaehun Lee

48 papers A* 2A 1B 5Misc 1Journal 24Unranked 15
YearRankTypeTitle / Venue / Authors
2025 A conf
WACV
Daniel Kim, Mohammed A. Al-masni, Jaehun Lee, Dong-Hyun Kim, Kanghyun Ryu
2025 J jnl
Int. J. Softw. Tools Technol. Transf.
Jaehun Lee, Kyungmin Bae, Peter Csaba Ölveczky
2025 J jnl
Comput. Medical Imaging Graph.
Jaehun Lee, Daniel Kim, Taehun Kim, Mohammed A. Al-masni, Yoseob Han, Dong-Hyun Kim, Kanghyun Ryu
2024 J jnl
Appl. Math. Comput.
Seunghee Cheon, Soobum Lee, Jaehun Lee
2024 conf
WISEC
Edward Kwao, Jaehun Lee, Jinmo Park, Byeongdo Hong, Taehoon Kim, Inkyu Bang
2024 conf
ISoLA (2)
Jaehun Lee, Kyungmin Bae, Peter Csaba Ölveczky
2023 J jnl
CoRR
Jaehun Lee, Kyeongsik Nam
2023 J jnl
Comput. Biol. Medicine
Muhammad Sohail, Jun Young Kim, Jaehyun Park, Heung Soo Kim, Jaehun Lee
2023 A* conf
ICML
Seunghyun Kim, Hyunsu Kim, EungGu Yun, Hwangrae Lee, Jaehun Lee, Juho Lee
2023 J jnl
CoRR
Seunghyun Kim, Hyunsu Kim, EungGu Yun, Hwangrae Lee, Jaehun Lee, Juho Lee
2023 J jnl
CoRR
Efthymia Tsamoura, Jaehun Lee, Jacopo Urbani
2023 J jnl
Proc. ACM Manag. Data
Efthymia Tsamoura, Jaehun Lee, Jacopo Urbani
2022 conf
ISoLA (3)
Jaehun Lee, Kyungmin Bae, Peter Csaba Ölveczky
2022 B conf
SMC
Mei Tu, Ziang Zhao, Jinting Wu, Jaehun Lee, Hwangrae Lee, Jinwoo Song
2022 J jnl
Int. J. Softw. Tools Technol. Transf.
Jaehun Lee, Kyungmin Bae, Peter Csaba Ölveczky, Sharon Kim, Minseok Kang
2022 B conf
IEEE Big Data
Changhyub Woo, Byunghyun Kim, Jaehun Lee, Buhwan Jeong, Jinwoo Song, Carlo Allocca, Rohit Ail
2021 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Jaehun Lee, Songcheol Hong
2021 B conf
ESWC
Jiaoyan Chen, Ernesto Jiménez-Ruiz, Ian Horrocks, Denvar Antonyrajah, Ali Hadian, Jaehun Lee
2021 conf
IMW
Jaehun Lee, Youngcheon Jeong, Kyongsik Yeom, Changmin Jeon, Jongsung Woo, Sangjin Lee, Ga-Young Lee, Dong-Hwee Hwang, Yong Seok Chung, Minji Seo, Dong-Hyun Kim, DalHwan Kim, Yongsik Kim, HyunChang Lee, Soomin Cho, MyeongHee Oh, Hyun-Jin Shin, Gun Rae Kim, Sungyoung Yoon, Yong Kyu Lee, Young Ki Hong
2021 conf
CAV (1)
Jaehun Lee, Sharon Kim, Kyungmin Bae, Peter Csaba Ölveczky
2020 conf
ISWC (Demos/Industry)
Jaehun Lee, Taeho Hwang, Jungho Park, Yunsu Lee, Boris Motik, Ian Horrocks
2019 J jnl
Pervasive Mob. Comput.
Hochul Lee, Jaehun Lee, Young Choon Lee, Sooyong Kang
2019 conf
ESWC (Satellite Events)
Sungmin Yi, Soo-Hyung Kim, Jungho Park, Taeho Hwang, Jaehun Lee, Yunsu Lee
2019 J jnl
Pervasive Mob. Comput.
Hochul Lee, Jaehun Lee, Young Choon Lee, Hyuck Han, Sooyong Kang
2018 conf
ISSCC
Qing Liu, Dae Hyun Kwon, Quang-Diep Bui, Jeong-Hyun Choi, Jaehun Lee, Sanghyun Baek, Seungchan Heo, Thomas Byunghak Cho
2018 conf
PerCom Workshops
Jaehun Lee, Hochul Lee, Byoungjun Seo, Min Kyung Chae, Young Choon Lee, Hyuck Han, Sooyong Kang
2018 A* conf
PerCom
Jaehun Lee, Hochul Lee, Byoungjun Seo, Young Choon Lee, Hyuck Han, Sooyong Kang
2017 conf
ISSCC
Venumadhav Bhagavatula, Dae Hyun Kwon, Jaehun Lee, Quang-Diep Bui, Jeong-Hyun Choi, Siuchuang-Ivan Lu, Sang Won Son
2017 B conf
CLOUD
Jaehun Lee, Hochul Lee, Young Choon Lee, Hyuck Han, Sooyong Kang
2016 conf
MobiSys (Companion Volume)
Jaehun Lee, Hochul Lee, Sooyong Kang, Young Choon Lee, Hyuck Han
2016 J jnl
Clust. Comput.
Jaehun Lee, Kihan Choi, Youngjin Kim, Hyuck Han, Sooyong Kang
2016 Misc conf
SAC
Hochul Lee, Jaehun Lee, Hyuck Han, Sooyong Kang
2016 J jnl
Eur. J. Comb.
Jernej Azarija, Sandi Klavzar, Jaehun Lee, Jay Pantone, Yoomi Rho
2015 J jnl
Expert Syst. Appl.
Jaehun Lee, Hyunbo Cho, Yong Seog Kim
2015 J jnl
Discret. Math. Theor. Comput. Sci.
Jernej Azarija, Sandi Klavzar, Jaehun Lee, Yoomi Rho
2015 conf
ICCAC
Kihan Choi, Jaehun Lee, Youngjin Kim, Sooyong Kang, Hyuck Han
2015 J jnl
Int. J. Comput. Integr. Manuf.
Jaehun Lee, Kiwook Jung, Bo Hyun Kim, Yun Peng, Hyunbo Cho
2014 B conf
TrustCom
Jaehun Lee, Sungmin Park, Minsoo Ryu, Sooyong Kang
2013 J jnl
Inf. Sci.
Jaehun Lee, Wooyong Chung, Euntai Kim
2013 conf
ICCE-Berlin
Jaehun Lee, Kihan Choi, Youngjin Kim, Sooyong Kang
2013 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Jaehun Lee, Baehoon Choi, Euntai Kim
2013 conf
APMS (1)
Jaehun Lee, Kiwook Jung, Bo Hyun Kim, Hyunbo Cho
2011 J jnl
Int. J. Fuzzy Log. Intell. Syst.
Jaehun Lee, Wooyong Chung, Euntai Kim
2011 J jnl
Comput. Commun.
Jaehun Lee, Wooyong Chung, Euntai Kim
2009 J jnl
Expert Syst. Appl.
Sukhyun Yun, Jaehun Lee, Wooyong Chung, Euntai Kim, Soohan Kim
2008 J jnl
IEICE Trans. Inf. Syst.
Jaehun Lee, Wooyong Chung, Euntai Kim
2006 conf
ISNN (1)
Jaehun Lee, Wooyong Chung, Euntai Kim
2006 J jnl
Int. J. Fuzzy Log. Intell. Syst.
Jaehun Lee, Byoun-Gyun Lee, Wooyong Chung, Eun-Tai Kim
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.")