diff --git a/dev/feed_json_updated.json b/dev/feed_json_updated.json index 9a80f4076..762da6950 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/stable/", "feed_url": "https://pwndbg.re/stable/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/assets/favicon.ico", "authors": [], "language": "en", "items": [{"id": "https://pwndbg.re/stable/blog/2022/08/21/pwndbg-coding-sprints-report/", "url": "https://pwndbg.re/stable/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-12-13T03:04:55+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/stable/", "feed_url": "https://pwndbg.re/stable/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/assets/favicon.ico", "authors": [], "language": "en", "items": [{"id": "https://pwndbg.re/stable/blog/2022/08/21/pwndbg-coding-sprints-report/", "url": "https://pwndbg.re/stable/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-12-13T03:42:39+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 4471c20f1..b68cdece7 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/stable/https://github.com/pwndbg/pwndbg/en Sat, 13 Dec 2025 03:12:34 -0000 Sat, 13 Dec 2025 03:12:34 -0000 1440 MkDocs RSS plugin - v1.17.3 https://pwndbg.re/assets/favicon.ico pwndbg Bloghttps://pwndbg.re/stable/ Pwndbg coding sprints report Disconnect3d Report of the two coding sprints with Pwndbghttps://pwndbg.re/stable/blog/2022/08/21/pwndbg-coding-sprints-report/ Sun, 21 Aug 2022 00:00:00 +0000pwndbg Bloghttps://pwndbg.re/stable/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/stable/https://github.com/pwndbg/pwndbg/en Sat, 13 Dec 2025 03:44:46 -0000 Sat, 13 Dec 2025 03:44:46 -0000 1440 MkDocs RSS plugin - v1.17.3 https://pwndbg.re/assets/favicon.ico pwndbg Bloghttps://pwndbg.re/stable/ Pwndbg coding sprints report Disconnect3d Report of the two coding sprints with Pwndbghttps://pwndbg.re/stable/blog/2022/08/21/pwndbg-coding-sprints-report/ Sun, 21 Aug 2022 00:00:00 +0000pwndbg Bloghttps://pwndbg.re/stable/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 c0fc5e524..20663770d 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/stable/https://github.com/pwndbg/pwndbg/en Sat, 13 Dec 2025 03:12:34 -0000 Sat, 13 Dec 2025 03:12:34 -0000 1440 MkDocs RSS plugin - v1.17.3 https://pwndbg.re/assets/favicon.ico pwndbg Bloghttps://pwndbg.re/stable/ Pwndbg coding sprints report Disconnect3d Report of the two coding sprints with Pwndbghttps://pwndbg.re/stable/blog/2022/08/21/pwndbg-coding-sprints-report/ Sat, 13 Dec 2025 03:04:55 +0000pwndbg Bloghttps://pwndbg.re/stable/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/stable/https://github.com/pwndbg/pwndbg/en Sat, 13 Dec 2025 03:44:46 -0000 Sat, 13 Dec 2025 03:44:46 -0000 1440 MkDocs RSS plugin - v1.17.3 https://pwndbg.re/assets/favicon.ico pwndbg Bloghttps://pwndbg.re/stable/ Pwndbg coding sprints report Disconnect3d Report of the two coding sprints with Pwndbghttps://pwndbg.re/stable/blog/2022/08/21/pwndbg-coding-sprints-report/ Sat, 13 Dec 2025 03:42:39 +0000pwndbg Bloghttps://pwndbg.re/stable/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 fd0a11f35..363c32922 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 aa37ad3b5..3c2c85292 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: _ifor (k, v) in (items()) if startswith('CS_GRP_')}
-

ops module-attribute ¤

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

access module-attribute ¤

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

groups module-attribute ¤

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

ops module-attribute ¤

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

access module-attribute ¤

access = {v: _5for (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: _Kfor (k, v) in (items()) if startswith('X86_GRP_')}
-

ops module-attribute ¤

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

regs module-attribute ¤

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

access module-attribute ¤

access = {v: _7for (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: _Ofor (k, v) in (items()) if startswith('X86_GRP_')}
+

ops module-attribute ¤

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

regs module-attribute ¤

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

access module-attribute ¤

access = {v: _Lfor (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/aglib/regs/index.html b/dev/reference/pwndbg/aglib/regs/index.html
index cd24d7adc..258c8f4c1 100644
--- a/dev/reference/pwndbg/aglib/regs/index.html
+++ b/dev/reference/pwndbg/aglib/regs/index.html
@@ -130,7 +130,7 @@
 

last module-attribute ¤

last: dict[str, int]
 

pc module-attribute ¤

pc: int | None
 

tether module-attribute ¤

tether = modules[__name__]
-

module ¤

Bases: ModuleType

Methods:

Attributes:

module ¤

Bases: ModuleType

Methods:

Attributes:

__contains__ ¤

__contains__(reg: str) -> bool
 

__iter__ ¤

__iter__() -> Iterator[str]
 

fix ¤

fix(expression: str) -> str
-

items ¤

items() -> Generator[tuple[str, Any], None, None]
+

This is used in CLI parsing. It takes in a string with a register name, "rax", and prefixes it with a $ ("$rax") so that the underlying debugger can evaluate it to resolve the value

items ¤

items() -> Generator[tuple[str, Any], None, None]
 

__repr__ ¤

__repr__() -> str
 

regs_in_frame ¤

regs_in_frame(frame: Frame) -> Registers
 

get_register ¤

get_register(name: str, frame: Frame | None = None) -> Value | None
diff --git a/dev/reference/pwndbg/lib/elftypes/index.html b/dev/reference/pwndbg/lib/elftypes/index.html
index 99b2ec23e..2ba9c8c2f 100644
--- a/dev/reference/pwndbg/lib/elftypes/index.html
+++ b/dev/reference/pwndbg/lib/elftypes/index.html
@@ -135,7 +135,7 @@
     47: "AT_L3_CACHEGEOMETRY",
     51: "AT_MINSIGSTKSZ",
 }
-

AT_CONSTANT_NAMES module-attribute ¤

AT_CONSTANT_NAMES = {v: _7for (k, v) in (items())}
+

AT_CONSTANT_NAMES module-attribute ¤

AT_CONSTANT_NAMES = {v: _Nfor (k, v) in (items())}
 

constants ¤

Attributes:

Attributes:

  • Methods:

    Attributes:

    • Reg, ...]) –

    name instance-attribute ¤

    name: str
    +   (pwndbg.lib.regs.Reg)" href=#pwndbg.lib.regs.Reg>Reg, ...]) – 

    Bitmask for register. None if the register size is arch.ptrsize

  • mask (int | None) –

name instance-attribute ¤

name: str
 

size class-attribute instance-attribute ¤

size: int | None = None
 

Register width in bytes. None if the register size is arch.ptrsize

offset class-attribute instance-attribute ¤

offset: int = 0
 

Relevant for subregisters - the offset of this register in the main register

zero_extend_writes class-attribute instance-attribute ¤

zero_extend_writes: bool = False
@@ -2826,6 +2833,8 @@
   
       dataclass
    (pwndbg.lib.regs.Reg)" href=#pwndbg.lib.regs.Reg>Reg, ...] = ()
+

Bitmask for register. None if the register size is arch.ptrsize

mask class-attribute instance-attribute ¤

mask: int | None = None
+

__post_init__ ¤

__post_init__() -> None
 

RegisterSet ¤

RegisterSet(
     pc: KernelRegisterSet | None = None,
     retval: str | None = None,
 )
-

Methods:

Attributes:

  • Methods:

    Attributes:

    • all (set[str]) –

      All valid registers

    pc instance-attribute ¤

    pc: str = name
    +   (pwndbg.lib.regs.RegisterSet.all)" href=#pwndbg.lib.regs.RegisterSet.all>all (set[str]) – 

    All valid registers

  • special_aliases (dict[str, str]) –

    Contains two values:

pc instance-attribute ¤

pc: str = name
 

Program counter register

stack instance-attribute ¤

stack: str = name
 

Stack pointer register

frame class-attribute instance-attribute ¤

frame: str | None = name if frame else None
 

Frame pointer register

retaddr instance-attribute ¤

retaddr: tuple[str, ...] = tuple((name) for x in retaddr)
@@ -3009,7 +3023,9 @@
     | set(common)
     | set(all_subregisters)
 )
-

All valid registers

__contains__ ¤

__contains__(reg: str) -> bool
+

All valid registers

special_aliases instance-attribute ¤

special_aliases: dict[str, str] = {}
+

Contains two values: - "sp" -> stack pointer register name - "pc" -> instruction pointer register name

resolve_aliases ¤

resolve_aliases(reg: str) -> str
+

Convert "sp" and "pc" to the real architectural registers. For all others, returns reg

__contains__ ¤

__contains__(reg: str) -> bool
 

__iter__ ¤

__iter__() -> Iterator[str]
 

PseudoEmulatedRegisterFile ¤

PseudoEmulatedRegisterFile(register_set: RegisterSet, ptrsize: int)
 

This class represents a set of registers that can be written, read, and invalidated.

The aim is to allow some manual dynamic/static analysis without the need for a full emulator.

The implementation can handle the behavior of architectures with partial registers, such as x86 (Ex: rax has "eax", "ax", "ah", and "al" as subregisters) or AArch64 (Ex: X0 contains W0). Most of the complexity of the bitshifts and masks arise from the necessity to handle these cases.

Methods:

Attributes: