Initial pwndbg support

This commit is contained in:
Damian Pfammatter
2023-05-02 16:53:54 +02:00
parent 72c6e89c3c
commit 5201082d8c
3 changed files with 72 additions and 1 deletions
+4 -1
View File
@@ -13,4 +13,7 @@ venvs/
.ipynb_checkpoints .ipynb_checkpoints
# Visual Studio Code # Visual Studio Code
.vscode .vscode
# GDB History
.gdb_history
+67
View File
@@ -0,0 +1,67 @@
#!/usr/bin/env python3
## -*- coding: utf-8 -*-
import argparse
import libtmux
# References
# - https://libtmux.git-pull.com/reference/windows.html
# - https://github.com/tmux-python/libtmux
def main() -> None:
# Argument parsing
description = """
TODO
"""
parser = argparse.ArgumentParser(description=description,
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
# parser.add_argument("--gdb",
# choices=["gdb", "gdb-multiarch"],
# default="gdb-multiarch",
# help="Multi-architecture or regular GNU debugger")
args = vars(parser.parse_args())
session_name = "morion"
window_name = "morion-pwndbg"
# Create tmux session
server = libtmux.Server()
session = server.new_session(
session_name=session_name,
kill_session=True,
attach=False,
window_name=window_name
)
# Create window and panes
window = session.windows.get(window_name=window_name)
pane_gdb = window.panes[0]
pane_gdb.send_keys("gdb-multiarch -q")
pane_morion = window.split_window(
attach=False,
vertical=False,
percent=50
)
pane_morion.send_keys("morion -h")
pane_disasm = pane_gdb.split_window(
attach=False,
vertical=True,
percent=30
)
pane_gdb.send_keys(
f"""
python
from pwndbg.commands.context import contextoutput
contextoutput("disasm", "{pane_disasm.pane_tty:s}", True)
end
# shell clear
"""
)
# Attach tmux session
server.attach_session(session_name)
return
if __name__ == "__main__":
main()
+1
View File
@@ -13,6 +13,7 @@ setup(
entry_points = { entry_points = {
'console_scripts': [ 'console_scripts': [
'morion=morion.symbex.execute:main', 'morion=morion.symbex.execute:main',
'morion_pwndbg=morion.pwndbg:main',
'morion_backward_slicer=morion.symbex.backward_slice:main', 'morion_backward_slicer=morion.symbex.backward_slice:main',
'morion_control_hijacker=morion.symbex.hijack_control:main', 'morion_control_hijacker=morion.symbex.hijack_control:main',
'morion_memory_hijacker=morion.symbex.hijack_memory:main', 'morion_memory_hijacker=morion.symbex.hijack_memory:main',