From 71159e33c2e45e3f68181438fddb04d87a8fb829 Mon Sep 17 00:00:00 2001 From: DocBot Date: Sat, 13 Dec 2025 03:45:52 +0000 Subject: [PATCH] Deployed 662b001 to dev with MkDocs 1.6.1 and mike 2.1.3 --- dev/feed_json_updated.json | 2 +- dev/feed_rss_created.xml | 2 +- dev/feed_rss_updated.xml | 2 +- dev/objects.inv | Bin 43068 -> 43109 bytes .../pwndbg/aglib/disasm/arch/index.html | 6 ++-- .../pwndbg/aglib/disasm/x86/index.html | 8 ++--- dev/reference/pwndbg/aglib/regs/index.html | 4 +-- dev/reference/pwndbg/lib/elftypes/index.html | 2 +- dev/reference/pwndbg/lib/regs/index.html | 30 ++++++++++++++---- dev/search/search_index.json | 2 +- 10 files changed, 37 insertions(+), 21 deletions(-) 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 fd0a11f3568cf592209745f2f9be1a0ae71de7ac..363c32922119ff9a24428f4b471c15c8240f7ec7 100644 GIT binary patch delta 1141 zcmV-*1d98-&;sSq0Y?!(P^8M4DL^VtC zX~Dr2XSTaJ-!rJ{(?O{ir-pMPTfNQuv;gJ10*4f&heQ3=ZO)?2e>%WBOhM8-q&X6p zUm+92lfyX>6P26JomXHS!FznSwYS<#9LFC8hB}RZkbTGS7t9mV4p6^vOSDw!( zoC}gGYI|3#SKf6Je+6ltw74Iw%AaPLZ{hf(bwCM7n^2K#wmbeF6;bJLVv2A{e#OFR zZQsv>eH}xl?=e9NAVF5-r}e@j72gDm81Gxn;Vy!iUR z|9Ce@p0NhdPyYVzKlFQGQHD_}f0PxU-A+7MwTRwDMoLigy$QmBoovc!e^pfeveAb* zR&-wzbpiO(egSDE@nIK0{GHXx69ueVZu3fd$XXMe{v5Smb|MDCmMV-uccgL}|G^m6 z%x033v9E3>e;quHxJQbGRQa@_PfEK+@s2Rv6wGCe|K~qT(hrUyI_8CfE1%E`Eg~| z1@JD<{wB3qEI*5B(NbA`rdJ6DLq7Z;g>JU=7%5HOD0xdWF9)$-32n*#`+-lKEKk{F z-)P8nSHtnM+ljgACSNo9D+3Ct{X(+|?LY~Q{j8wUQ42;NtuB#hX=V!J_ll;B?5z5` z26G2PfBbdU_&0nbH{Os>iE=;mbNZ#f%QPQdNNavK$iD;!X`A)~vM8fkgy?r9S>41Z z*NF!CZ%D2?6N7SmmAat(6xyHR`kNcc&QkYDy^+3(`bAdJr_aTkXKlycC+a%g#!nKt zD!_F*z5uZHAa79;rf(qUn71KDfLggbON*$re-7;$f1lEx?X$X4oPYk7bN2-@=c4Ub zHzNv{8NX;SBD3!5CocM0 zzdxy`pEPLd)vU4D=`?sLXaMYx?dSb4F&=aOjiglx&K?kbNRt=(!5S>s6ZR3?4HC9% zYdR3fwY{pWETZIOmy1cxX`H9HY_7FN<1Mfuo3DFOgC&jAz~}k$8b?_2iADoFc$&-~ z$jI?PLr_P+n8(rb#@}6Q68^KEF34&!M=S%MnA*28=@bDX@?p74OMVfVe}KE)1^WL1 HT6B0BqvbhPWmfR>PF0Wj>=J%+G zN`Dhmgj?P#7EWvXe|{e9>mVq7x8YI%39=$Ttu!(ofYDgs1Q8Kc2UgnS)Bqn6{z z$!TfQq~r&q#5f&?ao%w_fkAPiumAo-KQ-IABs$0-U@qhK$u8S&Ze#3zI-54Rz|Ax@)y-!SfHzZ?9?U4pC^i}})XN9WNY`|7m| z<`)M@F}ji;S7u!R@AB+#QrmU%vzQhwmDOi@m0&RBf5ZP#C>KkQk<#Rima;VSauEBK zQ1|PXjfz)yH5@;?otWz$@-?HsGN6#!u`!#_4wTT?&k8CXwP5toY!Hc- zW~MNHQ)kM^&Z@s_Fn2J-UuTVf!?|zc&i9lk_d`FYU;4XD^U;O0=68eqOK_03X+I!~ zGO9(0e||@j)lGbIooJB%hUB_4F(}7ZsSC1>17L@2KktW$@tFH>B&|wt_JHU^n!L~t z)?mS&u#ebokg#3Tfk3Y9Rb^!nB`3pDOma@+JjG>mwJRELfeqPw-HRG5X`BW=&zIMD zLUNK%G#cQ+(`5cYMvey>f;s}mJP?#O{_a|n@SpW`K~|GFVj1|v)V`HTrw9;{56fLz S@{7p)1KjN{(Ekt06zMKc=Qei$ 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: