-
Notifications
You must be signed in to change notification settings - Fork 6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'origin/GP-4686_d-millar_kernel_remote_o…
…ptions--SQUASHED'
- Loading branch information
Showing
18 changed files
with
845 additions
and
106 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
20 changes: 20 additions & 0 deletions
20
Ghidra/Debug/Debugger-agent-dbgeng/data/debugger-launchers/kernel-dbgeng.bat
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
::@title dbgeng-kernel | ||
::@desc <html><body width="300px"> | ||
::@desc <h3>Kernel debugging using <tt>dbgeng</tt> (in a Python interpreter)</h3> | ||
::@desc <p> | ||
::@desc This will connect the kernel debugger to a remote machine using <tt>dbgeng.dll</tt>. | ||
::@desc For setup instructions, press <b>F1</b>. | ||
::@desc </p> | ||
::@desc </body></html> | ||
::@menu-group local | ||
::@icon icon.debugger | ||
::@help TraceRmiLauncherServicePlugin#dbgeng_kernel | ||
::@env OPT_PYTHON_EXE:file="python" "Python command" "The path to the Python 3 interpreter. Omit the full path to resolve using the system PATH." | ||
:: Use env instead of args, because "all args except first" is terrible to implement in batch | ||
::@env OPT_TARGET_ARGS:str="" "Arguments" "Connection-string arguments (a la .server)" | ||
::@env OPT_USE_DBGMODEL:bool=true "Use dbgmodel" "Load and use dbgmodel.dll if it is available." | ||
::@env WINDBG_DIR:dir="" "Path to dbgeng.dll directory" "Path containing dbgeng and associated DLLS (if not Windows Kits)." | ||
|
||
@echo off | ||
|
||
"%OPT_PYTHON_EXE%" -i ..\support\kernel-dbgeng.py |
26 changes: 26 additions & 0 deletions
26
Ghidra/Debug/Debugger-agent-dbgeng/data/debugger-launchers/local-dbgeng-ext.bat
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
::@title dbgeng-ext | ||
::@desc <html><body width="300px"> | ||
::@desc <h3>Launch with <tt>dbgeng</tt> (in a Python interpreter)</h3> | ||
::@desc <p> | ||
::@desc This will launch the target on the local machine using <tt>dbgeng.dll</tt>. | ||
::@desc For setup instructions, press <b>F1</b>. | ||
::@desc </p> | ||
::@desc </body></html> | ||
::@menu-group local | ||
::@icon icon.debugger | ||
::@help TraceRmiLauncherServicePlugin#dbgeng_ext | ||
::@env OPT_PYTHON_EXE:file="python" "Python command" "The path to the Python 3 interpreter. Omit the full path to resolve using the system PATH." | ||
:: Use env instead of args, because "all args except first" is terrible to implement in batch | ||
::@env OPT_TARGET_IMG:file="" "Image" "The target binary executable image" | ||
::@env OPT_TARGET_ARGS:str="" "Arguments" "Command-line arguments to pass to the target" | ||
::@env OPT_USE_DBGMODEL:bool=true "Use dbgmodel" "Load and use dbgmodel.dll if it is available." | ||
::@env WINDBG_DIR:dir="" "Path to dbgeng.dll directory" "Path containing dbgeng and associated DLLS (if not Windows Kits)." | ||
::@env OPT_TARGET_DIR:str="" "Dir" "Initial directory" | ||
::@env OPT_TARGET_ENV:str="" "Env" "Environment variables (sep=/0)" | ||
::@env OPT_CREATE_FLAGS:str="1" "Create flags" "Creation flags" | ||
::@env OPT_CREATE_ENGFLAGS:str="0" "Create flags (Engine)" "Engine-specific creation flags" | ||
::@env OPT_VERIFIER_FLAGS:str="0" "Verifier flags" "Verifier flags" | ||
|
||
@echo off | ||
|
||
"%OPT_PYTHON_EXE%" -i ..\support\local-dbgeng-ext.py |
22 changes: 22 additions & 0 deletions
22
Ghidra/Debug/Debugger-agent-dbgeng/data/debugger-launchers/remote-dbgeng.bat
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
::@title dbgeng-remote | ||
::@desc <html><body width="300px"> | ||
::@desc <h3>Launch with <tt>dbgeng</tt> remotely (in a Python interpreter)</h3> | ||
::@desc <p> | ||
::@desc This will launch the target on a remote machine using <tt>dbgeng.dll</tt>. | ||
::@desc For setup instructions, press <b>F1</b>. | ||
::@desc </p> | ||
::@desc </body></html> | ||
::@menu-group local | ||
::@icon icon.debugger | ||
::@help TraceRmiLauncherServicePlugin#dbgeng_remote | ||
::@env OPT_PYTHON_EXE:file="python" "Python command" "The path to the Python 3 interpreter. Omit the full path to resolve using the system PATH." | ||
:: Use env instead of args, because "all args except first" is terrible to implement in batch | ||
::@env OPT_TARGET_IMG:file="" "Image" "The target binary executable image" | ||
::@env OPT_TARGET_ARGS:str="" "Arguments" "Command-line arguments to pass to the target" | ||
::@env OPT_CONNECT_STRING:str="" "Connection" "Connection-string arguments (a la dbgsrv args)" | ||
::@env OPT_USE_DBGMODEL:bool=true "Use dbgmodel" "Load and use dbgmodel.dll if it is available." | ||
::@env WINDBG_DIR:dir="" "Path to dbgeng.dll directory" "Path containing dbgeng and associated DLLS (if not Windows Kits)." | ||
|
||
@echo off | ||
|
||
"%OPT_PYTHON_EXE%" -i ..\support\remote-dbgeng.py |
67 changes: 67 additions & 0 deletions
67
Ghidra/Debug/Debugger-agent-dbgeng/data/support/kernel-dbgeng.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
## ### | ||
# 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. | ||
## | ||
|
||
import os | ||
import sys | ||
|
||
home = os.getenv('GHIDRA_HOME') | ||
|
||
if os.path.isdir(f'{home}\\ghidra\\.git'): | ||
sys.path.append( | ||
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src') | ||
sys.path.append( | ||
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src') | ||
elif os.path.isdir(f'{home}\\.git'): | ||
sys.path.append( | ||
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src') | ||
sys.path.append( | ||
f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src') | ||
else: | ||
sys.path.append( | ||
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\pypkg\\src') | ||
sys.path.append(f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\pypkg\\src') | ||
|
||
|
||
def main(): | ||
# Delay these imports until sys.path is patched | ||
from ghidradbg import commands as cmd | ||
from pybag.dbgeng import core as DbgEng | ||
from ghidradbg.hooks import on_state_changed | ||
from ghidradbg.util import dbg | ||
|
||
# So that the user can re-enter by typing repl() | ||
global repl | ||
repl = cmd.repl | ||
|
||
cmd.ghidra_trace_connect(os.getenv('GHIDRA_TRACE_RMI_ADDR')) | ||
args = os.getenv('OPT_TARGET_ARGS') | ||
cmd.ghidra_trace_attach_kernel(args, start_trace=False) | ||
|
||
# TODO: HACK | ||
try: | ||
dbg.wait() | ||
except KeyboardInterrupt as ki: | ||
dbg.interrupt() | ||
|
||
cmd.ghidra_trace_start(os.getenv('OPT_TARGET_IMG')) | ||
cmd.ghidra_trace_sync_enable() | ||
|
||
on_state_changed(DbgEng.DEBUG_CES_EXECUTION_STATUS, DbgEng.DEBUG_STATUS_BREAK) | ||
cmd.repl() | ||
|
||
|
||
if __name__ == '__main__': | ||
main() |
77 changes: 77 additions & 0 deletions
77
Ghidra/Debug/Debugger-agent-dbgeng/data/support/local-dbgeng-ext.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
## ### | ||
# 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. | ||
## | ||
|
||
import os | ||
import sys | ||
|
||
|
||
home = os.getenv('GHIDRA_HOME') | ||
|
||
if os.path.isdir(f'{home}\\ghidra\\.git'): | ||
sys.path.append( | ||
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src') | ||
sys.path.append( | ||
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src') | ||
elif os.path.isdir(f'{home}\\.git'): | ||
sys.path.append( | ||
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src') | ||
sys.path.append( | ||
f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src') | ||
else: | ||
sys.path.append( | ||
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\pypkg\\src') | ||
sys.path.append(f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\pypkg\\src') | ||
|
||
|
||
def main(): | ||
# Delay these imports until sys.path is patched | ||
from ghidradbg import commands as cmd | ||
from pybag.dbgeng import core as DbgEng | ||
from ghidradbg.hooks import on_state_changed | ||
from ghidradbg.util import dbg | ||
|
||
# So that the user can re-enter by typing repl() | ||
global repl | ||
repl = cmd.repl | ||
|
||
cmd.ghidra_trace_connect(os.getenv('GHIDRA_TRACE_RMI_ADDR')) | ||
args = os.getenv('OPT_TARGET_ARGS') | ||
if args: | ||
args = ' ' + args | ||
cmd.ghidra_trace_create_ext( | ||
os.getenv('OPT_TARGET_IMG') + args, | ||
os.getenv('OPT_TARGET_DIR'), | ||
os.getenv('OPT_TARGET_ENV'), | ||
os.getenv('OPT_CREATE_FLAGS'), | ||
os.getenv('OPT_CREATE_ENGFLAGS'), | ||
os.getenv('OPT_VERIFIER_FLAGS'), | ||
start_trace=False) | ||
|
||
# TODO: HACK | ||
try: | ||
dbg.wait() | ||
except KeyboardInterrupt as ki: | ||
dbg.interrupt() | ||
|
||
cmd.ghidra_trace_start(os.getenv('OPT_TARGET_IMG')) | ||
cmd.ghidra_trace_sync_enable() | ||
|
||
on_state_changed(DbgEng.DEBUG_CES_EXECUTION_STATUS, DbgEng.DEBUG_STATUS_BREAK) | ||
cmd.repl() | ||
|
||
|
||
if __name__ == '__main__': | ||
main() |
73 changes: 73 additions & 0 deletions
73
Ghidra/Debug/Debugger-agent-dbgeng/data/support/remote-dbgeng.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
## ### | ||
# 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. | ||
## | ||
|
||
import os | ||
import sys | ||
|
||
|
||
home = os.getenv('GHIDRA_HOME') | ||
|
||
if os.path.isdir(f'{home}\\ghidra\\.git'): | ||
sys.path.append( | ||
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src') | ||
sys.path.append( | ||
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src') | ||
elif os.path.isdir(f'{home}\\.git'): | ||
sys.path.append( | ||
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src') | ||
sys.path.append( | ||
f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src') | ||
else: | ||
sys.path.append( | ||
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\pypkg\\src') | ||
sys.path.append(f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\pypkg\\src') | ||
|
||
|
||
def main(): | ||
# Delay these imports until sys.path is patched | ||
from ghidradbg import commands as cmd | ||
from pybag.dbgeng import core as DbgEng | ||
from ghidradbg.hooks import on_state_changed | ||
from ghidradbg.util import dbg | ||
|
||
# So that the user can re-enter by typing repl() | ||
global repl | ||
repl = cmd.repl | ||
|
||
cmd.ghidra_trace_connect(os.getenv('GHIDRA_TRACE_RMI_ADDR')) | ||
args = os.getenv('OPT_TARGET_ARGS') | ||
if args: | ||
args = ' ' + args | ||
cmd.ghidra_trace_connect_server(os.getenv('OPT_CONNECT_STRING')) | ||
img = os.getenv('OPT_TARGET_IMG') | ||
if img is not None and img != "": | ||
cmd.ghidra_trace_create(img + args, start_trace=False) | ||
|
||
# TODO: HACK | ||
try: | ||
dbg.wait() | ||
except KeyboardInterrupt as ki: | ||
dbg.interrupt() | ||
|
||
cmd.ghidra_trace_start(os.getenv('OPT_TARGET_IMG')) | ||
cmd.ghidra_trace_sync_enable() | ||
|
||
on_state_changed(DbgEng.DEBUG_CES_EXECUTION_STATUS, DbgEng.DEBUG_STATUS_BREAK) | ||
cmd.repl() | ||
|
||
|
||
if __name__ == '__main__': | ||
main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.