예제 #1
0
파일: memory.py 프로젝트: Talanor/gxf
    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
예제 #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
예제 #3
0
파일: disassembly.py 프로젝트: Talanor/gxf
    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
예제 #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
예제 #5
0
파일: cpu.py 프로젝트: Talanor/gxf
def get_addrsz():
    return int(gxf.parse_and_eval("sizeof (void *)"))
예제 #6
0
파일: memory.py 프로젝트: Talanor/gxf
 def read_str(self, addr, *args, **kwargs):
     ptr = gxf.parse_and_eval("(char *)%#x" % addr)
     return ptr.string(*args, **kwargs)
예제 #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)
예제 #8
0
def get_addrsz():
    return int(gxf.parse_and_eval("sizeof (void *)"))
예제 #9
0
파일: memory.py 프로젝트: eax64/gxf
 def read_str(self, addr, *args, **kwargs):
     ptr = gxf.parse_and_eval("(char *)%#x" % addr)
     return ptr.string(*args, **kwargs)