GP-1057: Preventing Ghidra from launching when path contains !. Also

updating Installation Guide's "Known Issues" section.
This commit is contained in:
Ryan Kurtz 2021-06-17 14:43:18 -04:00
parent 11149b9ef2
commit 38edc05f81
10 changed files with 73 additions and 39 deletions

View file

@ -64,6 +64,12 @@ SERVICE_NAME=org.rzo.yajsw.$APP_NAME
SCRIPT_FILE="$(readlink -f "$0" 2>/dev/null || readlink "$0" 2>/dev/null || echo "$0")"
SCRIPT_DIR="${SCRIPT_FILE%/*}"
# Ensure Ghidra path doesn't contain illegal characters
if [[ "$SCRIPT_DIR" = *"!"* ]]; then
echo "Ghidra path cannot contain a \"!\" character."
exit 1
fi
# YAJSW likes absolute paths
cd "${SCRIPT_DIR}"
SCRIPT_DIR="$(pwd)"

View file

@ -86,7 +86,15 @@ if [[ ${INDEX} -lt 5 ]]; then
exit 1
fi
# Sets SUPPORT_DIR to the directory that contains this file (launch.sh)
SUPPORT_DIR="${0%/*}"
# Ensure Ghidra path doesn't contain illegal characters
if [[ "$SUPPORT_DIR" = *"!"* ]]; then
echo "Ghidra path cannot contain a \"!\" character."
exit 1
fi
if [ -f "${SUPPORT_DIR}/launch.properties" ]; then
# Production Environment

View file

@ -13,6 +13,22 @@ rem below:
rem set "JAVA_HOME="
:: Sets SERVER_DIR to the directory that contains this file (ghidraSvr.bat).
:: SERVER_DIR will not contain a trailing slash.
::
:: '% ~' dereferences the value in param 0
:: 'd' - drive
:: 'p' - path (without filename)
:: '~0,-1' - removes trailing \
set "SERVER_DIR=%~dp0"
set "SERVER_DIR=%SERVER_DIR:~0,-1%"
rem Ensure Ghidra path doesn't contain illegal characters
if not %SERVER_DIR:!=%==%SERVER_DIR% (
echo Ghidra path cannot contain a "!" character.
exit /B 1
)
setlocal enabledelayedexpansion
set OPTION=%1
@ -48,10 +64,6 @@ if "%IS_ADMIN%"=="NO" (
if "%OPTION%"=="restart" goto adminFail
)
rem Find the script directory
rem %~dsp0 is location of current script under NT
set "_REALPATH=%~dp0"
set APP_NAME=ghidraSvr
set APP_LONG_NAME=Ghidra Server
@ -59,13 +71,13 @@ set MODULE_DIR=Ghidra\Features\GhidraServer
set WRAPPER_NAME_PREFIX=yajsw
if exist "%_REALPATH%..\Ghidra\" goto normal
if exist "%SERVER_DIR%\..\Ghidra\" goto normal
rem NOTE: If adjusting JAVA command assignment - do not attempt to add parameters (e.g., -d64, -version:1.7, etc.)
rem Development Environment
set "GHIDRA_HOME=%_REALPATH%..\..\..\.."
set "WRAPPER_CONF=%_REALPATH%..\..\Common\server\server.conf"
set "GHIDRA_HOME=%SERVER_DIR%\..\..\..\.."
set "WRAPPER_CONF=%SERVER_DIR%\..\..\Common\server\server.conf"
set "DATA_DIR=%GHIDRA_HOME%\%MODULE_DIR%\build\data"
set "CLASSPATH_FRAG=%GHIDRA_HOME%\%MODULE_DIR%\build\dev-meta\classpath.frag"
set "LS_CPATH=%GHIDRA_HOME%\GhidraBuild\LaunchSupport\bin\main"
@ -73,8 +85,8 @@ set "LS_CPATH=%GHIDRA_HOME%\GhidraBuild\LaunchSupport\bin\main"
goto lab1
:normal
set "GHIDRA_HOME=%_REALPATH%.."
set "WRAPPER_CONF=%_REALPATH%server.conf"
set "GHIDRA_HOME=%SERVER_DIR%\.."
set "WRAPPER_CONF=%SERVER_DIR%\server.conf"
set "DATA_DIR=%GHIDRA_HOME%\%MODULE_DIR%\data"
set "CLASSPATH_FRAG=%GHIDRA_HOME%\%MODULE_DIR%\data\classpath.frag"
set "LS_CPATH=%GHIDRA_HOME%\support\LaunchSupport.jar"

View file

@ -1,10 +1,6 @@
@echo off
setlocal
rem Find the script directory
rem %~dsp0 is location of current script under NT
set "_REALPATH=%~dp0"
call "%_REALPATH%\ghidraSvr" install
call "%~dp0ghidraSvr" install
pause

View file

@ -1,11 +1,7 @@
@echo off
setlocal
rem Find the script directory
rem %~dsp0 is location of current script under NT
set "_REALPATH=%~dp0"
call "%_REALPATH%\ghidraSvr" uninstall
call "%~dp0ghidraSvr" uninstall
pause

View file

@ -1,8 +1,7 @@
:: Ghidra Headless Analyzer launch (see analyzeHeadlessREADME.html)
@echo off
setlocal EnableDelayedExpansion
setlocal
:: Maximum heap memory size. For headless, it is recommended to not use the default value
:: because garbage collection could take too long on systems with a large amount of physical
@ -23,9 +22,6 @@ set DEBUG_ADDRESS=127.0.0.1:13002
set VMARG_LIST=-XX:ParallelGCThreads=2
set VMARG_LIST=%VMARG_LIST% -XX:CICompilerCount=2
:: store current path
set "filepath=%~dp0"
:: Loop through parameters (if there aren't any, just continue) and store
:: in params variable.
@ -36,6 +32,7 @@ if "%~1" == "" goto cont
:: If -import is found and Windows has not done proper wildcard expansion, force
:: this to happen and save expansion to params variable.
setlocal EnableDelayedExpansion
if "%~1" == "-import" (
set params=!params! -import
for %%f in ("%~2") DO (
@ -45,10 +42,11 @@ if "%~1" == "-import" (
) else (
set params=!params! "%~1"
)
setlocal DisableDelayedExpansion
shift
goto Loop
:cont
call "%filepath%launch.bat" %LAUNCH_MODE% Ghidra-Headless "%MAXMEM%" "%VMARG_LIST%" ghidra.app.util.headless.AnalyzeHeadless %params%
call "%~dp0launch.bat" %LAUNCH_MODE% Ghidra-Headless "%MAXMEM%" "%VMARG_LIST%" ghidra.app.util.headless.AnalyzeHeadless %params%

View file

@ -7,10 +7,17 @@ setlocal
:: fg, debug, debug-suspend
set LAUNCH_MODE=fg
:: Sets SCRIPT_DIR to the directory that contains this file (ends with '\')
set "SCRIPT_DIR=%~dp0"
:: Sets SUPPORT_DIR to the directory that contains this file (buildGhidraJar.bat).
:: SUPPORT_DIR will not contain a trailing slash.
::
:: '% ~' dereferences the value in param 0
:: 'd' - drive
:: 'p' - path (without filename)
:: '~0,-1' - removes trailing \
set "SUPPORT_DIR=%~dp0"
set "SUPPORT_DIR=%SUPPORT_DIR:~0,-1%"
set "GHIDRA_ROOT_DIR=%SCRIPT_DIR%..\Ghidra"
set "GHIDRA_ROOT_DIR=%SUPPORT_DIR%\..\Ghidra"
if exist "%GHIDRA_ROOT_DIR%" goto continue
echo This script does not support development mode use
@ -20,4 +27,4 @@ exit /B 1
set APP_VMARGS=-DGhidraJarBuilder.Name=%~n0
call "%~dp0launch.bat" %LAUNCH_MODE% Ghidra "" "%APP_VMARGS%" ghidra.util.GhidraJarBuilder -main ghidra.JarRun %*
call "%SUPPORT_DIR%\launch.bat" %LAUNCH_MODE% Ghidra "" "%APP_VMARGS%" ghidra.util.GhidraJarBuilder -main ghidra.JarRun %*

View file

@ -24,9 +24,6 @@ exit /B 1
:continue
:: Delay the expansion of our loop items below since the value is being updated as the loop works
setlocal enabledelayedexpansion
:: See if we were doubled clicked or run from a command prompt
set DOUBLE_CLICKED=n
for /f "tokens=2" %%# in ("%cmdcmdline%") do if /i "%%#" equ "/c" set DOUBLE_CLICKED=y
@ -40,6 +37,17 @@ for /f "tokens=2" %%# in ("%cmdcmdline%") do if /i "%%#" equ "/c" set DOUBLE_CLI
:: '~0,-1' - removes trailing \
set "SUPPORT_DIR=%~dp0"
set "SUPPORT_DIR=%SUPPORT_DIR:~0,-1%"
:: Ensure Ghidra path doesn't contain illegal characters
if not %SUPPORT_DIR:!=%==%SUPPORT_DIR% (
echo Ghidra path cannot contain a "!" character.
set ERRORLEVEL=1
goto exit1
)
:: Delay the expansion of our loop items below since the value is being updated as the loop works
setlocal enabledelayedexpansion
::
:: Parse arguments
::

View file

@ -1,8 +1,7 @@
:: Ghidra python launch
@echo off
setlocal EnableDelayedExpansion
setlocal
:: Maximum heap memory size
:: Default for Windows 32-bit is 768M and 64-bit is 1024M
@ -25,7 +24,4 @@ set DEBUG_ADDRESS=127.0.0.1:13002
set VMARG_LIST=-XX:ParallelGCThreads=2
set VMARG_LIST=%VMARG_LIST% -XX:CICompilerCount=2
:: store current path
set "filepath=%~dp0"
call "%filepath%launch.bat" %LAUNCH_MODE% Ghidra-Python "%MAXMEM%" "%VMARG_LIST%" ghidra.python.PythonRun %params%
call "%~dp0launch.bat" %LAUNCH_MODE% Ghidra-Python "%MAXMEM%" "%VMARG_LIST%" ghidra.python.PythonRun %params%