Xiaokang Wang

57 papers Journal 56Unranked 1
YearRankTypeTitle / Venue / Authors
2025 J jnl
IEEE Trans. Computers
Xiaosong Peng, Laurence T. Yang, Xiaokang Wang, Debin Liu, Jie Li
2025 J jnl
IEEE Internet Things J.
Yuqi Zhu, Binjian Shen, Wei Wu, Xiaokang Wang
2025 J jnl
IEEE Trans. Emerg. Top. Comput. Intell.
Zhiying Song, Pengfei Wang, Xiaokang Wang, Nenggan Zheng
2025 J jnl
IEEE Trans. Serv. Comput.
Jing Yang, Xiaofen Wang, Laurence T. Yang, Yuan Gao, Shundong Yang, Xiaokang Wang
2025 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Guoxia Xu, Yang Liu, Lizhen Deng, Xiaokang Wang, Hu Zhu
2025 J jnl
Inf. Fusion
Songhe Yuan, Laurence T. Yang, Debin Liu, Xiaokang Wang, Jieming Yang
2025 J jnl
IEEE Trans. Ind. Informatics
Xiaokang Wang, Weiping Fang, Songhe Yuan, Lei Ren, Laurence T. Yang, M. Jamal Deen
2025 J jnl
IEEE Trans. Consumer Electron.
Debin Liu, Laurence T. Yang, Ruonan Zhao, Xiaokang Wang, Zhe Li, Honglu Zhao, Jinhua Cui
2024 J jnl
IEEE Trans. Comput. Biol. Bioinform.
Lizhen Deng, Yuxin Cao, Zhongyang Wang, Xiaokang Wang, Yu Wang
2024 J jnl
IEEE Internet Things J.
Xiaokang Wang, Laurence T. Yang, Dongdong Huo, Lei Ren, M. Jamal Deen
2024 J jnl
IEEE Netw.
Cen Chen, Yangfan Li, Qinyu Wang, XuLei Yang, Xiaokang Wang, Laurence T. Yang
2024 J jnl
IEEE Trans. Ind. Informatics
Lei Ren, Shixiang Li, Xiaokang Wang, Haiteng Wang, Yuanjun Laili
2024 J jnl
IEEE Trans. Cybern.
Lei Ren, Jiabao Dong, Lin Zhang, Yuanjun Laili, Xiaokang Wang, Yue Qi, Bo Hu Li, Lihui Wang, Laurence T. Yang, M. Jamal Deen
2024 J jnl
Distributed Ledger Technol. Res. Pract.
Xueqin Liang, Xiaokang Wang, Chonggang Wang, Witold Pedrycz
2023 J jnl
Int. J. Prod. Res.
Lei Ren, Yingjie Li, Xiaokang Wang, Jin Cui, Lin Zhang
2023 J jnl
J. Ambient Intell. Humaniz. Comput.
Sheng Ren, Yan He, Xiaokang Wang, Kehua Guo, Silvio Barra, Jianqi Li
2023 J jnl
IEEE Trans Autom. Sci. Eng.
Yuanjun Laili, Zelin Chen, Lei Ren, Xiaokang Wang, M. Jamal Deen
2023 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Xiaokang Wang, Lei Ren, Ruixue Yuan, Laurence T. Yang, M. Jamal Deen
2022 J jnl
IEEE Trans. Ind. Informatics
Lei Ren, Zidi Jia, Xiaokang Wang, Jiabao Dong, Wei Wang
2022 J jnl
IEEE Netw.
Xiaokang Wang, Laurence T. Yang, Lei Ren, Yihao Wang, M. Jamal Deen
2022 J jnl
J. Parallel Distributed Comput.
Bowen Liu, Xutong Jiang, Xin He, Lianyong Qi, Xiaolong Xu, Xiaokang Wang, Wanchun Dou
2022 J jnl
J. Syst. Archit.
Wanchun Dou, Bowen Liu, Chuangwei Lin, Xiaokang Wang, Xutong Jiang, Lianyong Qi
2022 J jnl
Neurocomputing
Yinxue Yi, Zufan Zhang, Laurence T. Yang, Xiaokang Wang, Chenquan Gan
2022 J jnl
IEEE Trans. Ind. Informatics
Zhiwei Gao, Anand Paul, Xiaokang Wang
2022 J jnl
World Wide Web
Yan Kang, Xuekun Yang, Bin Pu, Xiaokang Wang, Haining Wang, Yulong Xu, Puming Wang
2022 J jnl
IEEE Internet Things J.
Yinxue Yi, Yangfanyu Yang, Kefei Cheng, Yu Wu, Xiaokang Wang
2022 J jnl
IEEE Internet Things J.
Bin Hu, Kehua Guo, Xiaokang Wang, Jian Zhang, Di Zhou
2022 J jnl
IEEE Trans Autom. Sci. Eng.
Yuanjun Laili, Xiang Li, Yongjing Wang, Lei Ren, Xiaokang Wang
2021 J jnl
IEEE Trans. Ind. Informatics
Lei Ren, Zihao Meng, Xiaokang Wang, Lin Zhang, Laurence T. Yang
2021 J jnl
IEEE Trans. Ind. Informatics
Lei Ren, Jiabao Dong, Xiaokang Wang, Zihao Meng, Li Zhao, M. Jamal Deen
2021 J jnl
IEEE Trans. Ind. Informatics
Xiaokang Wang, Laurence Tianruo Yang, Liwen Song, Huihui Wang, Lei Ren, M. Jamal Deen
2021 J jnl
IEEE Trans. Ind. Informatics
Xiaokang Wang, Laurence T. Yang, Yihao Wang, Lei Ren, M. Jamal Deen
2021 J jnl
IEEE Internet Things J.
Lei Ren, Yuxin Liu, Xiaokang Wang, Jinhu Lü, M. Jamal Deen
2021 J jnl
IEEE Trans. Sustain. Comput.
Xiaokang Wang, Laurence T. Yang, Xingyu Chen, M. Jamal Deen, Jirong Jin
2021 J jnl
Neurocomputing
Kenli Li, Keqin Li, Cen Chen, Xiaokang Wang
2021 conf
HPCC/DSS/SmartCity/DependSys
Qingming Huang, Oyama Katsunori, Xiaokang Wang
2021 J jnl
IEEE Trans. Netw. Sci. Eng.
Lianyong Qi, Xiaokang Wang, Xiaolong Xu, Wanchun Dou, Shancang Li
2021 J jnl
Future Gener. Comput. Syst.
Meng Zhao, Hao Wang, Ying Han, Xiaokang Wang, Hong-Ning Dai, Xuguo Sun, Jin Zhang, Marius Pedersen
2021 J jnl
IEEE Internet Things J.
Yinxue Yi, Zufan Zhang, Laurence T. Yang, Xianjun Deng, Lingzhi Yi, Xiaokang Wang
2020 J jnl
IEEE Trans. Big Data
Xiaokang Wang, Laurence T. Yang, Xingyu Chen, Lizhe Wang, Rajiv Ranjan, Xiaodao Chen, M. Jamal Deen
2020 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Lei Ren, Zihao Meng, Xiaokang Wang, Renquan Lu, Laurence T. Yang
2020 J jnl
IEEE Trans. Netw. Sci. Eng.
Lei Ren, Yuanjun Laili, Xiang Li, Xiaokang Wang
2020 J jnl
IEEE Access
Md. Arafatur Rahman, Zahir Tari, Dakai Zhu, Francesco Piccialli, Xiaokang Wang
2020 J jnl
J. Syst. Archit.
Junlong Zhou, Xun Jiao, Qingling Zhao, Xiaokang Wang, Shiyan Hu
2020 J jnl
IEEE Trans. Sustain. Comput.
Huazhong Liu, Jihong Ding, Laurence T. Yang, Yimu Guo, Xiaokang Wang, An-Yuan Deng
2019 J jnl
ACM Trans. Cyber Phys. Syst.
Xiaokang Wang, Laurence T. Yang, Yihao Wang, Xingang Liu, Qingxia Zhang, M. Jamal Deen
2019 J jnl
IEEE Trans. Sustain. Comput.
Xiaokang Wang, Laurence T. Yang, Xingyu Chen, Jian-Jun Han, Jun Feng
2019 J jnl
IEEE Access
Hu Zhu, Tao Xie, Yusheng Guan, Lizhen Deng, Xiaokang Wang
2019 J jnl
Future Gener. Comput. Syst.
Lei Ren, Xuejun Cheng, Xiaokang Wang, Jin Cui, Lin Zhang
2019 J jnl
ACM Trans. Embed. Comput. Syst.
Xiaokang Wang, Laurence T. Yang, Hongguo Li, Man Lin, Jianjun Han, Bernady O. Apduhan
2019 J jnl
Future Gener. Comput. Syst.
Jin Cui, Lei Ren, Xiaokang Wang, Lin Zhang
2018 J jnl
IEEE Trans. Big Data
Xiaokang Wang, Laurence T. Yang, Huazhong Liu, M. Jamal Deen
2018 J jnl
IEEE Trans. Comput. Soc. Syst.
Xiaokang Wang, Wei Wang, Laurence T. Yang, Siwei Liao, Dexiang Yin, M. Jamal Deen
2018 J jnl
IEEE Netw.
Xiaokang Wang, Laurence T. Yang, Liwei Kuang, Xingang Liu, Qingxia Zhang, M. Jamal Deen
2017 J jnl
IEEE Commun. Mag.
Xiaokang Wang, Laurence T. Yang, Xia Xie, Jirong Jin, M. Jamal Deen
2016 J jnl
IEEE Cloud Comput.
Xiaokang Wang, Laurence T. Yang, Jun Feng, Xingyu Chen, M. Jamal Deen
2016 J jnl
IEEE Netw.
Liwei Kuang, Laurence T. Yang, Xiaokang Wang, Puming Wang, Yaliang Zhao
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.")