Exploits
- 18. EAX
EBX
ECX
EDX
EIP – instruction pointer
ESP – stack pointer
- 21. SUB A,B
ADD A,B
DIV A,B
AND A,B
OR A,B
XOR A,B
et al.
- 24. void foo(int k, int j)
{ push ebp;
mov ebp, esp;
char buf[256]; sub esp, 256;
...
mov esp, ebp;
pop ebp;
} ret;
int main()
{
push 2;
push 1;
foo(1, 2); call foo;
add esp, 8;
}
- 25. foo:
01 push ebp;
02 mov ebp, esp;
03 sub esp, 256;
...
10 mov esp, ebp;
11 pop ebp;
12 ret;
main:
...
EIP -> 20 push 2;
21 push 1;
22 call foo [01]; Старый фрейм
23 add esp, 8;
EIP возврата
...
...
- 26. foo:
01 push ebp;
02 mov ebp, esp;
03 sub esp, 256;
...
10 mov esp, ebp;
11 pop ebp;
12 ret;
main:
...
20 push 2;
EIP -> 21 push 1; Параметр 2
22 call foo [01]; Старый фрейм
23 add esp, 8;
EIP возврата
...
...
- 27. foo:
01 push ebp;
02 mov ebp, esp;
03 sub esp, 256;
...
10 mov esp, ebp;
11 pop ebp;
12 ret;
main:
... Параметр 1
20 push 2;
21 push 1; Параметр 2
EIP -> 22 call foo [01]; Старый фрейм
23 add esp, 8;
EIP возврата
...
...
- 28. foo:
EIP -> 01 push ebp;
02 mov ebp, esp;
03 sub esp, 256;
...
10 mov esp, ebp;
11 pop ebp;
12 ret;
main: EIP возврата [23]
... Параметр 1
20 push 2;
21 push 1; Параметр 2
22 call foo [01]; Старый фрейм
23 add esp, 8;
EIP возврата
...
...
- 29. foo:
01 push ebp;
EIP -> 02 mov ebp, esp;
03 sub esp, 256;
...
10 mov esp, ebp;
11 pop ebp;
12 ret;
Старый фрейм
main: EIP возврата [23]
... Параметр 1
20 push 2;
21 push 1; Параметр 2
22 call foo [01]; Старый фрейм
23 add esp, 8;
EIP возврата
...
...
- 30. foo:
01 push ebp;
02 mov ebp, esp;
EIP -> 03 sub esp, 256;
...
10 mov esp, ebp;
11 pop ebp;
12 ret;
Старый фрейм
main: EIP возврата [23]
... Параметр 1
20 push 2;
21 push 1; Параметр 2
22 call foo [01]; Старый фрейм
23 add esp, 8;
EIP возврата
...
...
- 31. foo: buf[256]
01 push ebp;
02 mov ebp, esp;
03 sub esp, 256;
EIP -> ...
10 mov esp, ebp;
11 pop ebp;
12 ret;
Старый фрейм
main: EIP возврата [23]
... Параметр 1
20 push 2;
21 push 1; Параметр 2
22 call foo [01]; Старый фрейм
23 add esp, 8;
EIP возврата
...
...
- 32. foo: buf[256]
01 push ebp;
02 mov ebp, esp;
03 sub esp, 256;
...
EIP -> 10 mov esp, ebp;
11 pop ebp;
12 ret;
Старый фрейм
main: EIP возврата [23]
... Параметр 1
20 push 2;
21 push 1; Параметр 2
22 call foo [01]; Старый фрейм
23 add esp, 8;
EIP возврата
...
...
- 33. foo:
01 push ebp;
02 mov ebp, esp;
03 sub esp, 256;
...
10 mov esp, ebp;
EIP -> 11 pop ebp;
12 ret;
Старый фрейм
main: EIP возврата [23]
... Параметр 1
20 push 2;
21 push 1; Параметр 2
22 call foo [01]; Старый фрейм
23 add esp, 8;
EIP возврата
...
...
- 34. foo:
01 push ebp;
02 mov ebp, esp;
03 sub esp, 256;
...
10 mov esp, ebp;
11 pop ebp;
EIP -> 12 ret;
main: EIP возврата [23]
... Параметр 1
20 push 2;
21 push 1; Параметр 2
22 call foo [01]; Старый фрейм
23 add esp, 8;
EIP возврата
...
...
- 35. foo:
01 push ebp;
02 mov ebp, esp;
03 sub esp, 256;
...
10 mov esp, ebp;
11 pop ebp;
12 ret;
main:
... Параметр 1
20 push 2;
21 push 1; Параметр 2
22 call foo [01]; Старый фрейм
EIP -> 23 add esp, 8;
EIP возврата
...
...
- 36. foo:
01 push ebp;
02 mov ebp, esp;
03 sub esp, 256;
...
10 mov esp, ebp;
11 pop ebp;
12 ret;
main:
...
20 push 2;
21 push 1;
22 call foo [01]; Старый фрейм
23 add esp, 8;
EIP возврата
EIP -> ...
...
- 37. foo: buf[256]
01 push ebp;
02 mov ebp, esp;
03 sub esp, 256;
EIP -> ...
10 mov esp, ebp;
11 pop ebp;
12 ret;
Старый фрейм
main: EIP возврата [23]
... Параметр 1
20 push 2;
21 push 1; Параметр 2
22 call foo [01]; Старый фрейм
23 add esp, 8;
EIP возврата
...
- 38. foo: buf[256]
01 push ebp;
02 mov ebp, esp;
03 sub esp, 256; «полезная нагрузка»
EIP -> ...
10 mov esp, ebp;
11 pop ebp;
12 ret;
Старый фрейм
main: EIP возврата
... Параметр 1
20 push 2;
21 push 1; Параметр 2
22 call foo [01]; Старый фрейм
23 add esp, 8;
EIP возврата
...