Programok visszafejtése és védelme
Követelmények
A félév végi osztályzat a 3 kiszh-ból és a házifeladatból számolódik. Mindegyik kiszh beszámít, de egyik elbukása sem végzetes hiba. Ezeket a tárgyakat érinti:
- Prog alap 1-2
- Számítógép-architektúrák (mélyebben)
- Gépi nyelvek
- Operációs rendszerek
- Assembly programozás
u.i.: A tárgy 2012-ben indult először, így a követelmények nem teljesen kiforrottak még.
Segédanyagok
A tárgyhonlapon fent vannak a diasorok, folyamatosan frissíti őket.
2012-es diasorok:
KisZH-k, beugrók
3 kisZH van, darabja 10 pont. Mindegyik kisZH-ban kisebb, gyakorlatias feladatok vannak. (pl.: pár soros assembly visszafejtése, c++ objektum szerkezetének felismerése, linkelés végigkövetése kézzel egyszerű táblázatos formában, relatív címek, stb.)
Házi
Választhatnak önállóan a tárgyhoz kapcsolódó feladat, illetve 1-2 témaötlet saját házifeladathoz: Kód vezérlésszerkezetének a visszafejtése a 4. előadás mellett található Ocelot kód felhasználásával.
- Lineárisan pásztázó disassembler írása, az ollydbg disasm rutin felhasználásával.
- Rekurzívan pásztázó disassembler írása, az ollydbg disasm rutin felhasználásával.
- Program visszafejtést megnehezítő ötletek kidolgozása, és bemutatása egy mintaprogramon.
- Intel Pin - A Binary Instrumentation Tool segítségével dinamikus nyomkövetés végrehajtása. (memória kezelési hibák felismerése, programkód helyének a feltérképezése, stb (http://software.intel.com/en-us/articles/pintool-downloads)
- IDA script nyelven programírás.
- IDA C++plugin írás.
- Ollydbg plugin készítés.
- stb.
Ha ezek nem szimpatikusak, akkor a kiadott object kódot kell visszafejteni. A programok Visual Studio 2008-cal lettek lefordítva. A tárgykódok általában egy jól ismert függvényt tartalmaznak. A visszafejtéshez az dumpbin, objdump, gdb, VS debugger, ollydbg, IDA disassemblert, stb használhatják. Az teljesíti legjobban a feladatot, aki felismeri, hogy mit csinál az algoritmus, és egy tesztprogram segítségével meghívja a visszafejtett függvényt.
Tapasztalatok
Csanád 2019 ősz
A tágy szerintem érdekes tud lenni, azonban nagyon száraz. Rengeteg gépi kódot (leginkább x86 Assembly) kell tanulmányozni és megérteni, ami szerintem igencsak fárasztó már rövid távon is. A házi feladat is ilyen, ahol egy x86 Assembly kód működését kell megérteni, és leírni, hogy mit csinál. A kis zh-k alapvetően nem vészesek, egész hamar fel lehet rájuk készülni, bár a 3. idén kicsit nehezebb volt szerintem, arra érdemes picit több időt fordítani. Izsó nagyon szétszórt, nem kelti fel az előadásmódja az ember érdeklődését, nehéz figyelni. Azonban nála segítőkészebb és rendesebb tanárral még nem találkoztam az egyetemen. Nagyon gyorsan válaszolt az e-mailekre, nagyon jószívű, tényleg azt szeretné, hogy valamennyire megértsük az anyagot. A házim feltöltése után ő írt nekem (!), hogy ha még 1-2 dolgot megfejtek a házimban, ad egy jobb jegyet rá, ezt pedig aligha tenné meg más tanár. Így a jó jegy megszerzése nem lehetetlen, általában a többség négyes/ötös lesz. Azonban több munkát igényel ez a tárgy szerintem, mint egy átlagos 2 kredites tárgy, szóval aki szakmai ingyenkreditet szeretne, az ne vegye fel. Amúgy a katalógust sosem ellenőrzi, szóval nem kötelező ott lenni az órákon.
Koza 2013/14 ősz
A tárgy nagyon érdekes, Izsó viszont nagyon unalmasan tudja előadni. Tudja ő is, hogy gyakran elcsúszik a kitűzött menetrenddel, néha tovább tartja az órákat. A kisZh-kra felkészülve viszont olyan tudásokra lehet szert tenni, ami miatt akár mintatantervi tárgyat is csinálnék belőle, elég gáz, hogy egyáltalán nem tudjuk, mi megy egy fordítóban, optmalizálóban. A házi feladat pár óra munkával elkészíthető, akit érdekel a téma, annak még érdekes is. A tárgyat ajánlom mindenkinek, akit egy picit is érdekel a téma, de az alőadásra vigyetek valamit, ha nem akartok aludni.