Debugger. Debugger működése. Megszakítás és nyomkövetés. Izsó Tamás október 31. Izsó Tamás Debugger működése/ 1
|
|
- Adrián Csonka
- 8 évvel ezelőtt
- Látták:
Átírás
1 Debugger működése Megszakítás és nyomkövetés. Izsó Tamás október 31. Izsó Tamás Debugger működése/ 1
2 Section 1 Debugger Izsó Tamás Debugger működése/ 2
3 Debugger felépítése Proccess indítás nyomkövetéssel. Nyomkövető ciklus létrehozása. STARTUPINFO s i ; PROCESS_INFORMATION p i ; ZeroMemory ( &si, sizeof ( s i ) ) ; s i. cb = sizeof ( s i ) ; ZeroMemory ( &pi, sizeof ( p i ) ) ; CreateProcess ( ProcessNameToDebug, NULL, NULL, NULL, FALSE, DEBUG_ONLY_THIS_PROCESS, NULL, NULL, &si, & p i ) ; Izsó Tamás Debugger működése/ 3
4 Definíciók és követelmények 1 Debugger az a processz amely egy másik processzt monitoroz. 2 Debuggolt program a nyomkövetett program. 3 Debuggolt program csak egy debugger-hez lehet hozzárendelve. 4 Egy debugger több processzt is nyomkövethet. 5 A processz indítása és a processz debuggolására alkalmas ciklus ugyanabban a processzben kell hogy legyen. Izsó Tamás Debugger működése/ 4
5 Debug ciklus DEBUG_EVENT debug_event = { 0 } ; for ( ; ; ) { i f (! WaitForDebugEvent (& debug_event, INFINITE ) ) return ; / / User-defined function, not API ProcessDebugEvent (& debug_event ) ; } ContinueDebugEvent ( debug_event. dwprocessid, debug_event. dwthreadid, DBG_CONTINUE ) ; DBG_CONTINUE folytatjuk a nyomkövetést. DBG_EXCEPTION_NOT_HANDLED valami hiba volt és feladjuk. Izsó Tamás Debugger működése/ 5
6 Nyomkövetési esemény rekordja struct DEBUG_EVENT { DWORD dwdebugeventcode ; DWORD dwprocessid ; DWORD dwthreadid ; union { EXCEPTION_DEBUG_INFO Exception ; CREATE_THREAD_DEBUG_INFO CreateThread ; CREATE_PROCESS_DEBUG_INFO CreateProcessInfo ; EXIT_THREAD_DEBUG_INFO ExitThread ; EXIT_PROCESS_DEBUG_INFO ExitProcess ; LOAD_DLL_DEBUG_INFO Loa ddll ; UNLOAD_DLL_DEBUG_INFO UnloadDll ; OUTPUT_DEBUG_STRING_INFO DebugString ; RIP_INFO R i p I n f o ; } u ; } ; Izsó Tamás Debugger működése/ 6
7 Debug ciklus kicsit részletesebben bool bcontinuedebugging = t r u e ; while ( bcontinuedebugging ) { i f (! WaitForDebugEvent (& debug_event, INFINITE ) ) return ; switch ( debug_event. dwdebugeventcode ) { case CREATE_PROCESS_DEBUG_EVENT:... break ; case CREATE_THREAD_DEBUG_EVENT:... break ; case EXIT_THREAD_DEBUG_EVENT:... break ; case EXIT_PROCESS_DEBUG_EVENT:... break ; case LOAD_DLL_DEBUG_EVENT:... break ; case UNLOAD_DLL_DEBUG_EVENT:... break ; case OUTPUT_DEBUG_STRING_EVENT:... break ; case EXCEPTION_DEBUG_EVENT: }... } EXCEPTION_DEBUG_INFO& exception = debug_event. u. Exception ;... break ; Izsó Tamás Debugger működése/ 7
8 CREATE_PROCESS_DEBUG_EVENT esemény Ez az esemény a nyomkövetett program betöltése után a futás előtt következik be. Itt lehet megadni a breakpoint-ot. s t r u c t CREATE_PROCESS_DEBUG_INFO { HANDLE h F i l e ; / / (.EXE) file handle HANDLE hprocess ; / / process handle HANDLE hthread ; / / első thread handle LPVOID lpbaseofimage ; 1 DWORD dwdebuginfofileoffset ; DWORD ndebuginfosize ; LPVOID lpthreadlocalbase ; LPTHREAD_START_ROUTINE lpstartaddress ; 2 LPVOID lpimagename ; 3 WORD funicode ; / / fájlnév kódolása } ; 1 A memóriába betöltött exe fájl kezdőcíme. 2 Első végrehajtandó utasítás címe. 3 Program nevének a címe a debuggolt program címterében. Izsó Tamás Debugger működése/ 8
9 CREATE_PROCESS_DEBUG_EVENT esemény használata Ez az esemény a nyomkövetett program betöltése után a futás előtt következik be. Itt lehet megadni a breakpoint-ot. case CREATE_PROCESS_DEBUG_EVENT: { char filename = GetFileNameFromHandle ( debug_event. u. CreateProcessInfo. h F i l e ) ; } ; A betöltött végrehajtható fájl nevét nem a lpimagename alapján, hanem a hozzá tartozó fájl handler alapján a GetFileNameFromHandle függvény segítségével állítjuk elő. A függvény leírását az MSDN-en Obtaining a File Name From a File Handle címmel találhatjuk meg. Kb 10 rendszerhívást tartalmaz, ami számunkra most nem izgalmas. Izsó Tamás Debugger működése/ 9
10 OUTPUT_DEBUG_STRING_EVENT esemény Ez az esemény akkor következik be, ha a nyomkövetett programban diagnosztikai üzeneteket írunk ki a OutputDebugString rendszerhívás segítségével. Ezeket az üzeneteket a debugger kapja meg. struct OUTPUT_DEBUG_STRING_INFO { LPSTR lpdebugstringdata ; / / char* WORD funicode ; WORD ndebugstringlength ; } ; Izsó Tamás Debugger működése/ 10
11 OUTPUT_DEBUG_STRING_EVENT esemény case OUTPUT_DEBUG_STRING_EVENT: { char msg ; 1 OUTPUT_DEBUG_STRING_INFO & DebugString = debug_event. u. DebugString ; msg=new char [ DebugString. ndebugstringlength + 1 ] ; } ReadProcessMemory ( p i. hprocess, 2 DebugString. lpdebugstringdata, 3 msg, 4 DebugString. ndebugstringlength, NULL ) ; p r i n t f ( " Debug i n f o : %s \ n ", msg ) ; d e l e t e [ ] msg ; 1 Nem Unicode-ot használunk. 2 Debuggolt processz handle-t a processz indításánál kaptuk meg. 3 Üzenet címe a debuggolt program címterében. 4 Üzenet másolata a debugger címterében. Izsó Tamás Debugger működése/ 11
12 EXIT_PROCESS_DEBUG_INFO esemény Nyomkövetett program befejeződésénél jelentkező esemény. st ru ct EXIT_PROCESS_DEBUG_INFO { DWORD dwexitcode ; } ; Használata: bool bcontinuedebugging= t r u e ;... case EXIT_PROCESS_DEBUG_EVENT: { p r i n t f ( " Process e x i t e d with code : 0x%x ", debug_event. u. ExitProcess. dwexitcode ) ; bcontinuedebugging= f a l s e ; } break ; Izsó Tamás Debugger működése/ 12
13 (LOAD/ UNLOAD)_DLL_DEBUG_EVENT esemény A DLL betöltéséhez kapcsolódó információk azonosak a processz betöltésénél tanult információkkal. struct LOAD_DLL_DEBUG_INFO { HANDLE h F i l e ; / / (.DLL) file handle LPVOID lpbaseofdll ; 1 DWORD dwdebuginfofileoffset ; DWORD ndebuginfosize ; LPVOID lpimagename ; WORD funicode ; } ; 1 Dll betöltési címe a debuggolt processz szemszögéből. struct UNLOAD_DLL_DEBUG_INFO { LPVOID lpbaseofdll ; } ; Izsó Tamás Debugger működése/ 13
14 DLL-ek nyomkövetése Debugger std : : map<lpvoid, std : : s t r i n g > DllNameMap ; case LOAD_DLL_DEBUG_EVENT: { s t r i n g name = GetFileNameFromHandle ( debug_event. u. LoadDll. h F i l e ) ; DllNameMap [ debug_event. u. LoadDll. lpbaseofdll ] =name ; cout << " Load DLL " << name << " " << std : : hex << debug_event. u. LoadDll. lpbaseofdll << std : : endl ; } break ; case UNLOAD_DLL_DEBUG_EVENT: cout << " Unload DLL " << DllNameMap [ debug_event. u. UnloadDll. lpbaseofdll ] << std : : endl ; break ; Izsó Tamás Debugger működése/ 14
15 EXCEPTION_DEBUG_EVENT esemény Azokat az eseményeket kapjuk itt el, amit az előző fejezetben a struktúrált kivétel kezelésnél (SEH) tárgyaltunk. struct EXCEPTION_DEBUG_INFO { EXCEPTION_RECORD ExceptionRecord ; DWORD dwfirstchance ; } ; struct EXCEPTION_RECORD { DWORD ExceptionCode ; DWORD ExceptionFlags ; s t r u c t _EXCEPTION_RECORD ExceptionRecord ; PVOID ExceptionAddress ; DWORD NumberParameters ; ULONG_PTR ExceptionInformation [EXCEPTION_MAXIMUM_PARAMETERS ] ; } ; Izsó Tamás Debugger működése/ 15
16 EXCEPTION_DEBUG_EVENT esemény case EXCEPTION_DEBUG_EVENT: { EXCEPTION_DEBUG_INFO& exception = debug_event. u. Exception ; switch ( exception. ExceptionRecord. ExceptionCode ) { case STATUS_BREAKPOINT: p r i n t f ( " Break p o i n t " ; ) dwcontinuestatus = DBG_CONTINUE; break ; } default : i f ( exception. dwfirstchance == 1) { p r i n t f ( " Addr : %x code : %d " exception. ExceptionRecord. ExceptionAddress, exception. ExceptionRecord. ExceptionCode ) ; } dwcontinuestatus = DBG_EXCEPTION_NOT_HANDLED; } break ; Izsó Tamás Debugger működése/ 16
17 Hogyan írjuk meg a debuggert A CREATE_PROCESS_DEBUG_EVENT esemény az a pont, ahol a debugger bele tud szólni a debuggolt program életébe 1 Határozzuk meg azt a memória címet, ahol meg akarjuk nézni a debuggolt processz állapotát. De hol van ez a pont? 2 Módosítsuk az adott helyen lévő utasítást, például tegyünk oda breakpoint-ot ( int 3 vagy 0xCC értékű gépi utasítás). 3 Futtassuk tovább a programot. 4 Kezeljuk le a breakpoint eseményt. 5 Állítsuk vissza az eredeti utasítást, amit a breakpoint-tal felülírtunk. 6 Írjuk ki a memória és regiszterek értékeit, vagy egyéb adatokat, amelyre a felhasználó kiváncsi. 7 Folytassuk a nyomkövetést. Izsó Tamás Debugger működése/ 17
18 Hogyan módosíthatjuk a debuggolt processzt 1 Mentsük el a felülírandó utasítás első byte-ját. 2 Írjuk felül a breakpoint 0xCC utasítással. 3 Frissítsük az utasítás cache-t (gyorsítótárat). DWORD startaddress = GetStartAddress ( p i. hprocess, p i. hthread ) ; BYTE i n s t r u c t i o n ; DWORD nbyte ; / / Debuggolt processz utasításkódjának olvasása / / Utasítás első byte-jának olvasása ReadProcessMemory ( p i. hprocess, ( void ) startaddress,& i n s t r u c t i o n,1,& nbyte ) ; / / Eredeti érték elmentése o r i g i n a l I n s t r u c t i o n = i n s t r u c t i o n ; / / Utasítás felülírása i n s t r u c t i o n = 0xCC ; WriteProcessMemory ( p i. hprocess, ( void ) startaddress, &i n s t r u c t i o n,1,& nbyte ) ; FlushInstructionCache ( pi, ( void ) startaddress, 1 ) ; Izsó Tamás Debugger működése/ 18
19 Hogyan folytassuk a programot 1 Állítsuk vissza az eredeti utasítást. 2 Frissítsük az utasítás cache-t (gyorsítótárat). 3 Adjuk rá a visszaállított utasításra a vezérlést. DWORD nbyte ; WriteProcessMemory ( p i. hprocess, startaddress,& o r i g i n a l I n s t r u c t i o n,1,& nbyte ) ; FlushInstructionCache ( p i. hprocess, startaddress, 1 ) ; / / Debuggolt processz állapotának (regisztereinek) olvasása CONTEXT context ; context. ContextFlags = CONTEXT_ALL; GetThreadContext ( p i. hthread, &context ) ; / / Eredeti érték elmentése context. Eip ; / / Visszalépés eggyel SetThreadContext ( p i. hthread, &context ) ; Gondoljuk át mi van, ha a program újból ráfut a startaddress-en lévő utasításra. Észreveszi ezt a debugger? Izsó Tamás Debugger működése/ 19
20 Lépésenkénti futtatás Debugger Az EXCEPTION_SINGLE_STEP kivétel elkapásával megoldható a probléma..... CONTEXT context ; context. ContextFlags = CONTEXT_ALL; GetThreadContext ( p i. hthread, &context ) ; / / Eredeti érték elmentése context. Eip ; / / Visszalépés eggyel context. EFlags = 0x100 ; / / Trap flag SetThreadContext ( p i. hthread, &context ) ; Az EXCEPTION_SINGLE_STEP bekövetkezése után visszaírhatjuk a breakpoint-ot Izsó Tamás Debugger működése/ 20
21 Nyomkövetési szolgáltatások biztosítása Hogyan valósítható meg a lépésenkénti nyomkövetés, hívott függvénybe történő visszalépés, adott sorig (kurzorig) tört futtatás, feltételes breakpoint? Izsó Tamás Debugger működése/ 21
22 Nyomkövetési szolgáltatások biztosítása Hogyan valósítható meg a lépésenkénti nyomkövetés, hívott függvénybe történő visszalépés, adott sorig (kurzorig) tört futtatás, feltételes breakpoint? Segítség: EXCEPTION_SINGLE_STEP felhasználásával Láthatatlan breakpoint-ok (debugger a felhasználó tudta nélkül definiálja) létesítésével és felszedésével. Izsó Tamás Debugger működése/ 21
23 Demo Debugger cd E:\Reverse.Uj\Debug\example1\Debug\ example1.exe debugger.exe breakpoint.exe Mit tapasztalunk, ha a breakpoint programot debugger alatt futtatjuk? Hol használható fel ez a tapasztalat? Izsó Tamás Debugger működése/ 22
24 Mi az amit még nem tudunk? 1 Stackframe követését. Mivel a stackframe szervezést később vesszük, ezt itt nem tárgyaljuk. 2 Szimbolikus információk és forrássorok megjelenítését. 3 Disassemblert készíteni. (Nem kell, forrásban elérhető pár megoldás. Pl. PIN-ben). Minden fordító saját formában létrehoz nyomkövetéshez szolgáló információkat. Mik ezek? Szimbolikus változó és függvényneveket, forrásfájlok neve, keresztreferenciát annak eldöntésére, hogy melyik gépi utasítás melyik sor alapján keletkezett, stb. A Visual Studio ezeket az információkat a.pdb fájlban tárolja. Ennek a fájlnak a kezelését szolgáló függvények a DbgHelp.DLL-ben vannak megvalósítva. Izsó Tamás Debugger működése/ 23
25 Milyen területeket érintett az előadás Számítógép Architektúrák (cache, virtuális memória, interrupt kezelés, gépi utasítások, regiszterek) Operációs rendszerek (Windows rendszerhívások) Fordítók kódgenerálása (kivételkezelés megvalósítása, debugger információk) Izsó Tamás Debugger működése/ 24
26 Irodalom Debugger Matt Pietrek, A Crash Course on the Depths of Win32 Structured Exception Handling com/msj/0197/exception/exception.aspx Ajay Vijayvargiya, Writing a basic Windows debugger Writing-a-basic-Windows-debugger Vishal Kochhar, How a C++ compiler implements exception handling, How-a-C-compiler-implements-exception-handling Eli Bendersky, How debuggers work, how-debuggers-work-part-1// Izsó Tamás Debugger működése/ 25
Interrupt kezelés Debugger. Debugger működése. Megszakítás és nyomkövetés. Izsó Tamás szeptember 19. Izsó Tamás Debugger működése/ 1
Debugger működése Megszakítás és nyomkövetés. Izsó Tamás 2013. szeptember 19. Izsó Tamás Debugger működése/ 1 Section 1 Interrupt kezelés Izsó Tamás Debugger működése/ 2 Interrupt és kivételkezelés Interrupt
Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:
Operációs rendszerek MS Windows NT (2000) folyamatok Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok: szálak ütemezése végrehajtásra
Operációs rendszerek. Az NT folyamatok kezelése
Operációs rendszerek Az NT folyamatok kezelése Folyamatok logikai felépítése A folyamat modell: egy adott program kódját végrehajtó szál(ak)ból és, a szál(ak) által lefoglalt erőforrásokból állnak. Folyamatok
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
Konkurens TCP Szerver
A gyakorlat célja: Konkurens TCP Szerver Megismerkedni a párhuzamos programozás és a konkurens TCP szerver készítésének az elméleti és gyakorlati alapjaival és egy egyidejűleg több klienst is kiszolgáló
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
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
Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe
Mechatronika és mikroszámítógépek 2017/2018 I. félév Bevezetés a C nyelvbe A C programozási nyelv A C egy általános célú programozási nyelv, melyet Dennis Ritchie fejlesztett ki Ken Thompson segítségével
Pénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Az Integrált Fejlesztői Környezet C++ alapok Az Integrált Fejlesztői Környezet Visual Studio 2013 Community Edition Kitekintés: fordítás Preprocesszor Fordító
Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1
C++ I/O Bevezetés Izsó Tamás 2014. február 20. Izsó Tamás C++ I/O / 1 Section 1 Bevezetés Izsó Tamás C++ I/O / 2 Irodalom Izsó Tamás C++ I/O / 3 Paraméter illesztés függvénynév túlterhelés esetén 1 Pontos
Programozá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
Informatika terméktervezőknek
Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások
Szoftvertechnológia alapjai Java előadások
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?
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ó
Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!
Tartalomjegyzék Általános Információ! 2 Felhasználói dokumentáció! 3 Feladat! 3 Környezet! 3 Használat! 3 Bemenet! 3 Példa! 3 A program eredménye! 3 Példa! 3 Hibalehetőségek! 3 Példa! 3 Fejlesztői dokumentáció!
Mintavételes szabályozás mikrovezérlő segítségével
Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés
ISA szimulátor objektum-orientált modell (C++)
Budapesti Műszaki és Gazdaságtudományi Egyetem ISA szimulátor objektum-orientált modell (C++) Horváth Péter Elektronikus Eszközök Tanszéke 2015. február 12. Horváth Péter ISA szimulátor objektum-orientált
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)
Haladó DBMS ismeretek 1
Haladó DBMS ismeretek 1 Hasznos információk A tantárgy weboldala: it.inf.unideb.hu/honlap/halado_oracle1 Oracle Junior képzés Gyakorlatok és a neptun Gyakorlat követelmények Ajánlott irodalom Juhász István
Programozás C++ -ban 2007/7
Programozás C++ -ban 2007/7 1. Másoló konstruktor Az egyik legnehezebben érthető fogalom C++ -ban a másoló konstruktor, vagy angolul "copy-constructor". Ez a konstruktor fontos szerepet játszik az argumentum
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,
Programozá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
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
Programozá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)
Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT Eddig Tetszőleges
Digitális technika VIMIAA01 9. hét
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT Eddig Tetszőleges
PE/COFF fájl formátum
PE/COFF fájl formátum Kód visszafejtés. Izsó Tamás 2013. december 5. Izsó Tamás PE/COFF fájl formátum/ 1 Szimbólumtábla A programozási nyelvekben az típusokra, adatokra, függvényekre, ugrási címekre szimbólikus
Bevezeté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
3D-s technológiák a játékfejlesztésben UDK bevezetés
3D-s technológiák a játékfejlesztésben UDK bevezetés Első lépések Könyvtár szerkezet: UDK-XXXXXXXX Binaries Development: Itt található a játék forráskódja, ezt kibővíthetjük. FONTOS: A már meglévő kódokat
Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE Email cím: Név: vp.05@hotmail.com Kurzuskód:
Szerző Név: Varga Péter ETR azonosító: VAPQAAI.ELTE Email cím: vp.05@hotmail.com Kurzuskód: IP-08PAEG/27 Gyakorlatvezető neve: Kőhegyi János Feladatsorszám: 20 1 Tartalom Szerző... 1 Felhasználói dokumentáció...
Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)
Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával) I. A nyelv története C++ C (ős: B???) 1972 Ritchie AT&T Bell laboratórium UNIX 1978 Kernighan & Ritchie az első tankönyv,
Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés
Kivételek kezelése (exception handling) Hibakezelés old style class Szamolo { void szamol( String s, int i ) { int d; if (i!= 0) d = (i+1)/i; else if (s!= null) d = s.length(); else if (i > 10) // applikációs
A C# programozási nyelv alapjai
A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet
Programozás II. 2. Dr. Iványi Péter
Programozás II. 2. Dr. Iványi Péter 1 C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Kezdetben csak precompiler volt C++ konstrukciót C-re fordította A kiterjesztés alapján ismerte fel:.cpp.cc.c
Bevezeté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
Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás
Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás 4.11. A C előfeldolgozó rendszer A fordítás első lépése a C esetében a különböző nyelvi kiterjesztések feldolgozása: másik állomány tartalmának
Operációs rendszerek. Folyamatok kezelése a UNIX-ban
Operációs rendszerek Folyamatok kezelése a UNIX-ban Folyamatok a UNIX-ban A folyamat: multiprogramozott operációs rendszer alapfogalma - absztrakt fogalom. A gyakorlati kép: egy program végrehajtása és
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,
Algoritmizálás + kódolás C++ nyelven és Pascalban
Algoritmizálás + kódolás nyelven és ban Motiváció A Programozási alapismeretek tárgyban az algoritmizáláshoz struktogramot, a kódoláshoz nyelvet használunk, a Közismereti informatikában (a közoktatásban
Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE
Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE 2015-16 Classic Empire - A turn Based Wargame Classic Empire is a real time, multiplayer, Internet-based game, featuring military, diplomatic, and economic
5. Gyakorlat. struct diak {
Rövid elméleti összefoglaló 5. Gyakorlat Felhasználó által definiált adattípusok: A typedef egy speciális tárolási osztály, mellyel érvényes típusokhoz szinonim nevet rendelhetünk. typedef létező_típus
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/
Az SQL*Plus használata
Az SQL*Plus használata Célkitűzés Bejelentkezés az SQL*Plus-ba SQL utasítások szerkesztése Az eredmény formázása SQL*Plus utasításokkal Szkriptfájlok használata Az SQL és az SQL*Plus kapcsolata SQL*Plus
Programozás Minta programterv a 1. házi feladathoz 1.
Programozás Minta programterv a 1. házi feladathoz 1. Gregorics Tibor 1. beadandó/0.feladat 2008. december 6. EHACODE.ELTE gt@inf.elte.hu 0.csoport Feladat Egy osztályba n diák jár, akik m darab tantárgyat
Algoritmizálás és adatmodellezés tanítása 1. előadás
Algoritmizálás és adatmodellezés tanítása 1. előadás Algoritmus-leíró eszközök Folyamatábra Irányított gráf, amely csomópontokból és őket összekötő élekből áll, egyetlen induló és befejező éle van, az
Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 1. Előadás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási Tanszék www.kjit.bme.hu Programozás
Felhasználó által definiált adattípus
Felhasználó által definiált adattípus C++ Izsó Tamás 2017. február 24. Izsó Tamás Felhasználó által definiált adattípus/ 1 Irodalom Izsó Tamás Felhasználó által definiált adattípus/ 2 Programtervezési
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
Operációs rendszerek Folyamatok 1.1
Operációs rendszerek p. Operációs rendszerek Folyamatok 1.1 Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA ÉS ÁLTALÁNOS TECHNIKA TANSZÉK A rendszermag Rendszermag
Maximum 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
Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1
Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1 Készítette: Gipsz Jakab Neptun-azonosító: A1B2C3 E-mail: gipszjakab@vilaghalo.hu Kurzuskód: IP-08PAED Gyakorlatvezető
BASH 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
Vizuális, eseményvezérelt programozás XI.
Vizuális, eseményvezérelt programozás XI ÓE-NIK, 2011 1 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 szükséges,
.NET (Dot-NET) #1 (Bevezetés)
.NET (Dot-NET) #1 (Bevezetés) v0.2a 2004.02.05. 23:49: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 1 E jegyzet másolata
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
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 II. ATM példa Dr. Iványi Péter
Programozás II. ATM példa Dr. Iványi Péter 1 ATM gép ATM=Automated Teller Machine Pénzkiadó automata Kezelő szoftvert szeretnénk írni Objektum-orientált módon 2 Követelmények Egyszerre csak egy embert
Clang Static Analyzer belülről
Clang Static Analyzer belülről Nagy Donát 2015. október 6. Áttekintés 1 Clang Static Analyzer kívülről 2 A statikus elemzés folyamata 3 Az eszköz felépítése 4 Egy checker felépítése Rövid definíciók Clang
Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15
Matlab alapok Baran Ágnes Elágazások, függvények Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15 Logikai kifejezések =, ==, = (két mátrixra is alkalmazhatóak, ilyenkor elemenként történik
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
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
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
M-Fájlok létrehozása MATLAB-ban
M-Fájlok létrehozása MATLAB-ban 1 Mi az M-fájl Annak ellenére, hogy a MATLAB rendkívül kifinomult és fejlett számológépként használható, igazi nagysága mégis abban rejlik, hogy be tud olvasni és végrehajtani
Programozási nyelvek II. JAVA EA+GY 1. gyakolat
Programozási nyelvek II. JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2017/2018. őszi félév Tartalom 1 Amit tudni kell a félévről
Szkriptnyelvek. 1. UNIX shell
Szkriptnyelvek 1. UNIX shell Szkriptek futtatása Parancsértelmez ő shell script neve paraméterek shell script neve paraméterek Ebben az esetben a szkript tartalmazza a parancsértelmezőt: #!/bin/bash Szkriptek
Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás
Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási
Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread
Végrehajtási szálak Runnable, Thread Végrehajtási szálak Java-ban A Java program az operációs rendszer egy folyamatán (process) belül fut. A folyamat adat és kód szegmensekből áll, amelyek egy virtuális
Programozási nyelv Java
Programozási nyelv Java 1. gyakorlat Félév tematikája Bevezetés, alapok Vezérlési szerkezetek Eljárások, függvények Csomagok Tömbök, adatbevitelek Osztályok, objektumok, Interfészek Öröklődés, absztrakt
Programozási alapismeretek 2009/2010
Szlávi-Zsakó: Programozási alapismeretek 7. előadás 1 Szlávi-Zsakó: Programozási alapismeretek 7. előadás 2 Szlávi-Zsakó: Programozási alapismeretek 7. előadás 3 Ennek a játék a betűkkel -szerű absztrakciónak
Programozás C és C++ -ban
Programozás C és C++ -ban 2. További különbségek a C és C++ között 2.1 Igaz és hamis A C++ programozási nyelv a C-hez hasonlóan definiál néhány alap adattípust: char int float double Ugyanakkor egy új
Vezérlési szerkezetek
Vezérlési szerkezetek Szelekciós ok: if, else, switch If Segítségével valamely ok végrehajtását valamely feltétel teljesülése esetén végezzük el. Az if segítségével valamely tevékenység () végrehajtását
Szoftvertervezés és -fejlesztés I.
Szoftvertervezés és -fejlesztés I. Operátorok Vezérlési szerkezetek Gyakorlás 1 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.
Irvine eljárások. ClrScr - Törli a képernyő tartalmát és a kurzort a képernyő bal felső sarkába helyezi (Clear Screen).
Irvine eljárások Ahogy azt már év elején is említettük, a 32 bites környezet lehetővé tette számunkra, hogy több, már előre létrehozott eljárást használhassunk. Ehhez csupán telepítenünk kellett az Irvine
Imperatív programozás
Imperatív programozás 7. Előadás Függvények, láthatóság (folytatás) Modulok Kivételkezelés Beágyazott függvény def lnko(x, y): def kivon(m, n): return m - n while not (x == y) : if x > y : x = kivon(x,y)
George Shepherd. 1. A webes alkalmazások alapjai 1
George Shepherd Köszönetnyilvánítás Bevezetés Az ASP.NET 2.0 fejlesztése A klasszikus ASP ASP.NET 1.0 és 1.1 ASP.NET 2.0 Néhány szó a.net-futtatórendszerről A könyv használatáról Kinek szól a könyv? A
16F628A megszakítás kezelése
16F628A megszakítás kezelése A 'megszakítás' azt jelenti, hogy a program normális, szekvenciális futása valamilyen külső hatás miatt átmenetileg felfüggesztődik, és a vezérlést egy külön rutin, a megszakításkezelő
SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók
SQL*Plus Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP dolgozó), DEPT osztály) "közönséges" felhasználók Adatszótár: metaadatokat tartalmazó, csak olvasható táblák táblanév-prefixek:
Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása
Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 10. gyakorlat C++: alprogramok deklarációja és paraméterátadása 2011.11.22. Giachetta Roberto groberto@inf.elte.hu
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
Adabáziselérés ODBC-n keresztül utasításokkal C#-ban
Adabáziselérés ODBC-n keresztül utasításokkal C#-ban 1. Előkészítés Access adatbázis lemásolása, ODBC DSN létrehozása Másoljuk le az alábbiakat: Mit Honnan Hova list.mdb p:\johanyák Csaba\Vizualis programozas\data\
LabVIEW példák és bemutatók KÉSZÍTETTE: DR. FÜVESI VIKTOR
LabVIEW példák és bemutatók KÉSZÍTETTE: DR. FÜVESI VIKTOR LabVIEW-ról National Instruments (NI) által fejlesztett Grafikus programfejlesztő környezet, méréstechnikai, vezérlési, jelfeldolgozási feladatok
Powershell 2. gyakorlat
Szkriptek készítése, folytatás Könyvtárban levő bejegyzések száma, mérete (Új: measure-object) /batch/ megszamol2.ps1 $hossz=(get-childitem measure-object -property length).count write-host ("konyvtarban
Programozási technológia I.
Programozási technológia I. 2.gyakorlat A tárgy célja A tárgy alapvető Java ismeretek nyújt. A fő célja, hogy a hallgatók képesek legyenek az UML diagramokból Java kód előállítására. Félév tematikája Bevezetés,
A ChipScope logikai analizátor
A ChipScope egy, az FPGA tervbe integrálható logikai analizátor, amely az FPGA terv belső jeleinek vizsgálatára használható Előnye a normál logikai analizátorhoz képest Az igényeknek megfelelően konfigurálható
Programozá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
C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem
C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real
Programozás 6. Dr. Iványi Péter
Programozás 6. Dr. Iványi Péter 1 Előfeldolgozás része Makrók A forrás kódban elvégzi a helyettesítéseket a fordító Csak egyszer végez helyettesítést Nem olyan makrók, mint a LISP vagy Scheme esetén Csak
Kivételkezelés a C++ nyelvben Bevezetés
Kivételkezelés a C++ nyelvben Bevezetés Miskolci Egyetem Általános Informatikai Tanszék Kivételkezelés a C++ nyelvben CPP9 / 1 Hagyományos hibakezelés Függvény visszatérési értéke (paramétere) hátrányai:
Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés
Bevezetés a programozásba 2 7. Előadás: Objektumszű és osztályszű elemek, hibakezelés ISMÉTLÉS Osztály class Particle { public: Particle( X, X, Y); virtual void mozog( ); ); virtual void rajzol( ) const;
A szerzõrõl... xi Bevezetés... xiii
TARTALOMJEGYZÉK A szerzõrõl...................................................... xi Bevezetés...................................................... xiii I. rész A Visual Basic 2005 környezet 1. óra Irány
HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport
10-es Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a főátló alatti elemek mind nullák! Megolda si terv: Specifika cio : A = (mat: Z n m,ind: N, l: L) Ef =(mat = mat`)
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
A Code::Blocks fejlesztőkörnyezet
A Code::Blocks fejlesztőkörnyezet A Code::Blocks egy keretrendszer, amely sokféle platformon (Windows, Mac, Linux), elsősorban C/C++ programozási nyelvekhez biztosít kényelmes programfejlesztési környezetet.
Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)
1 Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication) 1. A folyamat (processzus, process) fogalma 2. Folyamatok: műveletek, állapotok, hierarchia 3. Szálak (threads)
C programozási nyelv
C programozási nyelv Előfeldolgozó utasítások Dr Schuster György 2011 május 3 Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 1 / 15 A fordítás menete Dr Schuster György
Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás
Számítástechnika II. BMEKOKAA153 1. Előadás Dr. Bécsi Tamás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási Tanszék www.kjit.bme.hu A tantárgyi
Operációs rendszerek gyak.
Operációs rendszerek gyak. AWK programozás Hirling Dominik Szegedi Tudományegyetem AWK AWK: a pattern scanning and processing language mintaelemző-és feldolgozó nyelv bármilyen szövegből minták alapján
C++ programozási nyelv Konstruktorok-destruktorok
C++ programozási nyelv Konstruktorok-destruktorok Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. szeptember A C++ programozási nyelv Soós Sándor 1/20 Tartalomjegyzék
Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE motiabt@inf.elte.
Programozási alapismeretek :: beadandó feladat Készítő adatai Név: Molnár Tamás EHA: MOTIABT.ELTE E-mail cím: motiabt@inf.elte.hu Gyakorlatvezető: Horváth László Feladat sorszáma: 23. Felhasználói dokumentáció
1. feladat. Szabóné Nacsa Rozália
1. feladat Készítsünk programot kisdiákoknak összeadás gyakorlására. Legyenek az operandusok 0-10 véletlen számok. Az = jel utáni szövegdobozban a kisdiáknak kell begépelni a megoldást. Az Értékelés gomb