#!/usr/bin/env bash set -euo pipefail workspace_dir=$(pwd -P) ghidra_install_dir=${GHIDRA_INSTALL_DIR:-/opt/ghidra} headless_analyzer="$ghidra_install_dir/support/analyzeHeadless" script_dir="$workspace_dir/tools" project_dir=$(mktemp -d /tmp/tdkpin-ghidra.XXXXXX) if [[ ! -x "$headless_analyzer" ]]; then echo "Ghidra headless analyzer not found at: $headless_analyzer" >&2 exit 1 fi "$headless_analyzer" "$project_dir" tdkpin \ -import "$workspace_dir/TDKPIN.EXE" \ -analysisTimeoutPerFile 900 \ -max-cpu 8 "$headless_analyzer" "$project_dir" tdkpin \ -process TDKPIN.EXE \ -noanalysis \ -scriptPath "$script_dir" \ -preScript SeedMissingEntrypoints.java \ -preScript ApplyWin16ImportSignatures.java \ "$workspace_dir/IMPORT_RECONSTRUCTION.tsv" \ -postScript ExportDecompilation.java \ "$workspace_dir/TDKPIN_GHIDRA_COMPLETE_RAW.c" \ "$workspace_dir/COMPLETE_FUNCTIONS.tsv" \ -postScript AuditCoverage.java \ "$workspace_dir/COMPLETE_COVERAGE.tsv" \ -postScript ExportProgramEvidence.java \ "$workspace_dir/BINARY_FUNCTIONS.tsv" \ "$workspace_dir/REFERENCES.tsv" \ "$workspace_dir/DEFINED_DATA.tsv" \ "$workspace_dir/SYMBOLS.tsv" \ "$workspace_dir/UNEXPLAINED.tsv" python3 "$script_dir/extract_ne_metadata.py" "$workspace_dir/TDKPIN.EXE" \ --output-dir "$workspace_dir" python3 "$script_dir/build_data_coverage.py" echo "Ghidra project retained at: $project_dir"