1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/
/ our buffer looks like:
/ eax,ebx,ecx,edx,esi,edi,esp,ebp,pc
.globl _setjmp
.globl setjmp
_setjmp:
setjmp:
pushl %ebx
movl 8(%esp), %ebx
movl %eax, (%ebx)
popl %eax
movl %eax, 4(%ebx)
movl %ecx, 8(%ebx)
movl %edx, 12(%ebx)
movl %esi, 16(%ebx)
movl %edi, 20(%ebx)
movl %esp, 24(%ebx)
movl %ebp, 28(%ebx)
movl (%esp), %eax
movl %eax, 32(%ebx)
xorl %eax, %eax
ret
|