LU-LSP-b13:L09

From DiLab
Revision as of 18:12, 19 November 2013 by Atis (talk | contribs)
Jump to: navigation, search

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;
}