Subject » BMEVIHIAV05
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) |
|
||||||||||||
| Assessment type | félévközi érdemjegy | ||||||||||||
| Credits | 2 | ||||||||||||
| Subject coordinator |
DR. Zsóka Zoltán
position: egyetemi docens
contact:
zsoka.zoltan@vik.bme.hu
|
||||||||||||
| 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.
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.