Ilkyeong Moon

94 papers Journal 78Unranked 13
YearRankTypeTitle / Venue / Authors
2026 J jnl
Int. Trans. Oper. Res.
Young-Bin Woo, Ilkyeong Moon
2026 J jnl
Appl. Soft Comput.
Chungkwon Oh, Ilkyeong Moon
2025 J jnl
Int. J. Prod. Res.
Seongbae Jo, Ilkyeong Moon
2025 J jnl
Int. Trans. Oper. Res.
Jongmin Lee, Ilkyeong Moon
2025 J jnl
Int. Trans. Oper. Res.
Jungmin Kim, Apurba Manna, Arindam Roy, Ilkyeong Moon
2025 J jnl
Int. J. Prod. Res.
Keon-woo Park, Seongbae Jo, Youngchul Shin, Ilkyeong Moon
2025 conf
APMS (6)
Jiyeon Lee, Ilkyeong Moon
2025 J jnl
Ann. Oper. Res.
Yoon Jea Jeong, Gwang Kim, Ilkyeong Moon
2025 J jnl
Int. J. Prod. Res.
Minjeong Kim, Ilkyeong Moon
2025 J jnl
IEEE Trans. Intell. Transp. Syst.
Ruiyou Zhang, Haiyu Kan, Ilkyeong Moon
2024 J jnl
Eng. Appl. Artif. Intell.
Seongbae Jo, Gyu M. Lee, Ilkyeong Moon
2024 J jnl
IEEE Trans. Engineering Management
Youngchul Shin, Young-Bin Woo, Ilkyeong Moon
2024 J jnl
Comput. Ind. Eng.
Joonhwa Jeong, Ilkyeong Moon
2024 J jnl
Int. J. Prod. Res.
Junhyeok Lee, Chang Seong Ko, Ilkyeong Moon
2024 J jnl
Int. Trans. Oper. Res.
Zhujun Liu, Ilkyeong Moon, Ruiyou Zhang
2024 J jnl
Int. Trans. Oper. Res.
Dongwook Kim, Ilkyeong Moon
2024 J jnl
Comput. Ind. Eng.
Jongmin Lee, Ilkyeong Moon
2024 J jnl
Int. J. Prod. Res.
Xuehao Feng, Baolin Wen, Wenming Shi, Ilkyeong Moon
2024 J jnl
Comput. Oper. Res.
Youngsoo Park, Chang Seong Ko, Ilkyeong Moon
2023 conf
APMS (3)
Sungbae Jo, Ilkyeong Moon
2023 J jnl
Comput. Ind. Eng.
Amalesh Kumar Manna, Subhajit Das, Ali Akbar Shaikh, Asoke Kumar Bhunia, Ilkyeong Moon
2023 J jnl
IEEE Trans. Intell. Transp. Syst.
Young Soo Park, Sangyoon Lee, Inkyung Sung, Peter Nielsen, Ilkyeong Moon
2023 J jnl
Reliab. Eng. Syst. Saf.
Guesik Cha, Junseok Park, Ilkyeong Moon
2023 J jnl
Eng. Appl. Artif. Intell.
Arindam Roy, Samir Maity, Ilkyeong Moon
2023 conf
APMS (4)
Sewon Oh, Junseok Park, Juyoung Kim, Alex Yoosuk Kim, Ilkyeong Moon
2023 J jnl
Oper. Res.
Ata Allah Taleizadeh, Fatemeh Aboutorabian, Rojin Moradi, Ilkyeong Moon, Navid Mohamadi
2022 J jnl
IEEE Trans. Engineering Management
Hamid Zarei, Morteza Rasti Barzoki, Ilkyeong Moon
2022 J jnl
Appl. Soft Comput.
Junhyeok Lee, Kyungsik Lee, Ilkyeong Moon
2022 conf
APMS (1)
Young-Bin Woo, Ilkyeong Moon
2022 J jnl
Simul. Model. Pract. Theory
Dae H. Kim, Young Soo Park, Hyunwoo Kim, Kun Soo Park, Ilkyeong Moon
2022 J jnl
Comput. Ind. Eng.
Arindam Roy, Apurba Manna, Jungmin Kim, Ilkyeong Moon
2022 J jnl
IEEE Trans. Intell. Transp. Syst.
Decheng Wang, Ilkyeong Moon, Ruiyou Zhang
2022 J jnl
Int. Trans. Oper. Res.
Youngchul Shin, Chang Seong Ko, Ilkyeong Moon
2022 conf
APMS (1)
Subrata Saha, Izabela Ewa Nielsen, Ilkyeong Moon
2021 J jnl
J. Oper. Res. Soc.
Sangyoon Lee, Hyunwoo Kim, Ilkyeong Moon
2021 J jnl
Comput. Oper. Res.
Jongmin Lee, Gwang Kim, Ilkyeong Moon
2021 ch.
IFIP's Exciting First 60+ Years
David Romero, Gregor von Cieminski, Thorsten Wuest, Paolo Gaiardelli, Ilkyeong Moon, Giuditta Pezzotta, Stefan A. Wiesner, Marco Macchi, Jannicke Baalsrud Hauge, Irene Roda, Daryl Powell, Torbjørn H. Netland, Boonserm (Serm) Kulvatunyou, Nick Szirbik, Christoph Roser, Erlend Alfnes, Martin Rudberg
2021 conf
APMS (3)
Arindam Roy, Apurba Manna, Jungmin Kim, Ilkyeong Moon
2021 conf
APMS (1)
Junhyeok Lee, Junseok Park, Ilkyeong Moon
2021 J jnl
Comput. Ind. Eng.
Young-Bin Woo, Ilkyeong Moon, Byung Soo Kim
2021 J jnl
Comput. Ind. Eng.
Subrata Saha, Izabela Ewa Nielsen, Ilkyeong Moon
2020 J jnl
J. Oper. Res. Soc.
Young-Soo Myung, Ilkyeong Moon
2020 J jnl
Oper. Res.
Ilkyeong Moon, Yoon Jea Jeong, Subrata Saha
2020 J jnl
Ann. Oper. Res.
Ata Allah Taleizadeh, Bita Hazarkhani, Ilkyeong Moon
2020 J jnl
Appl. Soft Comput.
Gwang Kim, Ilkyeong Moon
2020 J jnl
Comput. Ind. Eng.
Gwang Kim, Ilkyeong Moon
2020 J jnl
Eur. J. Oper. Res.
Sangyoon Lee, Ilkyeong Moon
2020 J jnl
Int. J. Prod. Res.
Katsuhiko Takahashi, Kazuyoshi Ishii, Chin-Yin Huang, Ilkyeong Moon, Bhaskar M. Bhandarkar, The Jin Ai, Tak Nam Wong
2020 J jnl
Comput. Oper. Res.
Young Soo Park, Peter Nielsen, Ilkyeong Moon
2020 J jnl
Int. Trans. Oper. Res.
Hyejung Koo, Ilkyeong Moon
2019 J jnl
Ann. Oper. Res.
Kartick Dey, Debajyoti Chatterjee, Subrata Saha, Ilkyeong Moon
2019 J jnl
Appl. Soft Comput.
Ata Allah Taleizadeh, Pooya Pourrezaie Khaligh, Ilkyeong Moon
2019 J jnl
Comput. Oper. Res.
Youngchul Shin, Sungwoo Kim, Ilkyeong Moon
2019 J jnl
Ann. Oper. Res.
Dongwook Kim, Kyungsik Lee, Ilkyeong Moon
2019 J jnl
Neural Comput. Appl.
Yohanes Khosiawan, Young Soo Park, Ilkyeong Moon, Janardhanan Mukund Nilakantan, Izabela Nielsen
2019 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Sungwoo Kim, Ilkyeong Moon
2019 conf
APMS (2)
Young Soo Park, Ilkyeong Moon
2018 ed.
APMS (1)
Ilkyeong Moon, Gyu M. Lee, Jinwoo Park, Dimitris Kiritsis, Gregor von Cieminski
2018 ed.
APMS (2)
Ilkyeong Moon, Gyu M. Lee, Jinwoo Park, Dimitris Kiritsis, Gregor von Cieminski
2018 J jnl
Comput. Ind. Eng.
Jeongmin Gu, Yanjie Zhou, Amrit Das, Ilkyeong Moon, Gyu M. Lee
2018 conf
APMS (1)
Ilkyeong Moon, Qian-Ru Shen, Xuehao Feng
2017 J jnl
Optim. Methods Softw.
Xuehao Feng, Yuna Lee, Ilkyeong Moon
2017 J jnl
Eur. J. Oper. Res.
Ilkyeong Moon, Kun Soo Park, Jing Hao, Dongwook Kim
2017 conf
APMS (1)
Sungwoo Kim, Young Soo Park, Kihyun Lee, Ilkyeong Moon
2016 J jnl
J. Intell. Manuf.
Ilkyeong Moon, Sanghyup Lee, Moonsoo Shin, Kwangyeol Ryu
2016 conf
KES-IDT (1)
Young Soo Park, Yohanes Khosiawan, Ilkyeong Moon, Mukund Nilakantan Janardhanan, Izabela Nielsen
2016 J jnl
CoRR
Yohanes Khosiawan, Young Soo Park, Ilkyeong Moon, Janardhanan Mukund Nilakantan, Izabela Nielsen
2015 conf
APMS (2)
Dongwook Kim, Jinwoo Park, Ilkyeong Moon
2015 J jnl
Comput. Ind. Eng.
Xuehao Feng, Ilkyeong Moon, Kwangyeol Ryu
2014 J jnl
Expert Syst. Appl.
Jeong-Hun Lee, Ilkyeong Moon
2014 J jnl
Oper. Res. Lett.
Young-Soo Myung, Ilkyeong Moon
2014 J jnl
OR Spectr.
Ilkyeong Moon, Thi Viet Ly Nguyen
2014 conf
APMS (1)
Ilkyeong Moon, Sanghoon Shin, Dongwook Kim
2014 J jnl
Appl. Math. Comput.
Ilkyeong Moon, Eunjoo Shin, Biswajit Sarkar
2014 J jnl
Inf. Sci.
Hyerim Bae, Sanghyup Lee, Ilkyeong Moon
2012 J jnl
Appl. Math. Comput.
Kyungdaw Kang, Ilkyeong Moon, Hongfeng Wang
2012 J jnl
Inf. Sci.
Hongfeng Wang, Ilkyeong Moon, Shengxiang Yang, Dingwei Wang
2012 J jnl
Expert Syst. Appl.
Ilkyeong Moon, Jeong-Hun Lee, June Seong
2011 J jnl
Appl. Math. Comput.
Biswajit Sarkar, Ilkyeong Moon
2010 J jnl
OR Spectr.
Ilkyeong Moon, Anh-Dung Do Ngoc, Yun-Su Hur
2008 J jnl
Appl. Math. Comput.
Mithun J. Sharma, Ilkyeong Moon, Hyerim Bae
2006 J jnl
Eur. J. Oper. Res.
Ilkyeong Moon, Bibhas Chandra Giri, Byungsung Ko
2005 J jnl
Eur. J. Oper. Res.
Ilkyeong Moon, Bibhas Chandra Giri, Byungsung Ko
2002 J jnl
J. Oper. Res. Soc.
Ilkyeong Moon, B. C. Giri, K. Choi
2001 J jnl
J. Oper. Res. Soc.
Ilkyeong Moon, Bibhas Chandra Giri
2001 J jnl
Eur. J. Oper. Res.
Edward A. Silver, Ilkyeong Moon
2000 J jnl
Eur. J. Oper. Res.
Ilkyeong Moon, Suyeon Lee
2000 J jnl
J. Oper. Res. Soc.
Ilkyeong Moon, Edward A. Silver
1999 J jnl
J. Oper. Res. Soc.
Edward A. Silver, Ilkyeong Moon
1998 J jnl
Comput. Oper. Res.
Ilkyeong Moon, Sangjin Choi
1998 J jnl
J. Oper. Res. Soc.
Ilkyeong Moon, S. Kang
1998 J jnl
J. Oper. Res. Soc.
Won-Young Yun, Ilkyeong Moon
1996 J jnl
Comput. Oper. Res.
Guillermo Gallego, Ilkyeong Moon
1992 J jnl
Oper. Res.
Guillermo Gallego, Ilkyeong Moon
redb/extractors/decompiler/_archive/DecompileGhidra-old.py
← Index redb/extractors/decompiler/_archive/DecompileGhidra-old.py python
from hashlib import sha256
import inspect
from pathlib import Path
import subprocess
import json
import subprocess
import json
import os
import tempfile
import uuid
import shutil
import time

from dotenv import load_dotenv

from redb.extractors.enum import Tag
from redb.models.dataclasses import Decompiled
from redb.extractors.extractor import Extractor


class DecompileGhidra(Extractor):
    def __init__(
        self,
        filepath,
        log,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
    ):
        super().__init__(
            filepath, log, index_prefix, elastic_index, known_benign, known_malicious
        )
        self.log.debug(inspect.currentframe().f_code.co_name)
        self.elastic_index = self.index_prefix + "-ghidra"
        self.ghidra_path = "/opt/ghidra"
        self.java_script_path = (
            self.ghidra_path
            + "/Ghidra/Features/Base/ghidra_scripts/GhidraDecompilerScript.java"
        )
        self.decompiled = None
        load_dotenv()
        self.decompiled_folder = os.getenv("DECOMPILED_FOLDER", "/opt/decompiled")
        self.log.debug(f"Decompiled folder: {self.decompiled_folder}")

    def run_command(self, cmd, env=None):
        try:
            self.log.info(f"Starting command: {' '.join(cmd)}")
            start_time = time.time()
            TIMEOUT = 1200  # 20 minutes in seconds
            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
            try:
                stdout, stderr = process.communicate(timeout=TIMEOUT)
            except subprocess.TimeoutExpired:
                process.kill()
                self.log.error(f"Ghidra timed out after {TIMEOUT} seconds")
                # raise subprocess.TimeoutExpired(process.args, TIMEOUT)
                return None
            end_time = time.time()

            self.log.debug(
                f"Command finished. Execution time: {end_time - start_time:.2f} seconds"
            )
            self.log.debug(f"Return code: {process.returncode}")

            if process.returncode != 0:
                self.log.error(f"Error output:\n{stderr}")
                return None
            return stdout
        except Exception as e:
            self.log.error(f"Error running command {' '.join(cmd)}: {e}")
            return None

    def analyze_binary(self):
        self.log.debug(f"Ghidra path: {self.ghidra_path}")
        self.log.debug(f"Binary path: {self.filepath}")
        self.log.debug(f"Java script path: {self.java_script_path}")

        # Check if Java script exists
        if not os.path.exists(self.java_script_path):
            self.log.error(f"Error: Java script not found at {self.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', '')}"
        env["DECOMPILED_FOLDER"] = self.decompiled_folder

        # Print environment variables for debugging
        self.log.debug(f"JAVA_HOME: {env['JAVA_HOME']}")
        self.log.debug(f"PATH: {env['PATH']}")
        self.log.debug(f"LD_LIBRARY_PATH: {env['LD_LIBRARY_PATH']}")

        # Check Ghidra installation
        analyzeHeadless_path = f"{self.ghidra_path}/support/analyzeHeadless"
        self.log.debug(
            f"analyzeHeadless exists: {os.path.exists(analyzeHeadless_path)}"
        )

        # Create a temporary project directory
        project_path = tempfile.gettempdir() + "/ghidra_" + str(uuid.uuid4())
        os.makedirs(project_path, exist_ok=True)
        self.log.debug(f"Created temporary project path: {project_path}")
        output_file = ""

        try:
            # Run Ghidra's headless analyzer
            analyze_cmd = [
                analyzeHeadless_path,
                project_path,
                "TempProject",
                "-import",
                self.filepath,
                "-postScript",
                self.java_script_path,
                self.sha256,
                "-deleteProject",
            ]

            result = self.run_command(analyze_cmd, env=env)
            if result is None:
                return None

            # Read the output JSON file
            output_file = os.path.join(
                self.decompiled_folder, self.sha256 + "-decompiled.json"
            )
            if os.path.exists(output_file):
                with open(output_file, "r") as f:
                    functions = json.load(f)
                return functions
            else:
                self.log.error(
                    f"Output file {output_file} not found. Ghidra analysis may have failed."
                )
                return None
        finally:
            # Clean up
            if os.path.exists(project_path):
                shutil.rmtree(project_path)
                self.log.debug(f"Deleted temporary project path: {project_path}")

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            functions = self.analyze_binary()

            if functions:
                self.log.info(f"Extracted functions from {self.filepath}:")
                for func in functions:
                    id = sha256(func["address"].encode()).hexdigest()
                    self.decompiled = Decompiled(
                        _id=id,
                        decompiled_function_name=func["name"],
                        decompiled_function_address=func["address"],
                        decompiled_function=func["decompiled"],
                    )
                    self.export_to_elastic([self.decompiled])
            else:
                self.log.error("No decompiled functions extracted.")
            return True
        except Exception as e:
            self.log.error(f"Error extracting decompiled information: {e}")
            return None

    def tag(self):
        return Tag.DECOMPILED.value