Nengheng Zheng

38 papers A 9B 1Misc 5Journal 8Unranked 14
YearRankTypeTitle / Venue / Authors
2025 J jnl
Speech Commun.
Mingyue Shi, Qinglin Meng, Huali Zhou, Jiawen Li, Yefei Mo, Nengheng Zheng
2024 A conf
INTERSPEECH
Mingyue Shi, Huali Zhou, Qinglin Meng, Nengheng Zheng
2024 Misc conf
ICASSP
Zhijian Jiang, Haoming Li, Nengheng Zheng
2023 A conf
INTERSPEECH
Fanhui Kong, Nengheng Zheng, Xianren Wang, Hao He, Jan W. H. Schnupp, Qinglin Meng
2023 A conf
INTERSPEECH
Huali Zhou, Xianming Bei, Nengheng Zheng, Qinglin Meng
2023 J jnl
Biomed. Signal Process. Control.
Yefei Mo, Huali Zhou, Fanhui Kong, Zhifeng Liu, Xiaohong Liu, Hongming Huang, Yan Huang, Nengheng Zheng, Qinglin Meng, Peina Wu
2023 A conf
INTERSPEECH
Huali Zhou, Fanhui Kong, Nengheng Zheng, Qinglin Meng
2022 conf
ISCSLP
Weitong Zhao, Fushi Xie, Kang Ouyang, Nengheng Zheng
2022 B conf
SMC
Junhan Li, Nengheng Zheng
2022 Misc conf
ICASSP
Xi Chen, Yefei Mo, Kang Ouyang, Mingyue Shi, Huali Zhou, Yupeng Shi, Wei Xiao, Shidong Shang, Qinglin Meng, Nengheng Zheng
2021 Misc conf
ICASSP
Nengheng Zheng, Yupeng Shi, Yuyong Kang, Qinglin Meng
2021 A conf
Interspeech
Rongliang Liu, Nengheng Zheng, Xi Chen
2020 J jnl
J. Signal Process. Syst.
Nengheng Zheng, Yupeng Shi, Weicong Rong, Yuyong Kang
2020 A conf
INTERSPEECH
Yangyang Wan, Huali Zhou, Qinglin Meng, Nengheng Zheng
2019 conf
APSIPA
Yupeng Shi, Nengheng Zheng, Yuyong Kang, Weicong Rong
2018 conf
APSIPA
Qinglin Meng, Guangzheng Yu, Yangyang Wan, Fanhui Kong, Xianren Wang, Nengheng Zheng
2018 conf
ISCSLP
Junhao Ding, Bin Ren, Nengheng Zheng
2018 conf
APSIPA
Nengheng Zheng, Xiaowei Shao, Baihan Zeng, Qinglin Meng
2018 conf
ISCSLP
Yupeng Shi, Weicong Rong, Nengheng Zheng
2018 A conf
INTERSPEECH
Qinglin Meng, Nengheng Zheng, Ambika Prasad Mishra, Jacinta Dan Luo, Jan W. H. Schnupp
2016 conf
ISCSLP
Wenzhi He, Nengheng Zheng, Qinglin Meng
2015 Misc conf
ICASSP
Qinglin Meng, Nengheng Zheng, Xia Li
2014 Misc conf
ICASSP
Lu Yang, Wei Zhang, Nengheng Zheng, P. C. Ching
2012 conf
APSIPA
Nengheng Zheng, Yi Cai, Xia Li, Tan Lee
2011 J jnl
IEEE Trans. Speech Audio Process.
Ning Wang, P. C. Ching, Nengheng Zheng, Tan Lee
2010 conf
ISCSLP
Nengheng Zheng, Xia Li, Thierry Blu, Tan Lee
2008 conf
ISCSLP
Nengheng Zheng, Xia Li, Houwei Cao, Tan Lee, P. C. Ching
2008 A conf
INTERSPEECH
Yu Ting Yeung, Houwei Cao, Nengheng Zheng, Tan Lee, P. C. Ching
2007 J jnl
IEEE Trans. Speech Audio Process.
Wai Nang Chan, Nengheng Zheng, Tan Lee
2007 J jnl
Signal Process.
Junfeng Sun, Nengheng Zheng, Xinlong Wang
2007 J jnl
Int. J. Comput. Linguistics Chin. Lang. Process.
Nengheng Zheng, Tan Lee, Ning Wang, P. C. Ching
2007 J jnl
IEEE Signal Process. Lett.
Nengheng Zheng, Tan Lee, Pak-Chung Ching
2006 conf
ISCSLP (Selected Papers)
Nengheng Zheng, P. C. Ching, Ning Wang, Tan Lee
2006 conf
ISCSLP (Selected Papers)
Nengheng Zheng, Ning Wang, Tan Lee, P. C. Ching
2006 conf
ICASSP (1)
Wai Nang Chan, Tan Lee, Nengheng Zheng, Hua Ouyang
2005
Nengheng Zheng
2004 A conf
INTERSPEECH
Nengheng Zheng, P. C. Ching, Tan Lee
2004 conf
ICASSP (1)
Nengheng Zheng, P. C. Ching
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.")