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)
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)
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)