summaryrefslogtreecommitdiffstats
path: root/userspace/cuda/570.144/scripts/ghidra_analyze.sh
diff options
context:
space:
mode:
Diffstat (limited to 'userspace/cuda/570.144/scripts/ghidra_analyze.sh')
-rwxr-xr-xuserspace/cuda/570.144/scripts/ghidra_analyze.sh37
1 files changed, 37 insertions, 0 deletions
diff --git a/userspace/cuda/570.144/scripts/ghidra_analyze.sh b/userspace/cuda/570.144/scripts/ghidra_analyze.sh
new file mode 100755
index 0000000..b844300
--- /dev/null
+++ b/userspace/cuda/570.144/scripts/ghidra_analyze.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+# SPDX-License-Identifier: BSD-3-Clause
+#
+# ghidra_analyze.sh - import a library into a Ghidra project and run the full
+# auto-analysis once. The project is kept, so later decompilations are cheap:
+#
+# scripts/ghidra_decompile_project.sh <hex-vaddr> [outfile]
+#
+# Full analysis of a ~70 MB library can take a long time; run it in the
+# background and log to run/ghidra-analyze.log.
+#
+# Usage: scripts/ghidra_analyze.sh <binary>
+# env: GHIDRA_HOME (default /snap/ghidra/current/ghidra)
+# PROJECT_DIR (default ../run/ghidra-proj)
+# PROJECT_NAME (default cuda-analysis)
+set -e
+
+HERE="$(cd "$(dirname "$0")" && pwd)"
+ROOT="$(cd "$HERE/.." && pwd)"
+RUN="$ROOT/run"
+BIN="${1:?usage: $0 <binary>}"
+
+GHIDRA_HOME="${GHIDRA_HOME:-/snap/ghidra/current/ghidra}"
+ANALYZE="$GHIDRA_HOME/support/analyzeHeadless"
+PROJECT_DIR="${PROJECT_DIR:-$RUN/ghidra-proj}"
+PROJECT_NAME="${PROJECT_NAME:-cuda-analysis}"
+
+[ -x "$ANALYZE" ] || { echo "analyzeHeadless not found at $ANALYZE"; exit 1; }
+mkdir -p "$PROJECT_DIR"
+
+echo "[*] importing + analyzing $BIN (this can take a long time)"
+"$ANALYZE" "$PROJECT_DIR" "$PROJECT_NAME" \
+ -import "$BIN" \
+ -overwrite \
+ -scriptPath "$ROOT/ghidra" \
+ -analysisTimeoutPerFile 0
+echo "[ok] analysis complete" \ No newline at end of file