diff --git a/dev/feed_json_updated.json b/dev/feed_json_updated.json index 5d0c7b1f1..4d281071a 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-10-17T01:22:00+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-10-17T11:55:03+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 3bbcf95ff..cc1123fa4 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 Fri, 17 Oct 2025 01:24:18 -0000 Fri, 17 Oct 2025 01:24:18 -0000 1440 MkDocs RSS plugin - v1.17.3 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 Fri, 17 Oct 2025 11:56:59 -0000 Fri, 17 Oct 2025 11:56:59 -0000 1440 MkDocs RSS plugin - v1.17.3 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 23cf8fd2e..ba1336afe 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 Fri, 17 Oct 2025 01:24:18 -0000 Fri, 17 Oct 2025 01:24:18 -0000 1440 MkDocs RSS plugin - v1.17.3 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/ Fri, 17 Oct 2025 01:22: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 Fri, 17 Oct 2025 11:56:59 -0000 Fri, 17 Oct 2025 11:56:59 -0000 1440 MkDocs RSS plugin - v1.17.3 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/ Fri, 17 Oct 2025 11:55:03 +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 d32d6c540..bc7807703 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 eda63c110..502d4b35c 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: _8for (k, v) in (items()) if startswith('CS_GRP_')}
-

ops module-attribute ¤

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

access module-attribute ¤

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

groups module-attribute ¤

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

ops module-attribute ¤

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

access module-attribute ¤

access = {v: _wfor (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: instruction - Documentation      

instruction ¤

Classes:

Functions:

Attributes:

target_string instance-attribute ¤

target_string: str | None
 

target_const instance-attribute ¤

target_const: bool | None
 

condition instance-attribute ¤

declare_conditional instance-attribute ¤

declare_conditional: bool | None
 

declare_is_unconditional_jump instance-attribute ¤

declare_is_unconditional_jump: bool
 

force_unconditional_jump_target instance-attribute ¤

force_unconditional_jump_target: bool
 

annotation instance-attribute ¤

annotation: str | None
@@ -419,12 +403,7 @@
 
   
       instance-attribute
-   (pwndbg.aglib.disasm.instruction.PwndbgInstructionImpl.condition)" href=#pwndbg.aglib.disasm.instruction.PwndbgInstructionImpl.condition>condition (InstructionCondition) – 

Does the condition that the instruction checks for pass?

  • declare_conditional (bool | None) –

    This field is used to declare if the instruction is a conditional instruction.

  • condition (InstructionCondition) –

    Does the condition that the instruction checks for pass?

  • UNDETERMINED -
  • Does the condition that the instruction checks for pass?

    For example, "JNE" jumps if Zero Flag is 0, else it does nothing. "CMOVA" conditionally performs a move depending on a flag. See 'condition' function in pwndbg.aglib.disasm.x86 for example on setting this.

    UNDETERMINED if we cannot reason about the condition, or if the instruction always executes unconditionally (most instructions).

    TRUE if the instruction has a conditional action, and we determine it is taken.

    FALSE if the instruction has a conditional action, and we know it is not taken.

    declare_conditional instance-attribute ¤

    declare_conditional: bool | None = None
    -

    This field is used to declare if the instruction is a conditional instruction. In most cases, we can determine this purely based on the instruction ID, and this field is irrelevent. However, in some arches, like Arm, the same instruction can be made conditional by certain instruction attributes. Ex: Arm, bls instruction. This is encoded as a b under the code, with an additional condition code field. In this case, sometimes a b instruction is unconditional (always branches), in other cases it is conditional. We use this field to disambiguate these cases.

    True if we manually determine this instruction is a conditional instruction False if it's not a conditional instruction None if we don't have a determination (most cases)

    declare_is_unconditional_jump instance-attribute ¤

    declare_is_unconditional_jump: bool = False
    +

    Does the condition that the instruction checks for pass?

    For example, "JNE" jumps if Zero Flag is 0, else it does nothing. "CMOVA" conditionally performs a move depending on a flag. See 'condition' function in pwndbg.aglib.disasm.x86 for example on setting this.

    UNDETERMINED if we cannot reason about the condition, or if the instruction always executes unconditionally (most instructions).

    TRUE if the instruction has a conditional action, and we determine it is taken.

    FALSE if the instruction has a conditional action, and we know it is not taken.

    declare_is_unconditional_jump instance-attribute ¤

    declare_is_unconditional_jump: bool = False
     

    This field is used to declare that this instruction is an unconditional jump. Most of the time, we depend on Capstone groups to check for jump instructions. However, some instructions become branches depending on the operands, such as Arm add, sub, ldr, pop, where PC is the destination register

    In these cases, we want to forcefully state that this instruction mutates the PC, so we set this attribute to True.

    This helps in two cases: 1. Disassembly splits 2. Instructions like stepuntilasm work better, as they detect these as branches to stop at.

    force_unconditional_jump_target instance-attribute ¤

    force_unconditional_jump_target: bool = False
     

    This asserts that the .target attribute is the real target of the instruction. This is only relevent in the edge case that the target is the next instruction in memory (address + size). The normal check for "target" checks that the target is NOT the next address in memory, and here we can assert that even if that is the case, we know that the jump really does just go to where self.target is.

    annotation instance-attribute ¤

    annotation: str | None = None
     

    The string is set in the "DisassemblyAssistant.enhance" function. It is used in the disasm print view to add context to the instruction, mostly operand value. This string is not used for all cases - if the instruction is a call or a jump, the 'target'. variables is used instead. See 'pwndbg.color.disasm.instruction()' for specific usage.

    annotation_padding instance-attribute ¤

    annotation_padding: int | None = None
    @@ -715,12 +693,7 @@ BRANCH_NOT_TAKEN    - an empty newline
     
       
           instance-attribute
    -   (pwndbg.aglib.disasm.instruction.ManualPwndbgInstruction.condition)" href=#pwndbg.aglib.disasm.instruction.ManualPwndbgInstruction.condition>condition
  • declare_conditional
  • condition
  • UNDETERMINED -
  • declare_conditional instance-attribute ¤

    declare_conditional = None
     

    declare_is_unconditional_jump instance-attribute ¤

    declare_is_unconditional_jump = False
     

    force_unconditional_jump_target instance-attribute ¤

    force_unconditional_jump_target = False
     

    annotation instance-attribute ¤

    annotation = None
    diff --git a/dev/reference/pwndbg/aglib/disasm/x86/index.html b/dev/reference/pwndbg/aglib/disasm/x86/index.html
    index 5d46604d4..31ff8d854 100644
    --- a/dev/reference/pwndbg/aglib/disasm/x86/index.html
    +++ b/dev/reference/pwndbg/aglib/disasm/x86/index.html
    @@ -23,10 +23,10 @@
     
       
           module-attribute
    -   (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: _bfor (k, v) in (items()) if startswith('X86_OP_')}
    -

    regs module-attribute ¤

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

    access module-attribute ¤

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

    ops module-attribute ¤

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

    regs module-attribute ¤

    regs = {v: _Tfor (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/lib/elftypes/index.html b/dev/reference/pwndbg/lib/elftypes/index.html
    index 39f7f182b..70ca580db 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: _wfor (k, v) in (items())}
    +

    AT_CONSTANT_NAMES module-attribute ¤

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

    constants ¤

    Attributes: