diff --git a/dev/contributing/adding-a-parameter/index.html b/dev/contributing/adding-a-parameter/index.html index bcadefac4..7148c7d31 100644 --- a/dev/contributing/adding-a-parameter/index.html +++ b/dev/contributing/adding-a-parameter/index.html @@ -55,7 +55,7 @@ auto-save-search automatically pass --save to "search" command off bn-autosync whether to automatically run bn-sync every step off [...] - Because of the various contexts in which a parameter can be show, the first letter of the set_show_doc string should be lowercase (unless the first word is a name or an abbreviation) and there should be no punctuation at the end. This way, Pwndbg and GDB can more easily modify the string to fit it into these contexts.

help_docstring¤

While help_docstring is not mandatory, it is highly recommended to use it. Put a detailed explanation of what the parameter does here, and explain any caveats. This string does not have a size limit and is shown with the following command in GDB:

pwndbg> help set gdb-workaround-stop-event
+
Because of the various contexts in which a parameter can be show, the first letter of the set_show_doc string should be lowercase (unless the first word is a name or an abbreviation) and there should be no punctuation at the end. This way, Pwndbg and GDB can more easily modify the string to fit it into these contexts.

help_docstring¤

While help_docstring is not mandatory, it is highly recommended to use it. Put a detailed explanation of what the parameter does here, and explain any caveats. This string does not have a size limit and is shown with the following command in GDB and LLDB:

pwndbg> help set gdb-workaround-stop-event
 Set asynchronous stop events to improve 'commands' functionality.
 Note that this may cause unexpected behavior with Pwndbg or gdb.execute.
 
@@ -67,7 +67,7 @@
 
 Default: 'disabled'
 Valid values: 'disabled', 'disabled-deadlock', 'enabled'
-
Note that the last two lines are automatically generated by Pwndbg.

Note

There is currently no way to display this string nor the set_show_doc string in LLDB.

When writing this explanation, it is important to take into account how it will be displayed in the documentation after being parsed as markdown. See what gdb-workaround-stop-event looks like here: https://pwndbg.re/pwndbg/dev/configuration/config/#gdb-workaround-stop-event . If there wasn't an empty line between Values explained: and + `disabled`.. the list wouldn't have rendered properly.

param_class¤

This argument describes the type of the parameter. It will be used by GDB to perform input validation when the parameter is being set so it is important to set this to the correct value. The possible values are defined in pwndbg/lib/config.py, use the most restrictive one that fits:

# Boolean value. True or False, same as in Python.
+
Note that the last two lines are automatically generated by Pwndbg.

When writing this explanation, it is important to take into account how it will be displayed in the documentation after being parsed as markdown. See what gdb-workaround-stop-event looks like here: https://pwndbg.re/pwndbg/dev/configuration/config/#gdb-workaround-stop-event . If there wasn't an empty line between Values explained: and + `disabled`.. the list wouldn't have rendered properly.

param_class¤

This argument describes the type of the parameter. It will be used by GDB to perform input validation when the parameter is being set so it is important to set this to the correct value. The possible values are defined in pwndbg/lib/config.py, use the most restrictive one that fits:

# Boolean value. True or False, same as in Python.
 PARAM_BOOLEAN = 0
 # Boolean value, or 'auto'.
 PARAM_AUTO_BOOLEAN = 1
diff --git a/dev/feed_json_updated.json b/dev/feed_json_updated.json
index b23df2b79..8f1f04487 100644
--- a/dev/feed_json_updated.json
+++ b/dev/feed_json_updated.json
@@ -1 +1 @@
-{"version": "https://jsonfeed.org/version/1", "title": "pwndbg Blog", "home_page_url": "https://pwndbg.re/pwndbg/latest/", "feed_url": "https://pwndbg.re/pwndbg/latest/feed_json_updated.json", "description": "pwndbg (/pa\u028an\u02c8di\u02ccb\u028c\u0261/) is a GDB plug-in that makes debugging with GDB suck less, with a focus on features needed by low-level software developers, hardware hackers, reverse-engineers and exploit developers.", "icon": "https://pwndbg.re/pwndbg/assets/favicon.ico", "authors": [], "language": "en", "items": [{"id": "https://pwndbg.re/pwndbg/latest/blog/2022/08/21/pwndbg-coding-sprints-report/", "url": "https://pwndbg.re/pwndbg/latest/blog/2022/08/21/pwndbg-coding-sprints-report/", "title": "Pwndbg coding sprints report", "content_html": "Report of the two coding sprints with Pwndbg\n", "image": null, "date_modified": "2025-06-02T19:01:53+00:00", "authors": [{"name": "Disconnect3d"}], "tags": []}]}
\ No newline at end of file
+{"version": "https://jsonfeed.org/version/1", "title": "pwndbg Blog", "home_page_url": "https://pwndbg.re/pwndbg/latest/", "feed_url": "https://pwndbg.re/pwndbg/latest/feed_json_updated.json", "description": "pwndbg (/pa\u028an\u02c8di\u02ccb\u028c\u0261/) is a GDB plug-in that makes debugging with GDB suck less, with a focus on features needed by low-level software developers, hardware hackers, reverse-engineers and exploit developers.", "icon": "https://pwndbg.re/pwndbg/assets/favicon.ico", "authors": [], "language": "en", "items": [{"id": "https://pwndbg.re/pwndbg/latest/blog/2022/08/21/pwndbg-coding-sprints-report/", "url": "https://pwndbg.re/pwndbg/latest/blog/2022/08/21/pwndbg-coding-sprints-report/", "title": "Pwndbg coding sprints report", "content_html": "Report of the two coding sprints with Pwndbg\n", "image": null, "date_modified": "2025-06-03T10:28:07+00:00", "authors": [{"name": "Disconnect3d"}], "tags": []}]}
\ No newline at end of file
diff --git a/dev/feed_rss_created.xml b/dev/feed_rss_created.xml
index aba6789af..4f5612937 100644
--- a/dev/feed_rss_created.xml
+++ b/dev/feed_rss_created.xml
@@ -1 +1 @@
- pwndbg Blogpwndbg (/paʊnˈdiˌbʌɡ/) is a GDB plug-in that makes debugging with GDB suck less, with a focus on features needed by low-level software developers, hardware hackers, reverse-engineers and exploit developers.https://pwndbg.re/pwndbg/latest/https://github.com/pwndbg/pwndbg/en Mon, 02 Jun 2025 19:04:20 -0000 Mon, 02 Jun 2025 19:04:20 -0000 1440 MkDocs RSS plugin - v1.17.1  https://pwndbg.re/pwndbg/assets/favicon.ico pwndbg Bloghttps://pwndbg.re/pwndbg/latest/   Pwndbg coding sprints report Disconnect3d Report of the two coding sprints with Pwndbghttps://pwndbg.re/pwndbg/latest/blog/2022/08/21/pwndbg-coding-sprints-report/ Sun, 21 Aug 2022 00:00:00 +0000pwndbg Bloghttps://pwndbg.re/pwndbg/latest/blog/2022/08/21/pwndbg-coding-sprints-report/  
\ No newline at end of file
+ pwndbg Blogpwndbg (/paʊnˈdiˌbʌɡ/) is a GDB plug-in that makes debugging with GDB suck less, with a focus on features needed by low-level software developers, hardware hackers, reverse-engineers and exploit developers.https://pwndbg.re/pwndbg/latest/https://github.com/pwndbg/pwndbg/en Tue, 03 Jun 2025 10:32:04 -0000 Tue, 03 Jun 2025 10:32:04 -0000 1440 MkDocs RSS plugin - v1.17.1  https://pwndbg.re/pwndbg/assets/favicon.ico pwndbg Bloghttps://pwndbg.re/pwndbg/latest/   Pwndbg coding sprints report Disconnect3d Report of the two coding sprints with Pwndbghttps://pwndbg.re/pwndbg/latest/blog/2022/08/21/pwndbg-coding-sprints-report/ Sun, 21 Aug 2022 00:00:00 +0000pwndbg Bloghttps://pwndbg.re/pwndbg/latest/blog/2022/08/21/pwndbg-coding-sprints-report/  
\ No newline at end of file
diff --git a/dev/feed_rss_updated.xml b/dev/feed_rss_updated.xml
index c80a7d6df..36f6ef3b3 100644
--- a/dev/feed_rss_updated.xml
+++ b/dev/feed_rss_updated.xml
@@ -1 +1 @@
- pwndbg Blogpwndbg (/paʊnˈdiˌbʌɡ/) is a GDB plug-in that makes debugging with GDB suck less, with a focus on features needed by low-level software developers, hardware hackers, reverse-engineers and exploit developers.https://pwndbg.re/pwndbg/latest/https://github.com/pwndbg/pwndbg/en Mon, 02 Jun 2025 19:04:20 -0000 Mon, 02 Jun 2025 19:04:20 -0000 1440 MkDocs RSS plugin - v1.17.1  https://pwndbg.re/pwndbg/assets/favicon.ico pwndbg Bloghttps://pwndbg.re/pwndbg/latest/   Pwndbg coding sprints report Disconnect3d Report of the two coding sprints with Pwndbghttps://pwndbg.re/pwndbg/latest/blog/2022/08/21/pwndbg-coding-sprints-report/ Mon, 02 Jun 2025 19:01:53 +0000pwndbg Bloghttps://pwndbg.re/pwndbg/latest/blog/2022/08/21/pwndbg-coding-sprints-report/  
\ No newline at end of file
+ pwndbg Blogpwndbg (/paʊnˈdiˌbʌɡ/) is a GDB plug-in that makes debugging with GDB suck less, with a focus on features needed by low-level software developers, hardware hackers, reverse-engineers and exploit developers.https://pwndbg.re/pwndbg/latest/https://github.com/pwndbg/pwndbg/en Tue, 03 Jun 2025 10:32:04 -0000 Tue, 03 Jun 2025 10:32:04 -0000 1440 MkDocs RSS plugin - v1.17.1  https://pwndbg.re/pwndbg/assets/favicon.ico pwndbg Bloghttps://pwndbg.re/pwndbg/latest/   Pwndbg coding sprints report Disconnect3d Report of the two coding sprints with Pwndbghttps://pwndbg.re/pwndbg/latest/blog/2022/08/21/pwndbg-coding-sprints-report/ Tue, 03 Jun 2025 10:28:07 +0000pwndbg Bloghttps://pwndbg.re/pwndbg/latest/blog/2022/08/21/pwndbg-coding-sprints-report/  
\ No newline at end of file
diff --git a/dev/objects.inv b/dev/objects.inv
index a6930de04..90f12ce10 100644
Binary files a/dev/objects.inv and b/dev/objects.inv differ
diff --git a/dev/reference/pwndbg/aglib/disasm/arch/index.html b/dev/reference/pwndbg/aglib/disasm/arch/index.html
index 50376c49c..c54d27679 100644
--- a/dev/reference/pwndbg/aglib/disasm/arch/index.html
+++ b/dev/reference/pwndbg/aglib/disasm/arch/index.html
@@ -24,9 +24,9 @@
   
       module-attribute
    (pwndbg.aglib.disasm.arch.DO_NOT_EMULATE)" href=#pwndbg.aglib.disasm.arch.DO_NOT_EMULATE>DO_NOT_EMULATE

DEBUG_ENHANCEMENT module-attribute ¤

DEBUG_ENHANCEMENT = False
-

groups module-attribute ¤

groups = {v: _0for (k, v) in items() if startswith('CS_GRP_')}
-

ops module-attribute ¤

ops = {v: _cfor (k, v) in items() if startswith('CS_OP_')}
-

access module-attribute ¤

access = {v: _Ffor (k, v) in items() if startswith('CS_AC_')}
+

groups module-attribute ¤

groups = {v: _Ffor (k, v) in items() if startswith('CS_GRP_')}
+

ops module-attribute ¤

ops = {v: _Rfor (k, v) in items() if startswith('CS_OP_')}
+

access module-attribute ¤

access = {v: _2for (k, v) in items() if startswith('CS_AC_')}
 

DO_NOT_EMULATE module-attribute ¤

DO_NOT_EMULATE = {CS_GRP_INT, CS_GRP_INVALID, CS_GRP_IRET}
 

DisassemblyAssistant ¤

DisassemblyAssistant(architecture: X86_MATH_INSTRUCTIONS

groups module-attribute ¤

groups = {v: _xfor (k, v) in items() if startswith('X86_GRP_')}
-

ops module-attribute ¤

ops = {v: _sfor (k, v) in items() if startswith('X86_OP_')}
-

regs module-attribute ¤

regs = {v: _Pfor (k, v) in items() if startswith('X86_REG_')}
-

access module-attribute ¤

access = {v: _Qfor (k, v) in items() if startswith('CS_AC_')}
+   (pwndbg.aglib.disasm.x86.X86_MATH_INSTRUCTIONS)" href=#pwndbg.aglib.disasm.x86.X86_MATH_INSTRUCTIONS>X86_MATH_INSTRUCTIONS

groups module-attribute ¤

groups = {v: _sfor (k, v) in items() if startswith('X86_GRP_')}
+

ops module-attribute ¤

ops = {v: _4for (k, v) in items() if startswith('X86_OP_')}
+

regs module-attribute ¤

regs = {v: _1for (k, v) in items() if startswith('X86_REG_')}
+

access module-attribute ¤

access = {v: _efor (k, v) in items() if startswith('CS_AC_')}
 

X86_MATH_INSTRUCTIONS module-attribute ¤

X86_MATH_INSTRUCTIONS = {
     X86_INS_ADD: "+",
     X86_INS_SUB: "-",
diff --git a/dev/reference/pwndbg/commands/config/index.html b/dev/reference/pwndbg/commands/config/index.html
index 7fa10bf0b..335f550be 100644
--- a/dev/reference/pwndbg/commands/config/index.html
+++ b/dev/reference/pwndbg/commands/config/index.html
@@ -32,8 +32,11 @@
 

extend_value_with_default ¤

extend_value_with_default(value, default)
 

get_config_parameters ¤

get_config_parameters(scope: Scope, filter_pattern: str)
 

display_config ¤

display_config(
-    filter_pattern: str, scope: Scope, has_file_command: bool = True
-) -> None
+    filter_pattern: str,
+    scope: Scope,
+    has_file_command: bool = True,
+    show_hints: bool = True,
+) -> None
 

config ¤

config(filter_pattern) -> None
 

theme ¤

theme(filter_pattern) -> None
 

configfile ¤

configfile(show_all=False) -> None
diff --git a/dev/reference/pwndbg/dbg/lldb/pset/index.html b/dev/reference/pwndbg/dbg/lldb/pset/index.html
index 8e3c0b544..478a5669a 100644
--- a/dev/reference/pwndbg/dbg/lldb/pset/index.html
+++ b/dev/reference/pwndbg/dbg/lldb/pset/index.html
@@ -1,3 +1,4 @@
- pwndbg.dbg.lldb.pset - Documentation      

pset ¤

Classes:

Functions:

InvalidParse ¤

Bases: Exception

pset ¤

pset(name: str, value: str) -> bool
+ pwndbg.dbg.lldb.pset - Documentation      

pset ¤

Classes:

Functions:

  • pget

    Retrieves a parameter with a given name.

  • pset

    Parses and sets a Pwndbg configuration value.

  • parse_value

InvalidParse ¤

Bases: Exception

pget ¤

pget(name: str) -> Parameter | None
+

Retrieves a parameter with a given name.

pset ¤

pset(name: str, value: str) -> bool
 

Parses and sets a Pwndbg configuration value.

parse_value ¤

parse_value(param: Parameter, expression: str) -> Any
 
\ No newline at end of file diff --git a/dev/reference/pwndbg/dbg/lldb/repl/index.html b/dev/reference/pwndbg/dbg/lldb/repl/index.html index aed14e74c..3833bc13f 100644 --- a/dev/reference/pwndbg/dbg/lldb/repl/index.html +++ b/dev/reference/pwndbg/dbg/lldb/repl/index.html @@ -1,4 +1,4 @@ - pwndbg.dbg.lldb.repl - Documentation

repl ¤

The Pwndbg REPL that is the interface to all debugging on LLDB.

Pwndbg has an event system that allows it to react to events in the process being debugged, such as when new executable modules get added to the its address space, when the value of memory and registers change, and pretty much all possible changes to its execution state. We'd like to have the event system work the same way under LLDB as it does under GDB.

Fortunately for us, the events types that are native to LLDB map really well to the event types in GDB and Pwndbg. Very, very unfortunately for us, however, that's basically where our luck ends.

LLDB, as of version 18, only provides two ways to capture events: registering directly with the broadcaster, or registering globally. The former is not available to us in the standard LLDB REPL, as we don't get access to the process object until after it's been launched1. Likewise for the latter, as the interactive debugger will register to receive the global process state change events before everyone else, and LLDB doesn't allow for multiple listeners for the same event bits in the same event class2.

This leaves us with handling process management ourselves as the only option we really have to implement event dispatch in Pwndbg. Easy, right? We can just hijack the commands that deal with target and process creation, and leave everything else untouched. Unfortunately for us, again, shadowing builtin commands is simply not allowed3.

So, really, all that's left for us is either implement our own REPL, or get rid of the event system.

Modules:

  • io

    For our REPL, we need to drive our own I/O with the process being debugged. This

  • proc
  • readline

    Readline interface for the Pwndbg LLDB REPL.

Classes:

  • EventRelay

    The event system that is sensible for the REPL process driver to use isn't

  • YieldExecDirect

    Execute the given command directly, on behalf of the user.

  • YieldInteractive

    Prompt the user for the next command.

  • PwndbgController

    Class providing interfaces for a client to control the behavior of Pwndbg

Functions:

  • lex_args

    Splits the arguments, respecting quotation marks.

  • show_greeting

    Show the Pwndbg greeting, the same way the GDB version of Pwndbg would. This

  • run

    Runs the Pwndbg CLI through the given asynchronous controller.

  • exec_repl_command

    Parses and runs the given command, returning whether the event loop should continue.

  • parse

    Parses a list of string arguments into an object containing the parsed

  • run_ipython_shell
  • target_create

    Creates a new target, registers it with the Pwndbg LLDB implementation, and

  • process_launch

    Launches a process with the given arguments.

  • process_attach

    Attaches to a process with the given arguments.

  • attach

    Attaches to a process with the given name or pid based on regex match.

  • process_connect

    Connects to the given remote process.

  • gdb_remote

    Like process_connect, but more lenient with the remote URL format.

  • continue_process

    Continues the execution of a process.

Attributes: