|
|
|
|
@ -13,6 +13,7 @@ from pwndbg.color import ColorConfig
|
|
|
|
|
from pwndbg.color import ColorParamSpec
|
|
|
|
|
from pwndbg.color import ljust_colored
|
|
|
|
|
from pwndbg.color import strip
|
|
|
|
|
from pwndbg.color import theme
|
|
|
|
|
from pwndbg.color.message import off
|
|
|
|
|
from pwndbg.color.message import on
|
|
|
|
|
|
|
|
|
|
@ -23,6 +24,13 @@ c = ColorConfig(
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
config_branch_on = theme.add_param(
|
|
|
|
|
"disasm-branch-on", "✔", "marker for branches that WILL be taken"
|
|
|
|
|
)
|
|
|
|
|
config_branch_off = theme.add_param(
|
|
|
|
|
"disasm-branch-off", "✘", "marker for branches that will NOT be taken"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Returns colorized instructions assembly and operands, and checkmark if branch is taken
|
|
|
|
|
# Example: `✔ je _IO_file_xsputn+341`. Inline symbol replacements made. No annotation or branch targets shown.
|
|
|
|
|
@ -41,9 +49,9 @@ def one_instruction(ins: PwndbgInstruction) -> str:
|
|
|
|
|
|
|
|
|
|
# If we know the conditional is taken, mark it as taken.
|
|
|
|
|
if ins.condition == InstructionCondition.TRUE or ins.is_conditional_jump_taken:
|
|
|
|
|
asm = on("✔ ") + asm
|
|
|
|
|
asm = on(f"{config_branch_on} ") + asm
|
|
|
|
|
elif ins.condition == InstructionCondition.FALSE:
|
|
|
|
|
asm = off("✘ ") + asm
|
|
|
|
|
asm = off(f"{config_branch_off} ") + asm
|
|
|
|
|
else:
|
|
|
|
|
asm = f" {asm}"
|
|
|
|
|
|
|
|
|
|
|