示例#1
0
文件: linux.py 项目: eqv/usercorn
def syscall(cls):
    regs = [UC_X86_REG_EBX, UC_X86_REG_ECX, UC_X86_REG_EDX, UC_X86_REG_ESI, UC_X86_REG_EDI, UC_X86_REG_EBP]
    args = [cls.reg_read(r) for r in regs]
    num = cls.reg_read(UC_X86_REG_EAX)
    ret = syscalls.call(cls, SYSCALLS, num, lambda n: args[:n])
    cls.reg_write(UC_X86_REG_EAX, ret)
示例#2
0
文件: linux.py 项目: eqv/usercorn
def syscall(cls):
    num, args = syscall_args(cls)
    ret = syscalls.call(cls, SYSCALLS, num, lambda n: args[:n])
    cls.reg_write(UC_X86_REG_RAX, ret)
示例#3
0
文件: darwin.py 项目: eqv/usercorn
def syscall(cls):
    esp = cls.reg_read(UC_X86_REG_ESP)
    num = cls.reg_read(UC_X86_REG_EAX)
    ret = syscalls.call(cls, SYSCALLS, num, syscalls.stack_args(cls))
    cls.reg_write(UC_X86_REG_EAX, ret)
    cls.reg_write(UC_X86_REG_ESP, esp)