Module also offered within study programmes:
General information:
Name:
Reverse Engineering
Course of study:
2018/2019
Code:
JIS-1-005-s
Faculty of:
Physics and Applied Computer Science
Study level:
First-cycle studies
Specialty:
-
Field of study:
Applied Computer Science
Semester:
0
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Full-time studies
Responsible teacher:
dr hab. inż. Mindur Bartosz (mindur@agh.edu.pl)
Academic teachers:
dr hab. inż. Mindur Bartosz (mindur@agh.edu.pl)
Module summary

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.

Description of learning outcomes for module
MLO code Student after module completion has the knowledge/ knows how to/is able to Connections with FLO Method of learning outcomes verification (form of completion)
Social competence
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 IS1A_K01 Execution of laboratory classes,
Execution of a project,
Activity during classes
M_K002 Student ma świadomość odpowiedzialności za własną pracę. IS1A_K01 Execution of laboratory classes,
Execution of a project,
Activity during classes
Skills
M_U001 Student potrafi przygotować dokumentację oraz prezentację poświęconą zaawansowanym zagadnieniom programistycznym IS1A_U03, IS1A_U04, IS1A_U02 Execution of laboratory classes,
Execution of a project,
Activity during classes
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. IS1A_U01, IS1A_U04, IS1A_U02 Execution of laboratory classes,
Execution of a project,
Scientific paper,
Activity during classes
Knowledge
M_W001 Student zna i potrafi wyjaśnić działanie zaawansowanych konstrukcji używanych w językach wysokiego i niskiego poziomu IS1A_W03, IS1A_W02 Execution of laboratory classes,
Scientific paper,
Activity during classes
M_W002 Student zna zaawansowane cechy i elementy charakterystyczne dla obiektowych, uogólnionych i niskopoziomowych języków programowania. IS1A_W03, IS1A_W02 Execution of laboratory classes,
Execution of a project,
Scientific paper,
Activity during classes
FLO matrix in relation to forms of classes
MLO code Student after module completion has the knowledge/ knows how to/is able to Form of classes
Lecture
Audit. classes
Lab. classes
Project classes
Conv. seminar
Seminar classes
Pract. classes
Zaj. terenowe
Zaj. warsztatowe
Others
E-learning
Social competence
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ę. - - + + - - - - - - -
Skills
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. - - + + - + - - - - -
Knowledge
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. - - + + - + - - - - -
Module content
Laboratory classes:
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.

Project classes:
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.

Seminar classes:
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.

Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 140 h
Module ECTS credits 5 ECTS
Participation in laboratory classes 20 h
Participation in project classes 20 h
Participation in seminar classes 20 h
Completion of a project 30 h
Preparation for classes 30 h
Realization of independently performed tasks 20 h
Additional information
Method of calculating the final grade:

Średnia ocen z zajęć seminaryjnych (S) zaliczenia laboratorium (L) oraz zaliczenia projektu (P), przy czym do obliczania średniej brany jest wynik procentowy. Seminarium może zostać zaliczone na ocenę “zal” wtedy nie jest brane pod uwagę do średniej.
Wymagane jest uzyskanie pozytywnego wyniku z każdej formy zajęć.

Prerequisites and additional requirements:

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

Recommended literature and teaching resources:

Internet

Scientific publications of module course instructors related to the topic of the module:

Additional scientific publications not specified

Additional information:
  • 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/