Difference between revisions of "LU-LSP-b13:L09"
(New page: === Praktiskais darbs #9 - steka satura analīze un piekļuve stekam. === * [http://www.codeproject.com/KB/windows/CallStackTest/StackLayout2.jpg Steka kadra uzbūve x86 arhitektūrā]. ...) |
|||
Line 5: | Line 5: | ||
* Funkciju izsaukumu analīze. printf() lietošana steka satura izdrukai. |
* Funkciju izsaukumu analīze. printf() lietošana steka satura izdrukai. |
||
* Koda disasamblēšana ar ''objdump'' vai |
* Koda disasamblēšana ar ''objdump'' vai ''gdb'' programmām. |
||
* Piekļuve reģistru saturam caur inline asamblera kodu. |
* Piekļuve reģistru saturam caur inline asamblera kodu. |
Revision as of 17:12, 19 November 2013
Praktiskais darbs #9 - steka satura analīze un piekļuve stekam.
- Funkciju izsaukumu analīze. printf() lietošana steka satura izdrukai.
- Koda disasamblēšana ar objdump vai gdb programmām.
- Piekļuve reģistru saturam caur inline asamblera kodu.
#define GET_EBP_VALUE(result) \ asm volatile("movl %%ebp, %0\n" : "=m" (result))
Iesūtīšana
Šis PD ir opcionāls.
Uzdevumi:
1) Panākt, ka f() izsauc sevi izmantojot steka pārpildi (bez ASM koda).
2) Panākt, ka f() veiksmīgi izsauc funkciju system() ar argumentu "touch file.txt", izmantojot steka pārpildi
Programmas kods
#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> void f(void) { char s[16]; gets(s); printf("%s\n", s); } int main(void) { f(); return 0; }