K-INFO
HU
EN
Login

Reverse Engineering and Program Protection

Programok visszafejtése és védelme
A tantárgyleírás hatályossága
Hatályosság kezdete:
2026. March 21.
Hatályosság vége:
Subject name (Hungarian, English)
Programok visszafejtése és védelme
Reverse Engineering and Program Protection
Subject code BMEVIHIAV05
Subject type
Training Level
Course types and hours (weekly/semester)
Course type lecture tutorial laboratory
hours (weekly) 2 0 0
type (linked/independent)
Assessment type félévközi érdemjegy
Credits 2
Subject coordinator
DR. Zsóka Zoltán
position: egyetemi docens
Responsible department
Hálózati Rendszerek és Szolgáltatások Tanszék
Faculty Villamosmérnöki és Informatikai Kar
Subject website
Primary curriculum type
Direct prerequisites – Strong prerequisite none
Direct prerequisites – Weak prerequisite none
Direct prerequisites – Parallel prerequisite none
Direct prerequisites – Milestone prerequisite none
Direct prerequisites – Exclusion none

Objectives

Programme
1.    Motivációs példák bináris kód visszafejtésének szükségszerűségére. Az ide vonatkozó szerzői jogi problémák megbeszélése.
2.    Programok szemantikai értelmezése dióhéjban.
3.    Fordítóprogram működésének a bemutatása. A fordító által használt közbenső kódábrázolások.
4.    Programok statikus analízise és a kód optimalizálása. Optimalizálás kihatása a bináris programok értelmezésére.
5.    Program visszafejtéséhez használt algoritmusok tanulmányozása, és az egyes módszerek összehasonlítása. 
6.    Gépi kódú program vezérlésfolyam gráfjának visszafejtése, és azok megfeleltetése magasabb szintű programozási nyelvek vezérlésszervező utasításainak.
7.    Intel Pentium processzor utasítás-architektúrájának az áttekintése. Stack szervezési módszerek bemutatása
8.    Disassemblerek működése, és a kód visszafejtésének a megzavarása.
9.    C és C++ forrásfájlokból előállított futtatható fájlok visszafejtése, vezérlési szerkezetek feltérképezése.
10.    A linker és a loader működése. A tárgykód (COFF) és végrehajtható fájlformátum (PE/COFF) szerkezetének az ismertetése.
11.    Dinamikusan linkelt könyvtárak belső szerkezetének és működésének megismerése.
12.    IDA disassembler bemutatása. IDA programozása script és C++ nyelven.
13.    Dinamikus analízis ismertetése az Intel által kifejlesztett PIN (Dynamic Binary Program Instrumentation Tool) felhasználásával.
14.    Programok dinamikus nyomkövetéséhez használt debuggerek működése. Visszafejtést megnehezítő (antireversing) technikák bemutatása.

A programozási folyamat végső szakaszaként át kell térni a statikus programszövegről a dinamikus végrehajtásra. Ez a lépés a számítógépre hárul, de bizonyos esetekben a programozónak is ismerni kell, hogy ilyenkor mi zajlik a számítógépben. A félév során a hallgatók jártasságot szereznek a programok visszafejtésében, vezérlési szerkezetek feltérképezésében, a visszafejtett kódok értelmezésében, a kód visszafejthetőségének megnehezítésben, szoftver másolásvédelmi megoldások tesztelésében, számítógépes vírusok, férgek, stb. működésének megismerésében. A tantárgyat azoknak ajánljuk, akik szerzői jogdíjas programok védelmével, kód generálásával, vírusirtással, gyengén dokumentált programok interfészének a visszafejtésével szeretnének foglalkozni, vagy csak jobban meg szeretnék érteni, hogy a program végrehajtása közben mi történik a számítógép belsejében.

Learning outcomes

Ez a tantárgy a KKK rendeletben meghatározott, következő kompetenciák fejlesztését szolgálja:

Knowledge

No learning outcomes recorded.

Skills

No learning outcomes recorded.

Attitudes

No learning outcomes recorded.

Autonomy and responsibility

No learning outcomes recorded.

Oktatási módszertan

Heti két óra előadás, melyen esettanulmányok is bemutatásra kerülnek.

Tanulástámogató anyagok

Not provided.

Recommended preliminary knowledge for completing the subject

Knowledge type competencies
(azon előzetes ismeretek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
A programozás alapjai 1. A programozás alapjai 2.
Skill type competencies
(azon előzetes képességek és készségek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
nincs
Recommended (non-compulsory) preliminary competencies
(azon ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák összessége, amelyek jelentősen hozzájárulnak a tantárgy eredményes teljesítéséhez)
A programozás alapjai 1. A programozás alapjai 2.
General rules
Követelmények: Az előadásokon a jelenlétet kötelező. Aláírást nem kaphat az a hallgató, aki az alkalmak több,mint 30%-áról hiányzott (a viszonyítási alap a tanév aktuális félévének időbeosztása szerint ténylegesen megtartott előadások száma). A félév során a hallgatók 3 kis ZH-t írnak, és egy házi feladatot kell sikeresen megoldaniuk.. A félévközi jegy a kis ZH-k jegyinek átlaga és a házi feladatra kapott az érdemjegy alapján: 0,5*(KZH átlag + HF) a közelebbi egészre kerekítve.(A kis ZH-k sikeressége nem kritérium, azok csak a félévközi jegy meghatározásában szerepelnek. A meg nem írt kis ZH 0 ponttal számít az átlagba.  A házi feladat sikeres (legalább elégséges) teljesítése a félévközi jegy megszerzésének feltétele. Pótlási lehetőségek: A házi feladat beadása és a kis ZH a pótlási hét végéig különeljárási díj ellenében pótolható. A meg nem írt, vagy sikertelen kis ZH-k közül, egyet a pótlási héten megírásra kerülő kis ZH-val pótolni, vagy a legrosszabbat javítani lehet. Javító kis ZH megírása esetén annak érdemjegye számít a félévközi jegy meghatározásában.
Assessment methods
In-term assessments

No detailed assessments provided.

Weight of in-term assessments

No weights provided.

Exam-period assessments

No detailed assessments provided.

Weight of exam elements

No weights provided.

Grade calculation

No grade thresholds provided.

Attendance requirements

No attendance requirements provided.

Rules for retake and resubmission

Not provided.

Short description

Not provided.

Detailed description

Not provided.

Recommended courses
•    Mérnök informatikus hallgatók számára ajánlott ezt megelőzően „A programozás alapjai I.” (VIEEA100) tárgy és  “A programozás alapjai II.” (VIEEA112) tárgy elvégzése. •    Villamosmérnök hallgatók számára  „A programozás alapjai 1” (VIHIA106)  és „A programozás alapjai 2” (VIHIA107)  tárgy elvégzése. Ezért a jelen tárgyat a 3. félévben vagy azt követően célszerű felvenni.
Workload to complete the subject

No workload breakdown provided.

Validity of subject requirements
Requirements valid from:
Requirements valid until:
Curriculum placement

No curriculum placements recorded for this subject version.