mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 17:59:46 +02:00
GP-1057: Preventing Ghidra from launching when path contains !. Also
updating Installation Guide's "Known Issues" section.
This commit is contained in:
parent
11149b9ef2
commit
38edc05f81
10 changed files with 73 additions and 39 deletions
|
@ -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_FILE="$(readlink -f "$0" 2>/dev/null || readlink "$0" 2>/dev/null || echo "$0")"
|
||||||
SCRIPT_DIR="${SCRIPT_FILE%/*}"
|
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
|
# YAJSW likes absolute paths
|
||||||
cd "${SCRIPT_DIR}"
|
cd "${SCRIPT_DIR}"
|
||||||
SCRIPT_DIR="$(pwd)"
|
SCRIPT_DIR="$(pwd)"
|
||||||
|
|
|
@ -86,7 +86,15 @@ if [[ ${INDEX} -lt 5 ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Sets SUPPORT_DIR to the directory that contains this file (launch.sh)
|
||||||
SUPPORT_DIR="${0%/*}"
|
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
|
if [ -f "${SUPPORT_DIR}/launch.properties" ]; then
|
||||||
|
|
||||||
# Production Environment
|
# Production Environment
|
||||||
|
|
|
@ -13,6 +13,22 @@ rem below:
|
||||||
|
|
||||||
rem set "JAVA_HOME="
|
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
|
setlocal enabledelayedexpansion
|
||||||
|
|
||||||
set OPTION=%1
|
set OPTION=%1
|
||||||
|
@ -48,10 +64,6 @@ if "%IS_ADMIN%"=="NO" (
|
||||||
if "%OPTION%"=="restart" goto adminFail
|
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_NAME=ghidraSvr
|
||||||
set APP_LONG_NAME=Ghidra Server
|
set APP_LONG_NAME=Ghidra Server
|
||||||
|
|
||||||
|
@ -59,13 +71,13 @@ set MODULE_DIR=Ghidra\Features\GhidraServer
|
||||||
|
|
||||||
set WRAPPER_NAME_PREFIX=yajsw
|
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 NOTE: If adjusting JAVA command assignment - do not attempt to add parameters (e.g., -d64, -version:1.7, etc.)
|
||||||
|
|
||||||
rem Development Environment
|
rem Development Environment
|
||||||
set "GHIDRA_HOME=%_REALPATH%..\..\..\.."
|
set "GHIDRA_HOME=%SERVER_DIR%\..\..\..\.."
|
||||||
set "WRAPPER_CONF=%_REALPATH%..\..\Common\server\server.conf"
|
set "WRAPPER_CONF=%SERVER_DIR%\..\..\Common\server\server.conf"
|
||||||
set "DATA_DIR=%GHIDRA_HOME%\%MODULE_DIR%\build\data"
|
set "DATA_DIR=%GHIDRA_HOME%\%MODULE_DIR%\build\data"
|
||||||
set "CLASSPATH_FRAG=%GHIDRA_HOME%\%MODULE_DIR%\build\dev-meta\classpath.frag"
|
set "CLASSPATH_FRAG=%GHIDRA_HOME%\%MODULE_DIR%\build\dev-meta\classpath.frag"
|
||||||
set "LS_CPATH=%GHIDRA_HOME%\GhidraBuild\LaunchSupport\bin\main"
|
set "LS_CPATH=%GHIDRA_HOME%\GhidraBuild\LaunchSupport\bin\main"
|
||||||
|
@ -73,8 +85,8 @@ set "LS_CPATH=%GHIDRA_HOME%\GhidraBuild\LaunchSupport\bin\main"
|
||||||
goto lab1
|
goto lab1
|
||||||
|
|
||||||
:normal
|
:normal
|
||||||
set "GHIDRA_HOME=%_REALPATH%.."
|
set "GHIDRA_HOME=%SERVER_DIR%\.."
|
||||||
set "WRAPPER_CONF=%_REALPATH%server.conf"
|
set "WRAPPER_CONF=%SERVER_DIR%\server.conf"
|
||||||
set "DATA_DIR=%GHIDRA_HOME%\%MODULE_DIR%\data"
|
set "DATA_DIR=%GHIDRA_HOME%\%MODULE_DIR%\data"
|
||||||
set "CLASSPATH_FRAG=%GHIDRA_HOME%\%MODULE_DIR%\data\classpath.frag"
|
set "CLASSPATH_FRAG=%GHIDRA_HOME%\%MODULE_DIR%\data\classpath.frag"
|
||||||
set "LS_CPATH=%GHIDRA_HOME%\support\LaunchSupport.jar"
|
set "LS_CPATH=%GHIDRA_HOME%\support\LaunchSupport.jar"
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
@echo off
|
@echo off
|
||||||
setlocal
|
setlocal
|
||||||
|
|
||||||
rem Find the script directory
|
call "%~dp0ghidraSvr" install
|
||||||
rem %~dsp0 is location of current script under NT
|
|
||||||
set "_REALPATH=%~dp0"
|
|
||||||
|
|
||||||
call "%_REALPATH%\ghidraSvr" install
|
|
||||||
|
|
||||||
pause
|
pause
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
@echo off
|
@echo off
|
||||||
setlocal
|
setlocal
|
||||||
|
|
||||||
rem Find the script directory
|
call "%~dp0ghidraSvr" uninstall
|
||||||
rem %~dsp0 is location of current script under NT
|
|
||||||
set "_REALPATH=%~dp0"
|
|
||||||
|
|
||||||
call "%_REALPATH%\ghidraSvr" uninstall
|
|
||||||
|
|
||||||
pause
|
pause
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
:: Ghidra Headless Analyzer launch (see analyzeHeadlessREADME.html)
|
:: Ghidra Headless Analyzer launch (see analyzeHeadlessREADME.html)
|
||||||
|
|
||||||
@echo off
|
@echo off
|
||||||
|
setlocal
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
|
|
||||||
:: Maximum heap memory size. For headless, it is recommended to not use the default value
|
:: 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
|
:: 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=-XX:ParallelGCThreads=2
|
||||||
set VMARG_LIST=%VMARG_LIST% -XX:CICompilerCount=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
|
:: Loop through parameters (if there aren't any, just continue) and store
|
||||||
:: in params variable.
|
:: in params variable.
|
||||||
|
|
||||||
|
@ -36,6 +32,7 @@ if "%~1" == "" goto cont
|
||||||
|
|
||||||
:: If -import is found and Windows has not done proper wildcard expansion, force
|
:: If -import is found and Windows has not done proper wildcard expansion, force
|
||||||
:: this to happen and save expansion to params variable.
|
:: this to happen and save expansion to params variable.
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
if "%~1" == "-import" (
|
if "%~1" == "-import" (
|
||||||
set params=!params! -import
|
set params=!params! -import
|
||||||
for %%f in ("%~2") DO (
|
for %%f in ("%~2") DO (
|
||||||
|
@ -45,10 +42,11 @@ if "%~1" == "-import" (
|
||||||
) else (
|
) else (
|
||||||
set params=!params! "%~1"
|
set params=!params! "%~1"
|
||||||
)
|
)
|
||||||
|
setlocal DisableDelayedExpansion
|
||||||
|
|
||||||
shift
|
shift
|
||||||
goto Loop
|
goto Loop
|
||||||
|
|
||||||
:cont
|
: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%
|
||||||
|
|
|
@ -7,10 +7,17 @@ setlocal
|
||||||
:: fg, debug, debug-suspend
|
:: fg, debug, debug-suspend
|
||||||
set LAUNCH_MODE=fg
|
set LAUNCH_MODE=fg
|
||||||
|
|
||||||
:: Sets SCRIPT_DIR to the directory that contains this file (ends with '\')
|
:: Sets SUPPORT_DIR to the directory that contains this file (buildGhidraJar.bat).
|
||||||
set "SCRIPT_DIR=%~dp0"
|
:: 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
|
if exist "%GHIDRA_ROOT_DIR%" goto continue
|
||||||
|
|
||||||
echo This script does not support development mode use
|
echo This script does not support development mode use
|
||||||
|
@ -20,4 +27,4 @@ exit /B 1
|
||||||
|
|
||||||
set APP_VMARGS=-DGhidraJarBuilder.Name=%~n0
|
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 %*
|
||||||
|
|
|
@ -24,9 +24,6 @@ exit /B 1
|
||||||
|
|
||||||
:continue
|
: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
|
:: See if we were doubled clicked or run from a command prompt
|
||||||
set DOUBLE_CLICKED=n
|
set DOUBLE_CLICKED=n
|
||||||
for /f "tokens=2" %%# in ("%cmdcmdline%") do if /i "%%#" equ "/c" set DOUBLE_CLICKED=y
|
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 \
|
:: '~0,-1' - removes trailing \
|
||||||
set "SUPPORT_DIR=%~dp0"
|
set "SUPPORT_DIR=%~dp0"
|
||||||
set "SUPPORT_DIR=%SUPPORT_DIR:~0,-1%"
|
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
|
:: Parse arguments
|
||||||
::
|
::
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
:: Ghidra python launch
|
:: Ghidra python launch
|
||||||
|
|
||||||
@echo off
|
@echo off
|
||||||
|
setlocal
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
|
|
||||||
:: Maximum heap memory size
|
:: Maximum heap memory size
|
||||||
:: Default for Windows 32-bit is 768M and 64-bit is 1024M
|
:: 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=-XX:ParallelGCThreads=2
|
||||||
set VMARG_LIST=%VMARG_LIST% -XX:CICompilerCount=2
|
set VMARG_LIST=%VMARG_LIST% -XX:CICompilerCount=2
|
||||||
|
|
||||||
:: store current path
|
call "%~dp0launch.bat" %LAUNCH_MODE% Ghidra-Python "%MAXMEM%" "%VMARG_LIST%" ghidra.python.PythonRun %params%
|
||||||
set "filepath=%~dp0"
|
|
||||||
|
|
||||||
call "%filepath%launch.bat" %LAUNCH_MODE% Ghidra-Python "%MAXMEM%" "%VMARG_LIST%" ghidra.python.PythonRun %params%
|
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
<h1>Ghidra Installation Guide</h1>
|
<h1>Ghidra Installation Guide</h1>
|
||||||
<p>
|
<p>
|
||||||
The installation information provided is effective as of Ghidra 9.2 and is subject to change with
|
The installation information provided is effective as of Ghidra 10.0.1 and is subject to change with
|
||||||
future releases.
|
future releases.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -537,6 +537,10 @@ be installed in a pre-existing Eclipse installation.</p>
|
||||||
new files. Future versions of Ghidra will address this in order to ensure compatibility with
|
new files. Future versions of Ghidra will address this in order to ensure compatibility with
|
||||||
the newest versions of Java.
|
the newest versions of Java.
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
Ghidra will not launch when its path contains a "!" character. This is to avoid issues that
|
||||||
|
Java's internal libraries have parsing these paths ("!" is used as a jar-separator by Java).
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h3><a name="WindowsIssues"></a>Windows</h3>
|
<h3><a name="WindowsIssues"></a>Windows</h3>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -544,6 +548,9 @@ be installed in a pre-existing Eclipse installation.</p>
|
||||||
Older versions of 7-Zip may not be able to unpack the Ghidra distribution file if it contains
|
Older versions of 7-Zip may not be able to unpack the Ghidra distribution file if it contains
|
||||||
any files with a 0-byte length. Upgrade to a newer version of 7-Zip to fix this problem.
|
any files with a 0-byte length. Upgrade to a newer version of 7-Zip to fix this problem.
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
Ghidra will fail to launch when its path contains a "^" character.
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h3><a name="LinuxIssues"></a>Linux</h3>
|
<h3><a name="LinuxIssues"></a>Linux</h3>
|
||||||
<ul>
|
<ul>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue