Szoftverek obfuszkációja
|
|
- Zsigmond Bodnár
- 5 évvel ezelőtt
- Látták:
Átírás
1 Szoftverek obfuszkációja Kócsó Balázs Budapesti M szaki és Gazdaságtudományi Egyetem november 24.
2 Tartalom Bevezetés: alapfogalmak Anti-reversing Obfuszkáció Deobfuszkáció Obfuszkációs technikák Példák Felületes obfuszkáció (Surface obfuscation) Mély obfuszkáció (Deep obfuscation) Deobfuszkáció kitekintés Összefoglalás Kócsó Balázs (BME) Obfuszkáció november / 28
3 Anti-reversing technológiák Céljuk, hogy megnehezítsék a programot vizsgálót abban, hogy megértse annak pontos bels m ködését, illetve hogy automatikus eszközökkel vissza tudja fejteni annak forráskódját. Anti-debug techinikák: Debuggerek detektálása Töréspontok detektálása Operációs rendszer függ m ködés Disassemblerek összezavarása Packerek vagy wrapperek használata Obfuszkáció Virtualizáció Ezen technológiák között nehéz az éles határokat meghúzni, ugyanis legtöbbször együtt, egymást támogatva jelennek meg. Kócsó Balázs (BME) Obfuszkáció november / 28
4 Obfuszkáció Anti-reversing Fogalma: A kommunikáció szándékos elrejtése azért, hogy a kívülállók számára zavaros, kétértelm vagy nehezen érthet legyen. Szoftverek esetében ezt a kiadott binárisra tudjuk értelmezni, azaz minél nehezebben lehessen megérteni annak pontos m ködését úgy, hogy a program helyesen m ködik. Felhasználása: Illegális szoftvermásolás megakadályozása Értékes algoritmusok védelme Megnehezíteni a támadók számára a kód megértését és visszafejtését Kártékony kódok elrejtése, polimorzmusa "Célja": A deobfuszkáció megakadályozása. Kócsó Balázs (BME) Obfuszkáció november / 28
5 Deobfuszkáció Anti-anti-reversing Fogalma: Az obfuszkált kommunikáció visszafejtése olyan formába, mely mindenki számára érthet és egyértelm. Szoftverek esetében ezt az obfuszkált kód vagy bináris visszaállítására tudjuk értelmezni, hogy az az eredetihez hasonló érthet formában elérhet legyen, mint az obfuszkáció el tt. Felhasználása: Obfuszkált kódok visszaállítása, megértése Kártékony kódok analizálása és felismerése "Célja": Az obfuszkációs technológiák kijátszása. Kócsó Balázs (BME) Obfuszkáció november / 28
6 Felületes és mély obfuszkáció összehasonlítása Felületes (surfer): szintaktika alapú nem szükséges érteni hozzá a program funkcióit egyszer bizonyos esetekben nagyon jó megoldást nyújt könnyen általánosítható és automatizálható Mély (deep): szemantika alapú a program funkcióinak átalakítása komplex vannak lehet ségek, amikre már a felületes obfuszkáció nem nyújt megoldást nehezen általánosítható, specikus megoldások Kócsó Balázs (BME) Obfuszkáció november / 28
7 Obfuszkációs technikák áttekintése Egyszer Adat- és konstansobfuszkáció Ugrási láncok használata Felesleges kód beillesztés Utasítási sorok felcserélése, szétszórt számítások Gyenge Komplex Átlátszatlan feltételek (Opaque predicates) Kód párhuzamosítás Vezérlési-gráf lapítása (Control-ow attening) Önmódosító kódok Virtuális gépek... Hatásos Kócsó Balázs (BME) Obfuszkáció november / 28
8 Adatobfuszkáció A programban lév adatok (szövegek vagy számok) sok információt nyújtanak a kódrészek beazonosításához, ezért próbáljuk meg ket elrejteni valahogy. Többféle módszer létezik: El zetesen letárolt értékek védelme, hogy ne lehessen rájuk könnyen keresni egyszer rejtjelezések XOR-olás Szövegtároló tömbök átszervezése Szövegtömbök összevonása és szétszedése Szövegtároló konténerek számának növelése Elemek permutációja Kócsó Balázs (BME) Obfuszkáció november / 28
9 Adatobfuszkáció, példa Boolean típusú adatok obfuszkációja Egy adatobfuszkációs technika a változók hasítása (variable splitting). A V boolean változót széthasítjuk p és q integer változóvá a jobb oldalon látható táblázat alapján. Az f() függvény segítségével elkészítjük a beépített boolean típusnak egy másik reprezentációját. g(v ) f(p, q) p q V 2p + q 0 0 Hamis Igaz Igaz Hamis 3 Kócsó Balázs (BME) Obfuszkáció november / 28
10 Konstans obfuszkáció A konstansok védelme egyszer bb, ugyanis azok nem módosítják értéküket a program futása során. Ha a konstansok pontos értékére nincs szükségünk, tehát ha csak egyenl illetve nem egyenl vizsgálatokat végzünk rajtuk, akkor a hashelés nagyon hatásos módszer. Például: if (x == 42) {...} helyett használjuk if ( hash (x) == 0 x50a2fabfdd276f573ff97ace8b11c5f4 ) {...} A helyes m ködés egyetlen feltétele csak az ütközésmentesség. A hash függvények egyirányúsága miatt az eredeti érték kitalálása legfeljebb csak a program további analízisével lehetséges. Kócsó Balázs (BME) Obfuszkáció november / 28
11 Kódobfuszkáció A kódobfuszkáció hatásos módszer a bels m ködés megfejtésének megnehezítésére. Nagyon sokféle lehet ség ennek megvalósítására, de vajon hol érdemes ezt csinálni? 1 Magasabb szint nyelvek forráskódjában? 2 Hardver közeli nyelvek forráskódjában? Kócsó Balázs (BME) Obfuszkáció november / 28
12 Kódobfuszkáció A kódobfuszkáció hatásos módszer a bels m ködés megfejtésének megnehezítésére. Nagyon sokféle lehet ség ennek megvalósítására, de vajon hol érdemes ezt csinálni? 1 Magasabb szint nyelvek forráskódjában? 2 Hardver közeli nyelvek forráskódjában? A magasabb szint nyelvek fordítói nagyon sok alkalmazott trükköt kioptimalizálnának, ezért a kódobfuszkációt az alacsony szint (assemblyhez hasonló) nyelven szokták elvégezni. Kócsó Balázs (BME) Obfuszkáció november / 28
13 Kódobfuszkáció, példa Egy utasítás helyettesítése több utasítással: Eredeti kód mov esi, 0x0 mov edx, 0x Obfuszkált kód mov esi, 0x1 dec esi mov edx, 0x xor dx, dx Kócsó Balázs (BME) Obfuszkáció november / 28
14 Kódobfuszkáció, példa Felesleges kódrészek beszúrása: Eredeti kód... mov edx, 0x5555 Obfuszkált kód mov edx, 0x30... mov edx, 0x5555 Kócsó Balázs (BME) Obfuszkáció november / 28
15 Kódobfuszkáció, példa NOP-szer kódok beszúrása Eredeti kód mov edx, 0x2014 Obfuszkált kód mov edi, edi mov edx, 0x2014 xchg cx, cx Kócsó Balázs (BME) Obfuszkáció november / 28
16 Kódobfuszkáció, példa Elérhetetlen kód beszúrása Eredeti kód mov esi, 0x0 and eax, ebx Obfuszkált kód mov esi, 0x0 jmp _label elérhetetlen kód... _label and eax, ebx Kócsó Balázs (BME) Obfuszkáció november / 28
17 Kódobfuszkáció, példa Elágazás beszúrása a következ utasításra Eredeti kód mov esi, 0x0 and edx, 0x Obfuszkált kód mov esi, 0x0 jmp _label _label and edx, 0x Kócsó Balázs (BME) Obfuszkáció november / 28
18 Kódobfuszkáció, példa Utasítások felcserélése Eredeti kód mov esi, 0x1 dec esi and edx, 0x Obfuszkált kód mov esi, 0x1 and edx, 0x dec esi Kócsó Balázs (BME) Obfuszkáció november / 28
19 Átlátszatlan feltételek (Opaque predicates) Olyan elágazás-feltételek, melyek mindig igazra vagy hamisra értékel dnek ki, de ezt nehéz belátni a visszafejtett programot vizsgálva. Például: if ( (x + x ^ 2) % 2 == 0) {... /* mindig igaz */ } A hatásossága nagyban függ a választott feltételek bonyolultságától és sokszín ségét l Használhatóak platformfügg specikus értékek is. (Ezekben az esetekben kérdéses lehet a kompatibilitás.) Hatásos a statikus analízissel szemben és viszonylag könny elkészíteni, ezért kedvelt technika. Ennek használatával a vezérlésfolyam bonyolítható. Kócsó Balázs (BME) Obfuszkáció november / 28
20 Vezérlési-gráf lapítása (Control-ow attening) Minden programhoz készíthet egy vezérlési gráf, hogy mi után mi következik. Általánosságban van egy f függvény (main), amely mindent vezérel és abból történnek még további függvényhívások. A párhuzamos futás megnehezíti az analízist, ugyanis nem tudhatjuk, hogy el ször milyen irányba kell indulni a vizsgálat során. A vezérlési-gráf lapításnak ez az alapötlete. M ködése: 1 a nagy blokkokat törjük szét sok kis blokkra 2 válasszunk egy ún. menetirányítót, akinek az értéke mindig az el z blokk futásától függ 3 így egy nagy blokkból készítettünk egy pontra mindig visszatér sok kis blokkot, melynek megfejtése sokkal több id t vesz igénybe, mint ha szekvenciálisan tudnánk azt olvasni Természetesen az összetartozó blokkokat érdemes mind helyileg, mind a menetirányító logikája szerint elszeparálni. Kócsó Balázs (BME) Obfuszkáció november / 28
21 Vezérlési-gráf lapítása (Control-ow attening) A példakód és a vezérélési gráfja: int f( int i, int j) { int a = 1; if (i < j) { a = j; } else do { a *= i - -; } while (i > 0); return a; } Kócsó Balázs (BME) Obfuszkáció november / 28
22 Vezérlési-gráf lapítása (Control-ow attening) Az obfuszkált vezérlési gráf: Kócsó Balázs (BME) Obfuszkáció november / 28
23 Vezérlési-gráf lapítása (Control-ow attening) Példa menetirányító logikai szeparációjára: Kócsó Balázs (BME) Obfuszkáció november / 28
24 Obfuszkációs technikák És ezek tetsz leges kombinációja! Kócsó Balázs (BME) Obfuszkáció november / 28
25 Kitekintés: deobfuszkáció típusai Statikus: szintaxis-alapú egyszer bb és gyorsabb nem szükséges a kód futtatása bizonyos esetekben nagyon jó megoldást nyújt különösen hasznos lehet kártékony kódok esetében, ha m ködik Dinamikus: szemantika alapú komplexebb és id igényesebb szükséges lehet a kód futtatása a funkciók megértéséhez (kátékony kódok?) többre képest, mint a statikus obfuszkáció nagyon sok esetben csak ezzel lehet sikereket elérni Kócsó Balázs (BME) Obfuszkáció november / 28
26 Összefoglalás: Obfuszkáció vs. Deobfuszkáció Folyamatos versengés Újabb technikák az egyik oldalon újabb technikák a másik oldalon is A szemantikus módszerek egyre nagyobb teret nyernek Kártékony kódoknál fontos lehet, hogy csak statikus eszközökkel ne lehessen felismerni azokat Kócsó Balázs (BME) Obfuszkáció november / 28
27 Összefoglalás: Obfuszkáció Nincs tökéletes megoldás Aktív kutatási terület, de kevés az általános megoldás, inkább csak speciális házi megoldások a jellemz ek Kutatások folynak a kriptográai alapokkal megtámogatott obfuszkáció irányába: jelenleg az obfuszkáció csak nehezítés, a visszafejtés id igényét és költségét növelhetjük szükség lenne valamilyen matematikai bizonyosságra adott obfuszkációs technológiához tartozó deobfuszkáció visszavezetése valamilyen ismerten nehéz matematikai problémára mindezt úgy, hogy a program mérete és futásideje ne n jön jelent s mértékben Kócsó Balázs (BME) Obfuszkáció november / 28
28 Köszönöm a gyelmet! Kérdések? Kócsó Balázs (BME) Obfuszkáció november / 28
29 Felhasznált források Sharath K. Udupa Saumya K. Debray, Matias Madou (2005) Deobfuscation Christian S. Collberg,Member, IEEE Computer Society, Clark Thomborson (2002) Watermarking, Tamper-Proong, and Obfuscation Nguyen Anh Quynh (2013) Machine Code Deobfuscation for Malware Analysis Sebastian Porst, Christian Ketterer (2009) Automated static deobfuscation in the context of Reverse Engineering Bene Máté (2014) Anti-debug technikák kártékony kódokban Kurucsai István (2013) Deobfuscation of obfuscated software Kócsó Balázs (BME) Obfuszkáció november / 28
Deobfuscation of obfuscated software. Kurucsai István
Deobfuscation of obfuscated software Kurucsai István Tartalom Bevezetés Obfuszkáció típusai Mit és hol? Deobfuszkáció Szintaxis alapú módszerek Szemantikus módszerek Összefoglalás Bevezetés Anti-reversing:
RészletesebbenMiért van szükség fordítóprogramokra? Fordítóprogramok célja és szerkezete. Miért van szükség fordítóprogramokra?
és szerkezete Így kényelmes programozni int sum = 0; for( int i=0; i
RészletesebbenFordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1
Fordító részei Kód visszafejtés. Izsó Tamás 2016. szeptember 29. Izsó Tamás Fordító részei / 1 Section 1 Fordító részei Izsó Tamás Fordító részei / 2 Irodalom Izsó Tamás Fordító részei / 3 Irodalom Izsó
RészletesebbenA fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása
A fordítóprogramok szerkezete Forrásprogram Forrás-kezelő (source handler) Kódoptimalizálás Fordítóprogramok előadás (A,C,T szakirány) Lexikális elemző (scanner) Szintaktikus elemző (parser) Szemantikus
RészletesebbenStack Vezérlés szerkezet Adat 2.
Stack Vezérlés szerkezet Adat 2. Kód visszafejtés. Izsó Tamás 2013. november 14. Izsó Tamás Stack Vezérlés szerkezet Adat 2./ 1 Változó típusú paraméterekátadása 1. #include < s t d i o. h> int64 myfunc
Részletesebbensallang avagy Fordítótervezés dióhéjban Sallai Gyula
sallang avagy Fordítótervezés dióhéjban Sallai Gyula Az előadás egy kis példaprogramon keresztül mutatja be fordítók belső lelki világát De mit is jelent, az hogy fordítóprogram? Mit csinál egy fordító?
RészletesebbenBevezetés a programozásba I.
Bevezetés a programozásba I. 5. gyakorlat Surányi Márton PPKE-ITK 2010.10.05. C++ A C++ egy magas szint programozási nyelv. A legels változatot Bjarne Stroutstrup dolgozta ki 1973 és 1985 között, a C nyelvb
RészletesebbenMemóriagazdálkodás. Kódgenerálás. Kódoptimalizálás
Kódgenerálás Memóriagazdálkodás Kódgenerálás program prológus és epilógus értékadások fordítása kifejezések fordítása vezérlési szerkezetek fordítása Kódoptimalizálás L ATG E > TE' E' > + @StPushAX T @StPopBX
RészletesebbenDigitális rendszerek. Utasításarchitektúra szintje
Digitális rendszerek Utasításarchitektúra szintje Utasításarchitektúra Jellemzők Mikroarchitektúra és az operációs rendszer közötti réteg Eredetileg ez jelent meg először Sokszor az assembly nyelvvel keverik
RészletesebbenProgramozási nyelvek (ADA)
Programozási nyelvek (ADA) Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 1. előadás Hasznos weboldal http://kto.web.elte.hu Program felépítése Programegységek (program unit) eljárások (procedure)
RészletesebbenFordító Optimalizálás
Fordító Optimalizálás Kód visszafejtés. Izsó Tamás 2012. szeptember 27. Izsó Tamás Fordítás Optimalizálás / 1 Section 1 Fordító részei Izsó Tamás Fordítás Optimalizálás / 2 Irodalom Fordító részei Optimalizálás
RészletesebbenOpenCL alapú eszközök verifikációja és validációja a gyakorlatban
OpenCL alapú eszközök verifikációja és validációja a gyakorlatban Fekete Tamás 2015. December 3. Szoftver verifikáció és validáció tantárgy Áttekintés Miért és mennyire fontos a megfelelő validáció és
RészletesebbenProgramok értelmezése
Programok értelmezése Kód visszafejtés. Izsó Tamás 2016. szeptember 22. Izsó Tamás Programok értelmezése/ 1 Section 1 Programok értelmezése Izsó Tamás Programok értelmezése/ 2 programok szemantika értelmezése
RészletesebbenProgramozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. március 3. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja Miért
RészletesebbenFordítás Kódoptimalizálás
Fordítás Kódoptimalizálás Kód visszafejtés. Izsó Tamás 2016. október 20. Izsó Tamás Fordítás Kódoptimalizálás / 1 Aktív változók Angol irodalomban a Live Variables kifejezést használják, míg az azt felhasználó
RészletesebbenGPU Lab. 4. fejezet. Fordítók felépítése. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc
4. fejezet Fordítók felépítése Grafikus Processzorok Tudományos Célú Programozása Fordítók Kézzel assembly kódot írni nem érdemes, mert: Egyszerűen nem skálázik nagy problémákhoz arányosan sok kódot kell
RészletesebbenA szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok
A szemantikus elemzés helye Forrásprogram Forrás-kezelő (source handler) Lexikális elemző (scanner) A szemantikus elemzés feladatai Fordítóprogramok előadás (A, C, T szakirány) Szintaktikus elemző (parser)
RészletesebbenProgramozás I gyakorlat
Programozás I. - 3. gyakorlat Operátorok, típuskonverziók, matematikai függvények Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Számítástudomány Alkalmazása Tanszék Utolsó frissítés: September 24,
RészletesebbenAdatszerkezetek és algoritmusok
2009. november 13. Ismétlés El z órai anyagok áttekintése Ismétlés Specikáció Típusok, kifejezések, m veletek, adatok ábrázolása, típusabsztakció Vezérlési szerkezetek Függvények, paraméterátadás, rekurziók
RészletesebbenIndexszámítási módszerek; Simpson-paradoxon
Indexszámítási módszerek; Simpson-paradoxon Vida Balázs 2018. március 7. Vida Balázs Indexszám; SP 2018. március 7. 1 / 22 Bevezetés Mir l lesz szó? 1 Index(szám) fogalma, példák 2 Érték-, ár- és volumenindexek
RészletesebbenA programozás alapjai
A programozás alapjai Változók A számítógép az adatokat változókban tárolja A változókat alfanumerikus karakterlánc jelöli. A változóhoz tartozó adat tipikusan a számítógép memóriájában tárolódik, szekvenciálisan,
RészletesebbenJava és web programozás
Budapesti M szaki Egyetem 2013. szeptember 25. 3. El adás User public class User { private String realname_; private String nickname_; private String password_; public User(String realname, String nickname)
RészletesebbenIntel x86 utasításkészlet + disassembler működése
Intel x86 utasításkészlet + disassembler működése Kód visszafejtés. Izsó Tamás 2016. november 10. Izsó Tamás Intel x86 utasításkészlet + disassembler működése / 1 Section 1 Intel X86 utasításkészlet Izsó
RészletesebbenPodoski Péter és Zabb László
Podoski Péter és Zabb László Bevezető Algoritmus-vizualizáció témakörében végeztünk kutatásokat és fejlesztéseket Felmértük a manapság ismert eszközök előnyeit és hiányosságait Kidolgoztunk egy saját megjelenítő
RészletesebbenA kódgenerálás helye a fordítási folyamatban. Kódgenerálás I. (kifejezések és vezérlési szerkezetek) A kódgenerálás feladata. Ebben az előadásban...
A kódgenerálás helye a fordítási folyamatban Forrásprogram Forrás-kezelő (source handler) Kódgenerálás I. (kifejezések és vezérlési szerkezetek) Fordítóprogramok előadás (A,C,T szakirány) 2008. őszi félév
RészletesebbenProgramozás alapjai Bevezetés
Programozás alapjai Bevezetés Miskolci Egyetem Általános Informatikai Tanszék Programozás alapjai Bevezetés SWF1 / 1 Tartalom A gépi kódú programozás és hátrányai A magas szintÿ programozási nyelv fogalma
RészletesebbenProgramozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r
Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. október 11. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja
RészletesebbenEllátási lánc optimalizálás P-gráf módszertan alkalmazásával mennyiségi és min ségi paraméterek gyelembevételével
Ellátási lánc optimalizálás P-gráf módszertan alkalmazásával mennyiségi és min ségi paraméterek gyelembevételével Pekárdy Milán, Baumgartner János, Süle Zoltán Pannon Egyetem, Veszprém XXXII. Magyar Operációkutatási
RészletesebbenJava és web programozás
Budapesti M szaki Egyetem 2013. szeptember 18. 2. El adás Komplex szám public class Complex { private float repart_; private float impart_; public Complex() { repart_ = 0; impart_ = 0; public Complex(float
RészletesebbenA JavaScript főbb tulajdonságai
JavaScript alapok A JavaScript főbb tulajdonságai Script nyelv azaz futás közben értelmezett, interpretált nyelv Legfőbb alkalmazási területe: a HTML dokumentumok dinamikussá, interaktívvá tétele Gyengén
RészletesebbenFüggvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)
Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Függvények C program egymás mellé rendelt függvényekből áll. A függvény (alprogram) jó absztrakciós eszköz a programok
RészletesebbenProgramozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)
Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.05. -1- Függvények C program egymás mellé rendelt függvényekből
RészletesebbenProgramozási alapismeretek 3. előadás
Programozási alapismeretek 3. előadás Tartalom Ciklusok specifikáció+ algoritmika +kódolás Egy bevezető példa a tömbhöz A tömb Elágazás helyett tömb Konstans tömbök 2/42 Ciklusok Feladat: Határozzuk meg
RészletesebbenTörténeti áttekintés
Történeti áttekintés Előzmények A számítástechnika kezdetén elterjedt (egyeduralkodó) volt a mérnökpult használata, a gép és az ember kommunikációja bináris nyelven zajlott. A gépi kódú programozás nem
Részletesebben3. Gyakorlat Ismerkedés a Java nyelvvel
3. Gyakorlat Ismerkedés a Java nyelvvel Parancssori argumentumok Minden Java programnak adhatunk indításkor paraméterek, ezeket a program egy tömbben tárolja. public static void main( String[] args ) Az
RészletesebbenSzoftver karbantartási lépések ellenőrzése
Szoftverellenőrzési technikák (vimim148) Szoftver karbantartási lépések ellenőrzése Majzik István Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék http://www.inf.mit.bme.hu/
RészletesebbenBevezetés a programozásba I.
Bevezetés a programozásba I. 6. gyakorlat C++ alapok, szövegkezelés Surányi Márton PPKE-ITK 2010.10.12. Forrásfájlok: *.cpp fájlok Fordítás: a folyamat, amikor a forrásfájlból futtatható állományt állítunk
Részletesebben1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok
Számítógépes szimulációk 1. Bevezetés BME Fizika Intézet 2015. szeptember 9. Bevezetés A félév menete C-ismétlés, 1. rész Oktatók: Nagyfalusi Balázs: nagyfalusi@phy.bme.hu, F3 211. : tcsaba@eik.bme.hu,
RészletesebbenFordító Optimalizálás
Fordító Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október 9. Izsó Tamás Fordítás Optimalizálás / 1 Section 1 Fordító részei Izsó Tamás Fordítás Optimalizálás / 2 Irodalom Fordító részei Optimalizálás
RészletesebbenSzoftver-mérés. Szoftver metrikák. Szoftver mérés
Szoftver-mérés Szoftver metrikák Szoftver mérés Szoftver jellemz! megadása numerikus értékkel Technikák, termékek, folyamatok objektív összehasonlítása Mér! szoftverek, programok CASE eszközök Kevés szabványos
RészletesebbenPénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök
RészletesebbenProgramozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. február 18. Minimum és maximumkeresés u s i n g n a m e s p a c e s t d ; i n t main ( ) { c o u t
RészletesebbenObjektumorientált programozás C# nyelven
Objektumorientált programozás C# nyelven 1. rész Osztályok és objektumok Mezık és metódusok Konstruktor és destruktor Névterek és hatókörök Láthatósági szintek Osztály szintő tagok Beágyazott osztályok
Részletesebben0,424 0,576. f) P (X 2 = 3) g) P (X 3 = 1) h) P (X 4 = 1 vagy 2 X 2 = 2) i) P (X 7 = 3, X 4 = 1, X 2 = 2 X 0 = 2) j) P (X 7 = 3, X 4 = 1, X 2 = 2)
Legyen adott a P átmenetvalószín ség mátrix és a ϕ 0 kezdeti eloszlás Kérdés, hogy miként lehetne meghatározni az egyes állapotokban való tartózkodás valószín ségét az n-edik lépés múlva Deniáljuk az n-lépéses
RészletesebbenKifejezések. Kozsik Tamás. December 11, 2016
Kifejezések Kozsik Tamás December 11, 2016 Kifejezések Lexika Szintaktika Szemantika Lexika azonosítók (változó-, metódus-, típus- és csomagnevek) literálok operátorok, pl. + zárójelek: (), [], {},
RészletesebbenOperációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED
UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED AWK - szintaxis, vezérlési szerkezetek Operációs rendszerek 11. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik
RészletesebbenKeresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán
Keresés Rendezés Feladat Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán 2016. november 7. Farkas B., Fiala
Részletesebben1. Bevezetés A C++ nem objektumorientált újdonságai 3
Előszó xiii 1. Bevezetés 1 2. A C++ nem objektumorientált újdonságai 3 2.1. A C és a C++ nyelv 3 2.1.1. Függvényparaméterek és visszatérési érték 3 2.1.2. A main függvény 4 2.1.3. A bool típus 4 2.1.4.
RészletesebbenBevezetés Alapfogalmak Jog
Bevezetés Alapfogalmak Jog Kód visszafejtés. Izsó Tamás 2015. szeptember 18. Izsó Tamás Bevezetés Alapfogalmak / 1 Tartalom 1 Bevezetés 2 Alapfogalmak 3 Motivációs példák 4 Jog Izsó Tamás Bevezetés Alapfogalmak
RészletesebbenTuesday, March 6, 12. Hasító táblázatok
Hasító táblázatok Halmaz adattípus U (kulcsuniverzum) K (aktuális kulcsok) Függvény adattípus U (univerzum) ÉT (értelmezési tartomány) ÉK (érték készlet) Milyen az univerzum? Közvetlen címzésű táblázatok
RészletesebbenKlaszterezés. Kovács Máté március 22. BME. Kovács Máté (BME) Klaszterezés március / 37
Klaszterezés Kovács Máté BME 2012. március 22. Kovács Máté (BME) Klaszterezés 2012. március 22. 1 / 37 Mi a klaszterezés? Intuitív meghatározás Adott dolgokból halmazokat klasztereket alakítunk ki úgy,
RészletesebbenÖsszetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.
Összetett programozási tételek Sorozathoz sorozatot relő feladatokkal foglalkozunk. A bemenő sorozatot le kell másolni, s közben az elemekre vonatkozó átalakításokat lehet végezni rajta: Input : n N 0,
Részletesebbenés az instanceof operátor
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
RészletesebbenSzenzorhálózatok programfejlesztési kérdései. Orosz György
Szenzorhálózatok programfejlesztési kérdései Orosz György 2011. 09. 30. Szoftverfejlesztési alternatívák Erőforráskorlátok! (CPU, MEM, Energia) PC-től eltérő felfogás: HW közeli programozás Eszközök közvetlen
RészletesebbenMaximum kiválasztás tömbben
ELEMI ALKALMAZÁSOK FEJLESZTÉSE I. Maximum kiválasztás tömbben Készítette: Szabóné Nacsa Rozália Gregorics Tibor tömb létrehozási módozatok maximum kiválasztás kódolása for ciklus adatellenőrzés do-while
RészletesebbenKriptográfia I. Kriptorendszerek
Kriptográfia I Szimmetrikus kulcsú titkosítás Kriptorendszerek Nyíltszöveg üzenettér: M Titkosított üzenettér: C Kulcs tér: K, K Kulcsgeneráló algoritmus: Titkosító algoritmus: Visszafejt algoritmus: Titkosítás
RészletesebbenJava VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
RészletesebbenSzéchenyi István Szakképző Iskola
A SZAKKÖZÉPISKOLAI SZAKMACSOPORTOS ALAPOZÓ OKTATÁS EMELT SZINTŰ ISKOLAI PROGRAMJA 11-12. évolyam Érvényes a 2003-2004-es tanévtől felmenő rendszerben Átdolgozva, utolsó módosítás: 2004. április 26. Az
Részletesebben2. Fejezet : Számrendszerek
2. Fejezet : Számrendszerek The Architecture of Computer Hardware and Systems Software: An Information Technology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003 Wilson Wong, Bentley College
RészletesebbenOOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos
OOP I. Egyszerő algoritmusok és leírásuk Készítette: Dr. Kotsis Domokos Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendı anyag vázlatát képezik. Ismeretük
RészletesebbenAssembly. Iványi Péter
Assembly Iványi Péter További Op. rsz. funkcionalitások PSP címének lekérdezése mov ah, 62h int 21h Eredmény: BX = PSP szegmens címe További Op. rsz. funkcionalitások Paraméterek kimásolása mov di, parameter
RészletesebbenMatematikai programok
Matematikai programok Mátrixalapú nyelvek MatLab Wettl Ferenc diái alapján Budapesti M szaki Egyetem Algebra Tanszék 2017.11.07 Borbély Gábor (BME Algebra Tanszék) Matematikai programok 2017.11.07 1 /
Részletesebben... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.
Párhuzamos programok Legyen S parbegin S 1... S n parend; program. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak. Folyamat
Részletesebben6. fejezet: Ciklusok
6. fejezet: Ciklusok Mint a nyelvekben általában, itt is léteznek ciklusok. Az alapvető három ciklus-típus: elöltesztelő, hátultesztelő és számláló. Lássuk ezeket sorban! Elöltesztelő = while. A while
RészletesebbenProgramozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.10.. -1- Mit tudunk már? Típus fogalma char, int, float,
RészletesebbenKözgazdaságtan 1. ELTE TáTK Közgazdaságtudományi Tanszék. 3. hét A KERESLETELMÉLET ALAPJAI. HASZNOSSÁG, PREFERENCIÁK
KÖZGAZDASÁGTAN I. ELTE TáTK Közgazdaságtudományi Tanszék Közgazdaságtan 1. A KERESLETELMÉLET ALAPJAI. HASZNOSSÁG, PREFERENCIÁK Bíró Anikó, K hegyi Gergely, Major Klára Szakmai felel s: K hegyi Gergely
RészletesebbenProgramozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 3. előadás Vezérlési szerkezetek Elágazás Gyakran előfordul, hogy meg kell vizsgálnunk egy állítást, és attól függően, hogy igaz vagy hamis, a programnak más-más
RészletesebbenOnline algoritmusok. Algoritmusok és bonyolultságuk. Horváth Bálint március 30. Horváth Bálint Online algoritmusok március 30.
Online algoritmusok Algoritmusok és bonyolultságuk Horváth Bálint 2018. március 30. Horváth Bálint Online algoritmusok 2018. március 30. 1 / 28 Motiváció Gyakran el fordul, hogy a bemenetet csak részenként
RészletesebbenGENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok
GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és Függvénysablonok Gyakorlatorientált szoftverfejlesztés C++ nyelven Visual Studio Community fejlesztőkörnyezetben
RészletesebbenAdminisztrációs feladatok Strukturált programok A C programnyelv elemei
Strukturált C-Strukturált Egyéb elemek Strukturált C-Strukturált Egyéb elemek Adminisztrációs feladatok Strukturált programok A C programnyelv elemei A programozás alapjai. álózati Rendszerek és Szolgáltatások
RészletesebbenA számok kiírása is alapvetően karakterek kiírásán alapul, azonban figyelembe kell venni, hogy a számjegyeket, mint karaktereket kell kiírni.
Példák számok kiírására A számok kiírása is alapvetően karakterek kiírásán alapul, azonban figyelembe kell venni, hogy a számjegyeket, mint karaktereket kell kiírni. Decimális számok kiírása Az alábbi
RészletesebbenObjektum Vezérelt Szoftverek Analízise
Objektum Vezérelt Szoftverek Analízise Ferenc Rudolf és Beszédes Árpád ferenc@inf.u-szeged.hu beszedes@inf.u-szeged.hu Szegedi Tudományegyetem FrontEndART Szoftver Kft. Bevezetés A szoftver rendszerek
RészletesebbenPárhuzamos és Grid rendszerek
Párhuzamos és Grid rendszerek (10. ea) GPGPU Szeberényi Imre BME IIT Az ábrák egy része az NVIDIA oktató anyagaiból és dokumentációiból származik. Párhuzamos és Grid rendszerek BME-IIT
RészletesebbenNemzetközi team munka indítása
Nemzetközi team munka indítása Dr. Margery Mayer EOQ - és világkongresszus, Budapest, 1 Bevezetés Mi is az a kezd ülés? Miért is más amikor több kultúra találkozik? Témák Akciók Eredmények Munkaszervezés
Részletesebbenértékel függvény: rátermettségi függvény (tness function)
Genetikus algoritmusok globális optimalizálás sok lehetséges megoldás közül keressük a legjobbat értékel függvény: rátermettségi függvény (tness function) populáció kiválasztjuk a legrátermettebb egyedeket
RészletesebbenEmlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás.
Emlékeztető: a fordítás lépései Forrás-kezelő (source handler) Szimbólumtábla-kezelés Fordítóprogramok előadás (A, C, T szakirány) Lexikális elemző (scanner) Szintaktikus elemző (parser) Szemantikus elemző
RészletesebbenSzakmai program 2015
2015 Célok és feladatok a szakközépiskolai képzésben A szakközépiskolában folyó nevelés-oktatás továbbépíti, kiszélesíti és elmélyíti az általános iskolai tantárgyi követelményeket. A szakközépiskolában
RészletesebbenProgramozási nyelvek a közoktatásban alapfogalmak II. előadás
Programozási nyelvek a közoktatásban alapfogalmak II. előadás Szintaxis, szemantika BNF szintaxisgráf absztrakt értelmező axiomatikus (elő- és utófeltétel) Pap Gáborné. Szlávi Péter, Zsakó László: Programozási
RészletesebbenProgramozási nyelvek JAVA EA+GY 1. gyakolat
Programozási nyelvek JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2018/2019. tavaszi félév Tartalom 1 A Java alapjai 2 Java program
RészletesebbenJava programozási nyelv
Java programozási nyelv 2. rész Vezérlő szerkezetek Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/23 Tartalomjegyzék
RészletesebbenDr. Schuster György február / 32
Algoritmusok és magvalósítások Dr. Schuster György OE-KVK-MAI schuster.gyorgy@kvk.uni-obuda.hu 2015. február 10. 2015. február 10. 1 / 32 Algoritmus Alapfogalmak Algoritmus Definíció Algoritmuson olyan
RészletesebbenBonyolultságelmélet. Monday 26 th September, 2016, 18:50
Bonyolultságelmélet Monday 26 th September, 2016, 18:50 A kiszámítás modelljei 2 De milyen architektúrán polinom? A kiszámításnak számos (matematikai) modellje létezik: Általános rekurzív függvények λ-kalkulus
RészletesebbenBASH script programozás II. Vezérlési szerkezetek
06 BASH script programozás II. Vezérlési szerkezetek Emlékeztető Jelölésbeli különbség van parancs végrehajtása és a parancs kimenetére való hivatkozás között PARANCS $(PARANCS) Jelölésbeli különbség van
RészletesebbenKorlátos modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék
Korlátos modellellenőrzés dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék 1 Hol tartunk most? Alacsony szintű formalizmusok (KS, LTS, KTS) Magasabb szintű formalizmusok Temporális
RészletesebbenMatematika. Specializáció. 11 12. évfolyam
Matematika Specializáció 11 12. évfolyam Ez a szakasz az eddigi matematikatanulás 12 évének szintézisét adja. Egyben kiteljesíti a kapcsolatokat a többi tantárggyal, a mindennapi élet matematikaigényes
RészletesebbenMásolásvédelem szoftver vízjelezés és obfuszkálás segítségével
Másolásvédelem szoftver vízjelezés és obfuszkálás segítségével EBERHARDT GERGELY, NAGY ZOLTÁN SEARCH-LAB Kft., {gergely.eberhardt, zoltan.nagy}@search-lab.hu JEGES ERNÔ, HORNÁK ZOLTÁN BME Méréstechnikai
RészletesebbenCsoportos üzenetszórás optimalizálása klaszter rendszerekben
Csoportos üzenetszórás optimalizálása klaszter rendszerekben Készítette: Juhász Sándor Csikvári András Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Automatizálási
RészletesebbenBevezetés a programozásba. 12. Előadás: 8 királynő
Bevezetés a programozásba 12. Előadás: 8 királynő A 8 királynő feladat Egy sakktáblára tennénk 8 királynőt, úgy, hogy ne álljon egyik sem ütésben Ez nem triviális feladat, a lehetséges 64*63*62*61*60*59*58*57/8!=4'426'165'368
Részletesebbenegy szisztolikus példa
Automatikus párhuzamosítás egy szisztolikus példa Áttekintés Bevezetés Példa konkrét szisztolikus algoritmus Automatikus párhuzamosítási módszer ötlet Áttekintés Bevezetés Példa konkrét szisztolikus algoritmus
RészletesebbenSzelekció. Döntéshozatal
Szelekció Döntéshozatal Elágazásos algoritmus-szerkezet Eddig az ún. szekvenciális (lineáris) algoritmust alkalmaztunk a parancsok egyenként egymás után hajtüdnak végre. Bizonyos esetekben egy adott feltételtől
RészletesebbenMit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Mit tudunk már? Típus fogalma char, int, float, double változók deklarációja operátorok (aritmetikai, relációs, logikai,
RészletesebbenÉrdekes informatika feladatok
A keres,kkel és adatbázissal ellátott lengyel honlap számos díjat kapott: Spirit of Delphi '98, Delphi Community Award, Poland on the Internet, Golden Bagel Award stb. Az itt megtalálható komponenseket
RészletesebbenKÖZGAZDASÁGTAN I. Készítette: Bíró Anikó, K hegyi Gergely, Major Klára. Szakmai felel s: K hegyi Gergely. 2010. június
KÖZGAZDASÁGTAN I. Készült a TÁMOP-4.1.2-08/2/a/KMR-2009-0041 pályázati projekt keretében Tartalomfejlesztés az ELTE TáTK Közgazdaságtudományi Tanszékén az ELTE Közgazdaságtudományi Tanszék az MTA Közgazdaságtudományi
RészletesebbenProgramozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)
Programozás alapjai C nyelv 5. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.17. -1- Tömbök Azonos típusú adatok tárolására. Index
RészletesebbenEgyszerű RISC CPU tervezése
IC és MEMS tervezés laboratórium BMEVIEEM314 Budapesti Műszaki és Gazdaságtudományi Egyetem Egyszerű RISC CPU tervezése Nagy Gergely Elektronikus Eszközök Tanszéke (BME) 2013. február 14. Nagy Gergely
RészletesebbenMérnök informatikus alapképzési szak
Dunaújvárosi Főiskola Mérnök informatikus alapképzési szak Tanterv. július 29. 2 Tartalomjegyzék Szakleírás:... 7 Óraterv:... 10 Mérnök informatikus alapképzési szak tantárgyainak rövid ismertetése...
RészletesebbenSzámítógép architektúra
Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár Számítógép architektúra Dr. Seebauer Márta főiskolai tanár seebauer.marta@roik.bmf.hu Irodalmi források Cserny L.: Számítógépek
RészletesebbenTartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.
Keresés Rendezés Feladat Keresés Rendezés Feladat Tartalom Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán
RészletesebbenVerifikáció és validáció Általános bevezető
Verifikáció és validáció Általános bevezető Általános Verifikáció és validáció verification and validation - V&V: ellenőrző és elemző folyamatok amelyek biztosítják, hogy a szoftver megfelel a specifikációjának
RészletesebbenInformatika Rendszerek Alapjai
Informatika Rendszerek Alapjai Dr. Kutor László Alapfogalmak Információ-feldolgozó paradigmák Analóg és digitális rendszerek jellemzői Jelek típusai Átalakítás rendszerek között http://uni-obuda.hu/users/kutor/
Részletesebben