Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Inżynieria wsteczna
Tok studiów:
2018/2019
Kod:
JIS-2-005-GK-s
Wydział:
Fizyki i Informatyki Stosowanej
Poziom studiów:
Studia II stopnia
Specjalność:
Grafika komputerowa i przetwarzanie obrazów
Kierunek:
Informatyka Stosowana
Semestr:
0
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
Osoba odpowiedzialna:
dr hab. inż. Mindur Bartosz (mindur@agh.edu.pl)
Osoby prowadzące:
dr hab. inż. Mindur Bartosz (mindur@agh.edu.pl)
Krótka charakterystyka modułu

Przedmiot porusza problematykę analizy oprogramowania pod względem jego odporności na błędy oraz na aspekty bezpieczeństwa związane z ochroną oprogramowania przed różnego rodzaju atakami.

Opis efektów kształcenia dla modułu zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Powiązania z EKK Sposób weryfikacji efektów kształcenia (forma zaliczeń)
Wiedza
M_W001 Student zna i potrafi wyjaśnić działanie zaawansowanych konstrukcji używanych w językach wysokiego i niskiego poziomu IS2A_W05 Wykonanie ćwiczeń laboratoryjnych,
Referat,
Aktywność na zajęciach
M_W002 Student zna zaawansowane cechy i elementy charakterystyczne dla obiektowych, uogólnionych i niskopoziomowych języków programowania. IS2A_W05 Wykonanie ćwiczeń laboratoryjnych,
Wykonanie projektu,
Referat,
Aktywność na zajęciach
Umiejętności
M_U001 Student potrafi przygotować dokumentację oraz prezentację poświęconą zaawansowanym zagadnieniom programistycznym IS2A_U01, IS2A_U02 Wykonanie ćwiczeń laboratoryjnych,
Wykonanie projektu,
Aktywność na zajęciach
M_U002 Student potrafi napisać program z wykorzystaniem paradygmatów programowania obiektowego połączonych z paradygmatami programowania uogólnionego. Student potrafi wykonywać analizę kodu binarnego istniejącego oprogramowania. IS2A_U01, IS2A_U02, IS2A_U08 Wykonanie ćwiczeń laboratoryjnych,
Wykonanie projektu,
Referat,
Aktywność na zajęciach
Kompetencje społeczne
M_K001 Student potrafi samodzielnie i w zespole pracować i zdobyć odpowiednią wiedzę i umiejętności niezbędne do realizacji postawionego przed nim zadania IS2A_K01, IS2A_K02 Wykonanie ćwiczeń laboratoryjnych,
Wykonanie projektu,
Aktywność na zajęciach
M_K002 Student ma świadomość odpowiedzialności za własną pracę. IS2A_K02 Wykonanie ćwiczeń laboratoryjnych,
Wykonanie projektu,
Aktywność na zajęciach
Matryca efektów kształcenia w odniesieniu do form zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Forma zajęć
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Inne
E-learning
Wiedza
M_W001 Student zna i potrafi wyjaśnić działanie zaawansowanych konstrukcji używanych w językach wysokiego i niskiego poziomu - - + + - + - - - - -
M_W002 Student zna zaawansowane cechy i elementy charakterystyczne dla obiektowych, uogólnionych i niskopoziomowych języków programowania. - - + + - + - - - - -
Umiejętności
M_U001 Student potrafi przygotować dokumentację oraz prezentację poświęconą zaawansowanym zagadnieniom programistycznym - - + + - + - - - - -
M_U002 Student potrafi napisać program z wykorzystaniem paradygmatów programowania obiektowego połączonych z paradygmatami programowania uogólnionego. Student potrafi wykonywać analizę kodu binarnego istniejącego oprogramowania. - - + + - + - - - - -
Kompetencje społeczne
M_K001 Student potrafi samodzielnie i w zespole pracować i zdobyć odpowiednią wiedzę i umiejętności niezbędne do realizacji postawionego przed nim zadania - - + + - - - - - - -
M_K002 Student ma świadomość odpowiedzialności za własną pracę. - - + + - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Ćwiczenia laboratoryjne:
Tematyka

Studenci w ramach prowadzonych zajęć laboratoryjnych będą samodzielnie pisać oraz testować, weryfikować jak również dokonywać oceny działania oraz funkcjonowania już istniejącego oprogramowania. Studenci będą również dokonywać modyfikacji istniejącego już oprogramowania w wersji binarnej.

Ćwiczenia projektowe:
Tematyka

Studenci w dwuosobowych zespołach realizują projekty. Każdy zespół otrzymuje do wykonania inny projekt. Punktem wyjścia dla studentów są dostarczone założenia i wskazówki projektowe. W ramach projektu należy zaprezentować wybrany aspekt wykorzystania inżynierii wstecznej.

Zajęcia seminaryjne:
Tematyka

Podstawowe narzędzia do inżynierii wstecznej – podstawowe (file, strings, readelf, hexdump) po deasemblery/dekompilatory oraz debuggery.
Omówienie zabezpieczeń plików ELF.
Analiza błędów typu przepełnienie stosu (ang. buffer overflow)
Analiza błędów związanych ze stringiem formatującym (ang. string format bug).
Inżynieria wsteczna i wykorzystanie braku zabezpieczenia relro (wykorzystywanie sekcji re-alokacji plików w formacie ELF)
Analiza błędów związanych z niepoprawnym zarządzaniem pamięcią (tzw. “use after free”).
Inżynieria wsteczna specjalnie przygotowanych przykładów oprogramowania.

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 140 godz
Punkty ECTS za moduł 5 ECTS
Udział w ćwiczeniach laboratoryjnych 20 godz
Udział w ćwiczeniach projektowych 20 godz
Udział w zajęciach seminaryjnych 20 godz
Wykonanie projektu 30 godz
Przygotowanie do zajęć 30 godz
Samodzielne studiowanie tematyki zajęć 20 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

Średnia ważona ocen z zajęć seminaryjnych (S) zaliczenia laboratorium (L) oraz zaliczenia projektu (P), przy czym do obliczania średniej brany jest wynik procentowy.
OK = 0.4*S + 0.3*L + 0.3*P

Wymagane jest uzyskanie pozytywnego wyniku z każdej formy zajęć.

Wymagania wstępne i dodatkowe:

Znajomość programowania w języku C oraz C++ oraz podstaw asemblera.

Zalecana literatura i pomoce naukowe:

Internet

Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

Nie podano dodatkowych publikacji

Informacje dodatkowe:
  • Sposób i tryb wyrównania zaległości powstałych wskutek nieobecności studenta
    na zajęciach:
    Ćwiczenia laboratoryjne:
    - Nieobecność na nie więcej niż jednych zajęciach wymaga od studenta
    samodzielnego (z możliwością wykorzystania godzin konsultacji) opanowania
    przerabianego na tych zajęciach materiału.
    - Nieusprawiedliwiona nieobecność na więcej niż jednych zajęciach oznacza brak
    możliwości zaliczenia ćwiczeń laboratoryjnych.
    - Student ma prawo do odrobienia każdej usprawiedliwionej nieobecności w
    wyznaczonym przez prowadzącego terminie oraz sposobie – do dwóch tygodni od zaistnienia tej nieobecności lecz nie później jak w ostatnim tygodniu trwania zajęć.
  • Zasady zaliczania zajęć:
    Ćwiczenia laboratoryjne:
    - Podstawowym terminem uzyskania zaliczenia jest koniec zajęć w danym semestrze. Przy braku zaliczenia w terminie podstawowym student może przystąpić do poprawkowego zaliczania. Na terminie poprawkowym student może poprawiać ocenę tylko z jednego wybranego projektu, z którego student uzyskał ocenę niedostateczną. Oceny uzyskane w terminie poprawkowym zastępują odpowiednie oceny cząstkowe z „poprawianych” projektów tzn. są one uwzględniane podczas ponownego wyliczania oceny końcowej z laboratorium.
    - Student który bez usprawiedliwienia opuścił więcej niż jedne zajęcia nie
    uzyskuje zaliczenia ćwiczeń.

Ćwiczenia projektowe:
- Podstawowym terminem uzyskania zaliczenia jest koniec zajęć w danym semestrze,
- Projekt można wykonywać samodzielnie lub w grupach
- Projekt grupowy wymaga aktywnego uczestnictwa każdej z osób, które będą oceniane indywidualnie.
- Projekt można oddać tylko osobiście.

Seminarium:
- Student przedstawia na określonych zajęciach prezentację na wskazany przez prowadzącego temat.
- Temat oraz termin zostają ustalone z co najmniej dwutygodniowym wyprzedzeniem.
- Student przedstawia prowadzącemu prezentacje do akceptacji najpóźniej jeden tydzień przed terminem jej wygłoszenia.
- Nieusprawiedliwiona nieobecność na zajęciach podczas, których student maił wygłaszać prezentację lub brak zaakceptowanej prezentacji oznacza brak zaliczenia przedmiotu.

  • Szczegółowe informacje organizacyjne dotyczące trybu zaliczania zajęć i
    odrabiania zaległości dostępne są na stronie
    http://taurus.fis.agh.edu.pl/~mindur/rev/