Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 5
0
Archivo: cpu.py Proyecto: Talanor/gxf
def get_addrsz():
    return int(gxf.parse_and_eval("sizeof (void *)"))
Ejemplo n.º 6
0
 def read_str(self, addr, *args, **kwargs):
     ptr = gxf.parse_and_eval("(char *)%#x" % addr)
     return ptr.string(*args, **kwargs)
Ejemplo n.º 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)
Ejemplo n.º 8
0
def get_addrsz():
    return int(gxf.parse_and_eval("sizeof (void *)"))
Ejemplo n.º 9
0
Archivo: memory.py Proyecto: eax64/gxf
 def read_str(self, addr, *args, **kwargs):
     ptr = gxf.parse_and_eval("(char *)%#x" % addr)
     return ptr.string(*args, **kwargs)