Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    Programok visszafejtése és védelme

    A tantárgy angol neve: Reverse Engineering and Program Protection

    Adatlap utolsó módosítása: 2017. június 27.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar
    Villamosmérnöki szak
    Mérnök informatikus szak
    Gazdaságinformatikus szak
    Szabadon választható tantárgy
    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIHIAV05   2/0/0/f 2  
    3. A tantárgyfelelős személy és tanszék Dr. Zsóka Zoltán,
    4. A tantárgy előadója Izsó Tamás    tudományos segédmunkatárs    Hálózati Rendszerek és Szolgáltatások Tanszék
    Dr. Zsóka Zoltán docens, Hálózati Rendszerek és Szolgáltatások Tanszék

    5. A tantárgy az alábbi témakörök ismeretére épít A programozás alapjai 1.
    A programozás alapjai 2.
    6. Előtanulmányi rend
    Ajánlott:
    •    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.

    7. A tantárgy célkitűzése 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.
    8. A tantárgy részletes tematikája 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.

    9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) Heti két óra előadás, melyen esettanulmányok is bemutatásra kerülnek.
    10. 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.

    11. 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.

    12. Konzultációs lehetőségek A félév közben igény esetén a hallgatókkal egyeztetett időpontokban.
    13. Jegyzet, tankönyv, felhasználható irodalom 1.    John R. Levine: Linkers & Loaders
    2.    Stevens S. Muchnick: Advanced Compiler Design and Implementation
    3.    Kip R. Irvine: Assembly Language for Intel-Based Computers
    4.    Mark E. Russinovich, David A. Solomon: Windows Internals
    5.    Eldad Eilam: Reversing, Secrets of Reverse Engineering
    6.    Greg Hoglund, Gary McGraw: Exploiting Software
    7.    Singh A. Identifying Malicious Code Through Reverse Engineering
    8.    Chris Eagle: The IDA Pro Book The Unofficial Guide
    9.    Eric Filiol: Computer viruses: from theory to applications

    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
    Kontakt óra28
    Félévközi készülés órákra12
    Felkészülés zárthelyire6
    Házi feladat elkészítése10
    Kijelölt írásos tananyag elsajátítása4
    Vizsgafelkészülés0
    Összesen60
    15. A tantárgy tematikáját kidolgozta Izsó Tamás    tudományos stmts.    Hálózati Rendszerek és Szolgáltatások Tanszék
    Dr Zsóka Zoltán docens, Hálózati Rendszerek és Szolgáltatások Tanszék