Example #1
0
    def read_ptr(self, addr):
        # TODO: maybe use read_memory stuff ?

        try:
            val = gxf.parse_and_eval("*(void **)%#x" % addr)
            val.fetch_lazy()
        except gdb.MemoryError as e:
            raise gxf.MemoryError(e)

        return val
Example #2
0
    def read_ptr(self, addr):
        # TODO: maybe use read_memory stuff ?

        try:
            val = gxf.parse_and_eval("*(void **)%#x" % addr)
            val.fetch_lazy()
        except gdb.MemoryError as e:
            raise gxf.MemoryError(e)

        return val
Example #3
0
    def get_heading(self, stack="$sp"):

        # We need three primitives:
        #   compute_jmp_addr  (flags + expression)
        #   compute_ret_addr  (from stack)
        #   compute_call_addr (expression)

        if self.itype is RET:
            return gxf.parse_and_eval("*(void **) (%s)" % stack)

        if self.itype is CALL:
            exp = self.get_expression()
            val = exp.eval()
            return val

        if self.itype is JMP and check_flags(self.inst):
            exp = self.get_expression()
            val = exp.eval()
            return val
Example #4
0
    def get_heading(self, stack="$sp"):

        # We need three primitives:
        #   compute_jmp_addr  (flags + expression)
        #   compute_ret_addr  (from stack)
        #   compute_call_addr (expression)

        if self.itype is RET:
            return gxf.parse_and_eval("*(void **) (%s)" % stack)

        if self.itype is CALL:
            exp = self.get_expression()
            val = exp.eval()
            return val

        if self.itype is JMP and check_flags(self.inst):
            exp = self.get_expression()
            val = exp.eval()
            return val
Example #5
0
File: cpu.py Project: Talanor/gxf
def get_addrsz():
    return int(gxf.parse_and_eval("sizeof (void *)"))
Example #6
0
 def read_str(self, addr, *args, **kwargs):
     ptr = gxf.parse_and_eval("(char *)%#x" % addr)
     return ptr.string(*args, **kwargs)
Example #7
0
 def read_str(self, addr, *args, maxlen=4096, **kwargs):
     if maxlen is not None:
         ptr = gxf.parse_and_eval("*(char (*)[%d])%#x" % (maxlen, addr))
     else:
         ptr = gxf.parse_and_eval("(char *)%#x" % addr)
     return ptr.string(*args, **kwargs)
Example #8
0
def get_addrsz():
    return int(gxf.parse_and_eval("sizeof (void *)"))
Example #9
0
File: memory.py Project: eax64/gxf
 def read_str(self, addr, *args, **kwargs):
     ptr = gxf.parse_and_eval("(char *)%#x" % addr)
     return ptr.string(*args, **kwargs)