mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-01-08 21:47:59 -05:00
GP-3579 Added docker image generation to Ghidra distribution. Use from development source repo is not supported.
This commit is contained in:
55
docker/entrypoint.sh
Executable file
55
docker/entrypoint.sh
Executable file
@@ -0,0 +1,55 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user