logo
Karta przedmiotu
logo

Inżynieria odwrotna i analiza programów

Podstawowe informacje o zajęciach

Cykl kształcenia: 2024/2025

Nazwa jednostki prowadzącej studia: Wydział Elektrotechniki i Informatyki

Nazwa kierunku studiów: Informatyka

Obszar kształcenia: nauki techniczne

Profil studiów: ogólnoakademicki

Poziom studiów: drugiego stopnia

Forma studiów: stacjonarne

Specjalności na kierunku: H - Cyberbezpieczeństwo i technologie chmurowe, I - Inżynieria inteligentnych systemów informatycznych, S - Systemy i sieci komputerowe

Tytuł otrzymywany po ukończeniu studiów: magister inżynier

Nazwa jednostki prowadzącej zajęcia: Katedra Informatyki i Automatyki

Kod zajęć: 15971

Status zajęć: wybierany dla specjalności I - Inżynieria inteligentnych systemów informatycznych

Układ zajęć w planie studiów: sem: 3 / W30 L15 / 3 ECTS / E

Język wykładowy: polski

Imię i nazwisko koordynatora: dr inż. Jan Sadolewski

Cel kształcenia i wykaz literatury

Główny cel kształcenia: Zapoznanie studentów z problemami inżynierii odwrotnej i deasemblacją programów. Student uzyskuje podstawową wiedzę z zakresu programowania niskopoziomowego. Zdobywa umiejętności rozumienia i pisania programów lub ich części w asemblerze.

Ogólne informacje o zajęciach: Moduł ma na celu praktyczne zapoznanie się z istniejącymi przykładowymi programami, które należy przeanalizować w celu ich zastąpienia lub rozbudowy.

Materiały dydaktyczne: https://materialy.kia.prz.edu.pl

Wykaz literatury, wymaganej do zaliczenia zajęć
Literatura wykorzystywana podczas zajęć wykładowych
1 Jurczyk M, Coldwind G. (red.) Praktyczna inżynieria wsteczna. Metody techniki i narzędzia PWN Warszawa. 2016

Wymagania wstępne w kategorii wiedzy/umiejętności/kompetencji społecznych

Wymagania formalne: Student wpisany na semestr 3

Wymagania wstępne w kategorii Wiedzy: Znajomość popularnych języków programowania niskopoziomowych np. asembler, język C, oraz pośrednich np. Java, C#.

Wymagania wstępne w kategorii Umiejętności: Obsługa komputera PC z systemem operacyjnym Windows i Linux lub iMac z Mac OS X.

Wymagania wstępne w kategorii Kompetencji społecznych: Uczciwość, rzetelność, umiejętność pracy w grupie. Świadomość funkcjonowania społeczeństwa.

Efekty kształcenia dla zajęć

MEK Student, który zaliczył zajęcia Formy zajęć/metody dydaktyczne prowadzące do osiągnięcia danego efektu kształcenia Metody weryfikacji każdego z wymienionych efektów kształcenia Związki z KEK Związki z PRK
01 zna strukturę i rozkazy języka asembler wykład, laboratorium obserwacja wykonawstwa, zaliczenie w formie pisemnej K_K02++
K_K06+++
P7S_KO
P7S_KR
02 umie kompilować i konsolidować programy pisane w asemblerze i innych formatach pośrednich wykład, laboratorium obserwacja wykonawstwa K_W05+
K_K02+++
P7S_KR
P7S_WG
P7S_WK
03 potrafi zdekodować strukturę programu wykonywalnego w różnych formatach i nadzorować ich wykonywanie wykład, laboratorium obserwacja wykonawstwa K_W09+++
K_U08+++
K_U11+++
P7S_UW
P7S_WK

Uwaga: W zależności od sytuacji epidemicznej, jeżeli nie będzie możliwości weryfikacji osiągniętych efektów uczenia się określonych w programie studiów w sposób stacjonarny w szczególności zaliczenia i egzaminy kończące określone zajęcia będą mogły się odbywać przy użyciu środków komunikacji elektronicznej (w sposób zdalny).

Treści kształcenia dla zajęć

Sem. TK Treści kształcenia Realizowane na MEK
3 TK01 Asembler procesorów IA32/64 W01, W02, L1, L2 MEK01
3 TK02 Narzędzia do kompilacji programów W03, W04, L1, L2 MEK02
3 TK03 Budowa plików wykonywalnych W05 MEK02 MEK03
3 TK04 Narzędzia do deasemblacji programów W06, W07, L3 MEK01 MEK03
3 TK05 Debuggery, punkty wstrzymań, pułapki W08, W09, L4 MEK01 MEK03
3 TK06 Formaty pośrednie reprezentacji kodu - ByteCode, BitCode, MSIL W10, W11 MEK03
3 TK07 Dekompilacja formatów pośrednich W12, L05, L06 MEK03

Nakład pracy studenta

Forma zajęć Praca przed zajęciami Udział w zajęciach Praca po zajęciach
Wykład (sem. 3) Przygotowanie do kolokwium: 5.00 godz./sem.
Godziny kontaktowe: 30.00 godz./sem.
Uzupełnienie/studiowanie notatek: 5.00 godz./sem.
Studiowanie zalecanej literatury: 15.00 godz./sem.
Inne: 5.00 godz./sem.
Laboratorium (sem. 3) Przygotowanie do laboratorium: 2.00 godz./sem.
Godziny kontaktowe: 15.00 godz./sem.
Dokończenia/wykonanie sprawozdania: 2.00 godz./sem.
Konsultacje (sem. 3)
Egzamin (sem. 3) Przygotowanie do egzaminu: 5.00 godz./sem.
Egzamin pisemny: 2.00 godz./sem.

Sposób wystawiania ocen składowych zajęć i oceny końcowej

Forma zajęć Sposób wystawiania oceny podsumowującej
Wykład Student otrzymuje ocenę za uczestnictwo wykładach według następujących progów: - co najmniej 40% obecności - 3,0 (dst) - co najmniej 50% obecności - 3,5 (+dst) - co najmniej 60% obecności - 4,0 (db) - co najmniej 80% obecności - 4,5 (+db) - co najmniej 90% obecności - 5,0 (bdb). Do nieobecności nie wliczają się godziny usprawiedliwione z tytułu choroby, czy sporadycznego uczestnictwa w innych czynnościach realizowanych w imieniu uczelni.
Laboratorium Ocena będzie wystawiana na podstawie analizy kodów przygotowanego podczas laboratorium programu. W zależności od stopnia jego skomplikowania i wykorzystanych mechanizmów zostanie przyznana adekwatna ocena.
Ocena końcowa Część laboratoryjna brana jest z wagą 0,8, a część wykładowa z wagą 0,2. W nadzwyczajnych, wyjątkowych i uzasadnionych sytuacjach może zostać zwiększona lub zmniejszona o maksymalnie jeden stopień.

Przykładowe zadania

Wymagane podczas egzaminu/zaliczenia
(-)

Realizowane podczas zajęć ćwiczeniowych/laboratoryjnych/projektowych
(-)

Inne
(-)

Czy podczas egzaminu/zaliczenia student ma możliwość korzystania z materiałów pomocniczych : nie

Treści zajęć powiazane są z prowadzonymi badaniami naukowymi: tak

1 J. Sadolewski; B. Trybus Exception Handling in Programmable Controllers with Denotational Model 2023
2 J. Sadolewski; B. Trybus Compiler and virtual machine of a multiplatform control environment 2022
3 J. Sadolewski; B. Trybus Denotational Model and Implementation of Scalable Virtual Machine in CPDev 2022
4 M. Hubacz; J. Sadolewski; B. Trybus Obsługa typów danych normy PN-EN 61131-3 w architekturze ARM z ograniczeniami dostępu do pamięci 2022
5 M. Hubacz; J. Sadolewski; B. Trybus Wydajność architektury STM32 w zakresie wykonywania kodu pośredniego dla systemów sterowania 2021
6 D. Rzońca; J. Sadolewski; A. Stec; Z. Świder; B. Trybus; L. Trybus Implementacja środowiska inżynierskiego na przykładzie pakietu CPDev 2020
7 D. Rzońca; J. Sadolewski; A. Stec; Z. Świder; B. Trybus; L. Trybus Ship Autopilot Software – A Case Study 2020
8 D. Rzońca; J. Sadolewski; A. Stec; Z. Świder; B. Trybus; L. Trybus Aneks 5 z dnia 25.04.2019 do Umowy nr NE/01/2012 o współpracy nad rozwojem oprogramowania zawartej w dniu 28.02.2012 ( do umowy licencyjnej na CPDev z Praxis) 2019
9 D. Rzońca; J. Sadolewski; A. Stec; Z. Świder; B. Trybus; L. Trybus Agreement no. NR-644-5/2019 on cooperation in software development, concluded on December 3, 2019 2019
10 D. Rzońca; J. Sadolewski; A. Stec; Z. Świder; B. Trybus; L. Trybus Developing a Multiplatform Control Environment 2019