def platformSetRegCtx(self, tid, ctx):
state = STRUCT_X86_THREAD_STATE32()
# Sync up a struct first...
scount = ctypes.c_uint32(ctypes.sizeof(state) / 4)
ret = self.libc.thread_get_state(tid, x86_THREAD_STATE32, addrof(state), addrof(scount));
if ret != 0:
raise Exception('thread_get_state (THREAD_STATE32) failed: 0x%.8x' % ret)
# Export our shit into it...
ctx._rctx_Export(state)
scount = ctypes.sizeof(state) / 4
r = self.libc.thread_set_state(tid, x86_THREAD_STATE32, addrof(state), scount)
if r != 0:
raise Exception('thread_set_state (THREAD_STATE32) failed: 0x%.8x' % r)
state = STRUCT_X86_DEBUG_STATE32()
ctx._rctx_Export(state)
scount = ctypes.sizeof(state) / 4
r = self.libc.thread_set_state(tid, x86_DEBUG_STATE32, addrof(state), scount)
if r != 0:
raise Exception('thread_set_state (DEBUG_STATE32) failed: 0x%.8x' % r)
评论列表
文章目录