ghidra/docker/entrypoint.sh

55 lines
2.5 KiB
Bash
Executable file

#!/bin/bash
## ###
# IP: GHIDRA
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
##
MODE=${MODE:="gui"}
echo "$@"
MAXMEM=${MAXMEM:=2G}
if [[ $MODE == "gui" ]] then
/ghidra/support/launch.sh bg jdk Ghidra "${MAXMEM}" "" ghidra.GhidraRun "$@"
# need to do this since the launched process is not blocking terminal exit
while ! tail -f ~/.config/ghidra/ghidra_*/application.log; do sleep 1 ; done
elif [[ $MODE == "headless" ]] then
LAUNCH_MODE=${LAUNCH_MODE:=fg}
DEBUG_ADDRESS=${DEBUG_ADDRESS:=127.0.0.1:13002}
VMARG_LIST=${VMARG_LIST:="-XX:ParallelGCThreads=2 -XX:CICompilerCount=2 -Djava.awt.headless=true "}
DEBUG_ADDRESS=${DEBUG_ADDRESS} /ghidra/support/launch.sh "${LAUNCH_MODE}" jdk Ghidra-Headless "${MAXMEM}" "${VMARG_LIST}" ghidra.app.util.headless.AnalyzeHeadless "$@"
elif [[ $MODE == "ghidra-server" ]] then
# Note, for svrAdmin, you will need to exec into the container running the ghidra server and use the CLI there.
/ghidra/server/ghidraSvr console
elif [[ $MODE == "bsim" ]] then
LAUNCH_MODE=${LAUNCH_MODE:=fg}
VMARG_LIST=${VMARG_LIST:="-Djava.awt.headless=true "}
/ghidra/support/launch.sh $LAUNCH_MODE jdk "BSim" "${MAXMEM}" "" ghidra.features.bsim.query.ingest.BSimLaunchable "$@"
elif [[ $MODE == "bsim-server" ]] then
LAUNCH_MODE=${LAUNCH_MODE:=fg}
VMARG_LIST=${VMARG_LIST:="-Djava.awt.headless=true -Xshare:off"}
mkdir -p $DATADIR_PATH
/ghidra/support/launch.sh "$LAUNCH_MODE" jdk BSimControl "$MAXMEM" "$VMARG_LIST" ghidra.features.bsim.query.BSimControlLaunchable start $@
# need to do this since the launched process is not blocking terminal exit
while ! tail -f $DATADIR_PATH/logfile; do sleep 1 ; done
elif [[ $MODE == "pyghidra" ]] then
# Add optional JVM args inside the quotes
VMARG_LIST=${VMARG_LIST:=""}
PYGHIDRA_LAUNCHER="/ghidra/Ghidra/Features/PyGhidra/support/pyghidra_launcher.py"
set -e
source /ghidra/venv/bin/activate
/ghidra/venv/bin/python3 "${PYGHIDRA_LAUNCHER}" "/ghidra" ${VMARG_LIST} "$@"
else
echo "Unknown MODE: $MODE. Valid MODE's are gui, headless, ghidra-server, bsim, bsim_ctl, or pyghidra."
fi