From bbcb5ba333ce4494576d13b0c18a6d8f69eae0c2 Mon Sep 17 00:00:00 2001 From: Zach Riggle Date: Mon, 20 Jul 2015 17:38:07 -0400 Subject: [PATCH] Add cpsr command --- pwndbg/__init__.py | 1 + pwndbg/commands/cpsr.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 pwndbg/commands/cpsr.py diff --git a/pwndbg/__init__.py b/pwndbg/__init__.py index 22d3a40b8..0b44a9232 100644 --- a/pwndbg/__init__.py +++ b/pwndbg/__init__.py @@ -41,6 +41,7 @@ import pwndbg.commands.aslr import pwndbg.commands.misc import pwndbg.commands.next import pwndbg.commands.dumpargs +import pwndbg.commands.cpsr __all__ = [ 'arch', diff --git a/pwndbg/commands/cpsr.py b/pwndbg/commands/cpsr.py new file mode 100644 index 000000000..5d29a321e --- /dev/null +++ b/pwndbg/commands/cpsr.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +import gdb +import pwndbg.arch +import pwndbg.color +import pwndbg.commands +import pwndbg.regs + +@pwndbg.commands.Command +@pwndbg.commands.OnlyWhenRunning +def cpsr(): + if pwndbg.arch.current != 'arm': + print("This is only available on ARM") + return + + cpsr = pwndbg.regs.cpsr + + N = cpsr & (1<<31) + Z = cpsr & (1<<30) + C = cpsr & (1<<29) + V = cpsr & (1<<28) + + bold = pwndbg.color.bold + + result = [ + bold('N') if N else 'n', + bold('Z') if Z else 'z', + bold('C') if C else 'c', + bold('V') if V else 'v' + ] + print('cpsr %#x [ %s ]' % (cpsr, ' '.join(result)))