Files
2025-07-29 02:47:28 +02:00

101 lines
2.5 KiB
Bash
Executable File

#!/bin/sh
HOST=localhost
PORT=9191
ROOT=$(dirname `readlink $0` 2> /dev/null)
if [ -n "${ROOT}" ]; then
cd "${ROOT}"
fi
r4cmd() {
ARG=`jq -nr --arg x "$@" '$x|@uri'`
curl "http://${HOST}:${PORT}/cmd/$ARG"
rc=$?
echo
exit $rc
}
if [ -z "$R2PIPE_IN" ]; then
if [ "$1" = cmd ]; then
shift
r4cmd "$@"
fi
echo "# You can run commands in the R4Ghidra webserver like this"
echo
echo "r4g cmd px"
echo
echo "# This program is experimental and requires r2pipe to run"
echo
echo "In the radare2 shell type: r2 -c '#!pipe r4g'"
echo
echo "# Alternatively you can connect with:"
echo
echo "r2 -C http://${HOST}:${PORT}/cmd/"
echo "r2 -c '=+http://${HOST}:${PORT}/cmd/' --"
exit 1
fi
if [ -z "$1" ]; then
echo "Usage: r4g [command]"
echo "Commands:"
echo " cmd [r4cmd] # run r4ghidra commands with curl"
echo " r2 .!r4g r2 # import r4ghidra into cmd.pdc"
echo ' dec [addr] !r4g dec `?v $$` # decompile function at given address'
echo " pull # pull changes from ghidra into r2"
echo " push # push comments and functions names from r2 to ghidra"
echo " client [addr] # call the server to request the decompilation"
echo " server [file]"
# exit 1
fi
TESTBIN=${R2_FILE}
FCNADDR=${R2_XOFFSET}
TESTBIN=/bin/ls
case "$1" in
r2)
#echo '"(pdcg,!r4g client `?v $FB`>.a,. .a,rm .a)"'
#echo 'e cmd.pdc=.(pdcg)'
#echo 'e cmd.pdc=$ghidra-dec'
echo '"$pddg*=#!pipe r4g pdd*"'
echo '"$pddg=#!pipe r4g pdd"'
echo 'e cmd.pdd=pddg'
;;
headless)
echo "Headless r4ghidra is WIP"
TESTBIN="$2"
if [ -z "${TESTBIN}" ]; then
echo "Usage: r4g server /path/to/file"
else
rm -rf Test.*
analyzeHeadless . Test.gpr -import ${TESTBIN} \
-postScript GhidraDecompilerR2.java -deleteProject
fi
;;
dec)
TESTBIN=/bin/ls
FCNADDR=$2
echo "FCNADDR=$2"
echo
rm -f decompiled.c
rm -rf Test.*
analyzeHeadless . Test.gpr -import ${TESTBIN} -postScript GhidraDecompiler.java ${FCNADDR} -deleteProject > /dev/null 2>&1
indent decompiled.c
cat decompiled.c
;;
import|pull)
TESTBIN=/bin/ls
FCNADDR=$2
echo "Assuming you have r2 http server on port 9090"
echo "r2 -e http.port=9191 -c'& =h' /bin/ls"
rm -rf Test.*
analyzeHeadless . Test.gpr -import ${TESTBIN} -postScript ghidra2radare.py -deleteProject > /dev/null 2>&1
cat ghidra-output.r2
;;
cmd|*)
r4cmd "$@"
;;
esac
#analyzeHeadless . Test.gpr -import $(TESTBIN) -postScript ghidra/GhidraDecompiler.java $(FCNADDR) -deleteProject
exit 0