feat: integrate ghidra-cli v0.1
This commit is contained in:
commit
ffab80a1f2
52 changed files with 6689 additions and 126 deletions
51
tests/real_ghidra_adapter.sh
Normal file
51
tests/real_ghidra_adapter.sh
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
: "${GHIDR_ANALYZE_HEADLESS:?set by the Nix check or dev shell}"
|
||||
: "${GHIDR_ADAPTER_PATH:?set by the Nix check or dev shell}"
|
||||
: "${GHIDR_FIXTURES:?set by the Nix check}"
|
||||
|
||||
test_root="${TMPDIR:?}/ghidr-adapter-e2e"
|
||||
mkdir -p "$test_root/project" "$test_root/invocation"
|
||||
doctor_request="$test_root/invocation/doctor-request.json"
|
||||
doctor_response="$test_root/invocation/doctor-response.json"
|
||||
request="$test_root/invocation/request.json"
|
||||
response="$test_root/invocation/response.json"
|
||||
sample="$GHIDR_FIXTURES/elf-x86_64/known.elf"
|
||||
|
||||
cp tests/data/adapter-doctor-request.json "$doctor_request"
|
||||
"$GHIDR_ANALYZE_HEADLESS" "$test_root" doctor-probe \
|
||||
-noanalysis \
|
||||
-scriptPath "$GHIDR_ADAPTER_PATH" \
|
||||
-postScript GhidrAdapter.java "$doctor_request" "$doctor_response" \
|
||||
-deleteProject
|
||||
jq -e '
|
||||
.operation == "doctor" and
|
||||
.result.status == "success" and
|
||||
.result.data.ready == true and
|
||||
.result.data.ghidra_version == "12.1.2" and
|
||||
.result.data.java_version == 21
|
||||
' "$doctor_response"
|
||||
|
||||
sed \
|
||||
-e "s|@SAMPLE@|$sample|g" \
|
||||
-e "s|@ANALYSIS@|$test_root/project|g" \
|
||||
tests/data/adapter-inspect-request.json > "$request"
|
||||
|
||||
"$GHIDR_ANALYZE_HEADLESS" "$test_root/project" analysis \
|
||||
-import "$sample" \
|
||||
-analysisTimeoutPerFile 60 \
|
||||
-max-cpu 2 \
|
||||
-scriptPath "$GHIDR_ADAPTER_PATH" \
|
||||
-postScript GhidrAdapter.java "$request" "$response"
|
||||
|
||||
jq -e '
|
||||
.protocol_version == 1 and
|
||||
.invocation_id == "0123456789abcdef0123456789abcdef" and
|
||||
.operation == "inspect" and
|
||||
.result.status == "success" and
|
||||
.result.data.context.target.processor_language == "x86:LE:64:default" and
|
||||
(.result.data.context.analyzer_options | length) > 0
|
||||
' "$response"
|
||||
|
||||
test ! -e "$response.tmp"
|
||||
Loading…
Add table
Add a link
Reference in a new issue