blob: 1fa903543601b95d4e096ac67113a5368dda5d81 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#!/bin/bash
# SPDX-License-Identifier: BSD-3-Clause
#
# ghidra_decompile_at.sh - decompile the function containing a file virtual
# address from an already analyzed project. Version-agnostic replacement for
# the per-version helper (same idea, any project/binary).
#
# Usage: ghidra_decompile_at.sh <project_dir> <project_name> <program> <hex_vaddr> [outfile]
set -euo pipefail
HERE="$(cd "$(dirname "$0")" && pwd)"
GHIDRA_HOME="${GHIDRA_HOME:-/snap/ghidra/current/ghidra}"
ANALYZE="$GHIDRA_HOME/support/analyzeHeadless"
export GHIDRA_HEADLESS_MAXMEM="${GHIDRA_HEADLESS_MAXMEM:-12G}"
PROJECT_DIR="${1:?usage: $0 <project_dir> <project_name> <program> <hex_vaddr> [outfile]}"
PROJECT_NAME="${2:?}"
PROGRAM="${3:?}"
VADDR="${4:?}"
OUT="${5:-$PROJECT_DIR/fn_${VADDR}.c}"
"$ANALYZE" "$PROJECT_DIR" "$PROJECT_NAME" \
-process "$PROGRAM" -readOnly -noanalysis \
-scriptPath "$HERE/ghidra" \
-postScript DecompileAt.java "$VADDR" "$OUT" \
2>&1 | tail -3
[ -f "$OUT" ] || { echo "[FAIL] no output"; exit 1; }
echo "[ok] $OUT"
|