Spezielle Techniken und Technologien der Informatik

Größe: px
Ab Seite anzeigen:

Download "Spezielle Techniken und Technologien der Informatik"

Transkript

1 1 / 32 Spezielle Techniken und Technologien der Informatik Reverse Engineering Robert Baumgartl 23. Mai 2016

2 Reverse Engineering Unter Reverse Engineering versteht man die Analyse von Software mit dem Ziel, ihren inneren Aufbau, ihre Struktur zu erkennen und zu verstehen. Zwei typische Anwendungsfälle sind die Rekonstruktion des Quellcodes von Programmen, die nur als Binärabbild vorliegen, z.b. Schadsoftware die Analyse von Kommunikationsprotokollen proprietärer Software 1 In der Lehrveranstaltung werden wir entsprechende Techniken und Werkzeuge kennenlernen, als Übungsplattform nutzen wir die Intel-IA-32-Architektur unter dem Betriebssystem Linux. Empfehlenswerte Literatur Bruce Dang, Alexandre Gazet und Elias Bachaalany. Practical Reverse Engineering. Wiley, 2014 Eldad Eilam. Reversing: Secrets of Reverse Engineering. Wiley, Beispielsweise ist das der populären Software Samba zugrundeliegende Protokoll SMB/CIFS per Reverse Engineering aufgeklärt worden. 2 / 32

3 3 / 32 Weitere Informationsquellen Intel 64 and IA-32 Architectures Software Developer s Manual (3 Volumes, knapp 4000 S.); frei verfügbar: Einführung in die AT&T-Assembler-Syntax für IA-32 Informationen zum Gnu Debugger gdb

4 Wozu? Sicherheitsbezogene Arbeiten Analyse bösartiger Software (z. B. Kryptotrojaner) Analyse von Applikationen und Betriebssystemen mit dem Ziel, Schwachstellen zu finden Analyse kryptografischer Algorithmen und deren Implementierung (Vortrag 2 von Philippe Oechslin auf dem 26C3) Unterwanderung von DRM Softwareentwicklung Herstellung der Interoperabilität zu proprietärer Software bzw. Protokollen (.doc-format, NTFS-Treiber in Linux, Samba, Hacking der Sony Playstation 3) Entwicklung konkurrierender Software Test der Robustheit und allgemeinen Qualität von Software / 32

5 5 / 32 Rechtliche Aspekte unterschiedliche nationale Gesetzgebung in Dt. grundsätzlich zunächst erlaubt; Ausnahme: Umgehung von Kopierschutzmechanismen aka Cracking (privat legal, gewerblich illegal 95a UrhG) Lizenz verbietet das Reverse Engineering häufig Analyse von protokollen ist grundsätzlich erlaubt USA: DMCA (vgl. Sony vs. Georg Hotz; PS3-Hack)

6 Beschränkung HLL 3 : C, weil leicht zu disassemblieren, da maschinennah, BS und die meisten Applikationen (und Schadcode) in C implementiert wurden und werden, alle Teilnehmer C könnten müssten. ISA 4 : IA-32 = Intel-Prozessoren im 32-Bit-Betrieb, weil in den Laboren diese Prozessoren verbaut sind, Befehlssatz gut zu verstehen; viel Literatur. (IMHO) leichter zu verstehen, als 64-Bit-Assembler BS: Linux, weil offene und freie Werkzeuge existieren, ich offene und freie Software bevorzuge. 3 High Level Language Höhere Programmiersprache 4 Instruction Set Architecture - der Befehlssatz und die Architektur des Prozessors 6 / 32

7 Werkzeuge 7 / Disassembler überführt (maschinenlesbares) Binary in (menschenlesbaren) Assemblercode objdump -d gdb 2. Decompiler überführt (maschinenlesbares) Binary in Hochsprachencode (bzw. versucht dies) z. B. Hex-Rays IDAPro (kommerziell) 3. Debugger zur schrittweisen Ausführung des zu analysierenden Codes, Speicherinspektion usw. 4. keine vergleichbaren Open-Source-Tools

8 Intel-Syntax vs. AT&T-Syntax 8 / 32

9 9 / 32 IA-32 CPU Wichtigste Register 2 Chapter 1 x86 and x64 by having user-mode applications run in ring 3, and the kernel in ring 0. The ring level is encoded in the CS register and sometimes referred to as the current privilege level (CPL) in official documentation. This chapter discusses the x86/ia-32 architecture as defined in the Intel 64 8 Universalregister and IA-32 Architectures ásoftware 32 Bit: Developer s EAX, Manual, EBX, Volumes ECX, 1 3 EDX, ( ESI, EDI,.com/content/www/us/en/processors/architectures-software-developer- EBP, ESP manuals.html). Befehlszähler EIP Register Set and Data Types Flagregister EFLAGS When operating in protected mode, the x86 architecture has eight 32-bit general- Datentypen: purpose registers 8 Bit (GPRs): (Byte), EAX, EBX, 16 ECX, Bit EDX, (Word), EDI, ESI, 32 EBP, Bit and (Double ESP. Some of Word), 64 them can be further divided into 8- and 16-bit registers. The instruction pointer Bit (Quad Word, nur EDX:EAX) is stored in the EIP register. The register set is illustrated in Figure 1-1. Table 1-1 describes some of these GPRs and how they are used EAX EBP AX BP AH AL ESP ESI SP SI EIP EDI EFLAGS Figure 1-1 DI

10 IA-32 CPU Registerbedeutungen Register EAX ECX ESP EBP ESI EDI Semantik Resultatregister Zählerregister in Schleifen Stack Pointer (TOS) zeigt auf Beginn des aktuellen Stackframes Quelladresse bei Blockoperationen Zieladresse bei Blockoperationen Viele weitere Register existieren, haben aber Spezialbedeutung Gleitkommaarithmetik, Control Registers CR, Model-Specific-Registers (MSR), MMX & SSE Co.) 10 / 32

11 11 / 32 IA-32 CPU EFLAGS 18 Chapter 1 x86 and x System flags. Flags There can be up to OF 16 conditional S codes, Z but the most CF common ones are described in Table 1-3. Carry: 1, wenn Übertrag (unsigned) Zero: 1, wenn Resultat=0 Sign: =MSB des Resultats Table 1-3: Common Conditional Codes Overflow: 1, wenn Resultat die max. Länge übersteigt (signed) CONDITIONAL CODE B/NAE ENGLISH DESCRIPTION Below/Neither Above nor Equal. Used for unsigned operations. MACHINE DESCRIPTION CF=1 NB/AE Not Below/Above or Equal. Used for CF=0 unsigned operations. E/Z Equal/Zero ZF=1 NE/NZ Not Equal/Not Zero ZF=0 L GE/NL G/NLE Less than/neither Greater nor Equal. Used for signed operations. Greater or Equal/Not Less than. Used for signed operations. Greater/Not Less nor Equal. Used for signed operations. (SF ^ OF) = 1 (SF ^ OF) = 0 ((SF ^ OF) ZF) = 0

12 12 / 32 Übersicht Kopieren von Daten Speicher Register und Register Register: mov arithmetische Operationen: mul, add, sub, inc, dec logische Operationen: or, and, shr, shl, xor Stackoperationen und Funktionsaufrufe: push, pop, call, ret Sprünge/bedingte Sprünge mit Vergleichen: jmp, jcc mit cmp und test

13 Der Stack 13 / 32 Bereich des Speichers wächst in Richtung kleinerer Adressen LIFO- (Last In First Out) Prinzip für Daten mit begrenzter Gültigkeitsdauer Parameter einer Funktion Rückkehradresse beim Sprung in eine Funktion (CALL) lokale Variablen einer Funktion temporäre Kopien von Registerinhalten (Save/Restore) nutzerdefinierte DS alloca() organisiert in Frames, die jeweils durch die Register EBP und ESP begrenzt werden ESP zeigt stets auf oberstes Element des Stacks (Top of Stack, TOS) Instruktionen: pop und push

14 Der Stack Aufbau eines Stackframes hohe Adressen EBP ESP niedrige Adressen Funktionsparameter <Ret> SFP lokale Variablen Top of Stack (TOS) Stack- Frame 14 / 32

15 15 / 32 push und pop push pop inkrementiert zuerst ESP (gewöhnlich +=4, da 32-Bit-Worte abgelegt werden) legt danach den Operanden auf die Adresse, auf die ESP verweist schreibt zuerst das Datum, auf das ESP verweist, in den übergebenen Operanden dekrementiert danach den Stackpointer ESP Operand ist in beiden Fällen ein Register oder eine Speicherstelle

16 16 / 32 push und pop Ablauf bei einer push-instruktion EBP ESP Hi Lo Funktionsparameter <Ret> SFP lokale Variablen 0xaffedead Register EAX enthält Wert 0x23. ausgeführte Instruktion: pushl %eax EBP ESP Funktionsparameter <Ret> SFP lokale Variablen 0xaffedead 0x a) vor push-operation b) nach push-operation

17 Calling Conventions aka Wie werden Parameter und Resultate beim Funktionsaufruf kommuniziert? In welcher Reihenfolge werden Parameter übergeben? Wie werden Parameter übergeben (in Register oder über den Stack)? Wie wird das Funktionsergebnis zurückgeliefert? 16 Chapter 1 x86 and x64 Welche Registerwerte dürfen durch die Funktion nicht zerstört werden (müssen ggf. innerhalb der Funktion gesichert und restauriert werden)? Table 1-2: Calling Conventions Parameters CDECL STDCALL FASTCALL Pushed on the stack from rightto-left. Caller must clean up the stack after the call. Same as CDECL except that the callee must clean the stack. First two parameters are passed in ECX and EDX. The rest are on the stack. Return value Stored in EAX. Stored in EAX. Stored in EAX. Non-volatile registers EBP, ESP, EBX, ESI, EDI. EBP, ESP, EBX, ESI, EDI. EBP, ESP, EBX, ESI, EDI. We now return to the code snippet to discuss how the function addme is Abbildung: Die wichtigsten Calling Conventions der IA-32 5 invoked. In line 1 and 3, the two parameters are pushed on the stack; ECX and EAX are the first and second parameter, respectively. Line 4 invokes the addme function with the CALL instruction. This immediately pushes the return address, 0x4129FE, on the stack and begins execution at 0x4113A0. Figure 1-4 illustrates 5 Bruce Dang, Alexandre Gazet und Elias Bachaalany. Practical Reverse Engineering. Wiley, 2014, S / 32

18 18 / 32 Elementare Konstrukte in C if-else-statement Schleifen Funktionsaufrufe Systemrufe (Linux) switch-case-statement ( Praktikum)

19 if-else-statement 19 / 32 Listing 1: ifelse.c #include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { int a, b=1; if (b==42) { a=23; } else { a=42; } exit(0); }

20 if-else-statement 20 / 32 Listing 2: Disassemblat zu ifelse.c (gdb) disas main Dump of assembler code for function main: 0x080483fb <+0>: lea 0x4(%esp),%ecx 0x080483ff <+4>: and $0xfffffff0,%esp 0x <+7>: pushl -0x4(%ecx) 0x <+10>: push %ebp 0x <+11>: mov %esp,%ebp 0x <+13>: push %ecx 0x <+14>: sub $0x14,%esp 0x c <+17>: movl $0x1,-0xc(%ebp) 0x <+24>: cmpl $0x2a,-0xc(%ebp) 0x <+28>: jne 0x <main+39> 0x <+30>: movl $0x17,-0x10(%ebp) 0x <+37>: jmp 0x <main+46> 0x <+39>: movl $0x2a,-0x10(%ebp) 0x <+46>: sub $0xc,%esp 0x c <+49>: push $0x0 0x e <+51>: call 0x80482e0 <exit@plt> End of assembler dump.

21 21 / 32 if-else-konstrukt PAP für den Assemblerquelltext Start b=1 no b = 42? yes a=42 a=23 exit(0) Stop

22 22 / 32 Schleifen for-konstrukt Listing 3: loop1.c #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int c; for(c=0; c<23; c++) { printf("%d\n", c); } exit(0); }

23 23 / 32 Schleifen for-konstrukt Listing 4: Disassemblat zu loop1.c (gdb) disas main Dump of assembler code for function main: 0x b <+0>: lea 0x4(%esp),%ecx 0x f <+4>: and $0xfffffff0,%esp 0x <+7>: pushl -0x4(%ecx) 0x <+10>: push %ebp 0x <+11>: mov %esp,%ebp 0x <+13>: push %ecx 0x <+14>: sub $0x14,%esp 0x c <+17>: movl $0x0,-0xc(%ebp) 0x <+24>: jmp 0x804845c <main+49> 0x <+26>: sub $0x8,%esp 0x <+29>: pushl -0xc(%ebp) 0x b <+32>: push $0x x <+37>: call 0x80482f0 <printf@plt> 0x <+42>: add $0x10,%esp 0x <+45>: addl $0x1,-0xc(%ebp) 0x c <+49>: cmpl $0x16,-0xc(%ebp) 0x <+53>: jle 0x <main+26> 0x <+55>: sub $0xc,%esp 0x <+58>: push $0x0 0x <+60>: call 0x <exit@plt>

24 24 / 32 for-konstrukt PAP für den Assemblerquelltext Start c=0 c 22? no yes printf("%d\n",c); exit(0) c++ Stop

25 25 / 32 Schleifen Nutzung von goto Listing 5: loop2.c #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int c; c = 0; label: printf("%d\n", c); c++; if (c<23) goto label; exit(0); } es resultiert gleiches Assemblat

26 26 / 32 Funktionsaufrufe Beispiel Listing 6: mul.c #include <stdio.h> #include <stdlib.h> int mul(int x, int y) { int res; res = x * y; return res; } int main(int argc, char* argv[]) { int a=23, b=42, erg; erg = mul(a, b); printf("ergebnis: %d\n", erg); exit(0); }

27 Funktionsaufrufe Listing 7: Disassemblat zu mul.c (gdb) disas main... 0x b <+11>: mov %esp,%ebp ; neuer Stackframe 0x d <+13>: push %ecx 0x e <+14>: sub $0x14,%esp ; Platz fuer lokale Variablen 0x <+17>: movl $0x17,-0xc(%ebp) ; a=23 0x <+24>: movl $0x2a,-0x10(%ebp) ; b=42 0x f <+31>: pushl -0x10(%ebp) ; push b 0x <+34>: pushl -0xc(%ebp) ; push a 0x <+37>: call 0x804842b <mul> 0x a <+42>: add $0x8,%esp ; Parameter vom Stack 0x d <+45>: mov %eax,-0x14(%ebp) ; erg=mul(a,b); 0x <+48>: sub $0x8,%esp 0x <+51>: pushl -0x14(%ebp) ; push erg 0x <+54>: push $0x ; push &"Ergebnis: %d\n" 0x b <+59>: call 0x80482f0 <printf@plt> 0x <+64>: add $0x10,%esp ; Parameter vom Stack 0x <+67>: sub $0xc,%esp 0x <+70>: push $0x0 ; push 0 0x <+72>: call 0x <exit@plt> ; exit(0) (gdb) disas mul 0x b <+0>: push %ebp ; akt. Stackframe sichern 0x c <+1>: mov %esp,%ebp ; neuer Stackframe 0x e <+3>: sub $0x10,%esp ; Platz fuer lokale Variablen 0x <+6>: mov 0x8(%ebp),%eax ; eax:=a (Parameter) 0x <+9>: imul 0xc(%ebp),%eax ; eax:=a*b 0x <+13>: mov %eax,-0x4(%ebp) ; result=a*b 0x b <+16>: mov -0x4(%ebp),%eax ; Resultat in eax 0x e <+19>: leave ; esp:=ebp; pop ebp 0x f <+20>: ret ; pop eip 27 / 32

28 28 / 32 Funktionsaufrufe Parameter- und Ergebniskommunikation Funktionsparameter per Stack übergeben (Parameterliste wird von rechts nach links auf den Stack gepusht ) Parameter-Bereich wird auf Vielfaches von 16 Byte aufgefüllt Resultat einer Funktion in Register EAX geliefert rufende Instanz räumt Parameter nach Rückkehr vom Stack (Caller Cleanup) CDECL-Konvention genutzt

29 29 / 32 Funktionsaufrufe Struktur Struktur einer Funktion 1. Prolog: aktuellen Framepointer auf Stack sichern (push %ebp) neuen Framepointer setzen (mov %esp,%ebp) Platz für lokale Variablen schaffen (sub imm16,%esp) 2. Funktionskörper 3. Epilog aktuellen Frame zerstören (mov %ebp,%esp) gesicherten Framepointer restaurieren (pop %ebp) beides zusammen ist die leave-instruktion Fortsetzung an auf Funktionsaufruf folgender Adresse (pop eip aka ret)

30 30 / 32 Systemrufe Wiederholung BS1: Systemrufe sind Dienste, die das Betriebssystem mitbringt werden im Adressraum des Kernels erbracht (Umschaltung Usermode Kernelmode nötig) können daher nicht durch Call-Return-Mechanismus erbracht werden stattdessen: Nutzung eines Interrupts oder sysenterund sysleave-instruktionen Beispiele: fork(), open(), read(), socket() usw.

31 31 / 32 Aufrufkonvention Systemruf Linux (32Bit) Systemrufnummer in eax Argumente in ebx, ecx, edx, esi, edi, ebp (in dieser Reihenfolge) Systemeintritt durch int 0x80 (Systemdienst wird im Kernelmode ausgeführt) Resultatwert in eax Systemaustritt mittels iret Systemrufnummern:

32 32 / 32 Systemrufe Beispiel Listing 8: helloasm.text.global _start _start: movl $0, %eax xorl %ebx, %ebx xorl %edx, %edx jmp string /* push string addr */ code: pop %ecx /* ecx <-- string addr */ movb $01, %bl /* filedesc, stdout */ movb $15, %dl /* string lgth */ movb $04, %al /* write(stdout, addr, lgth) */ int $0x80 decb %bl movb $01,%al /* exit(0) */ int $0x80 string: call code.ascii "Hello, world!\x0a\x00"

U23 Assembler Workshop

U23 Assembler Workshop Ike e.v. http://koeln.ccc.de 2016-11-05 Überblick 1 CPU, Assembler Überblick x86 x86 Assembler 2 RAM, Stack, Calling Conventions Stack Calling Conventions Stackframes 3 Branches Jumps 4 Speicher, C-Interface

Mehr

U23 Assembler Workshop

U23 Assembler Workshop Ike e.v. http://koeln.ccc.de 2016-11-05 Überblick 1 CPU, Assembler Überblick x86 x86 Assembler 2 RAM, Stack, Calling Conventions Stack Calling Conventions Stackframes 3 Branches Jumps 4 Speicher, C-Interface

Mehr

Rechnernetze und -Organisation. Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch

Rechnernetze und -Organisation. Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch Rechnernetz R Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch www.iaik.tugraz.at/content/teaching/bachelor_courses/rechnernetze_und_organisation/ 1 Zeitplan für Teil B Mittwoch 23. März 2011 Mittwoch

Mehr

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 1 / 53 Inhaltsverzeichnis 1 Einführung 2 Assembler Syntax, Register und Flags 3 Hauptspeicher 4 Stack 5 Assemblerbefehle

Mehr

Assembler (NASM) Crashkurs von Sönke Schmidt

Assembler (NASM) Crashkurs von Sönke Schmidt Sönke Schmidt (NASM) Crashkurs von Sönke Schmidt Berlin, 4.11.2015 Meine Webseite: http://www.soenke-berlin.de NASM Was ist das? nach Wikipedia: Ein ist ein Programmierwerkzeug, das ein in maschinennaher

Mehr

Aufgabe 1 Entwicklung einer Virtuellen Maschine

Aufgabe 1 Entwicklung einer Virtuellen Maschine Aufgabe 1 Entwicklung einer Virtuellen Maschine Rainer Müller Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2014/2015 R. Müller Entwicklung

Mehr

6. Intel IA-32 Prozessoren Aufbau und Adressierungsarten

6. Intel IA-32 Prozessoren Aufbau und Adressierungsarten 6. Intel IA-32 Prozessoren Aufbau und Adressierungsarten 6.1 Gegenstand der Vorlesung Interne Organisation - Architektur - Register - Statusbits - Speicherstruktur Basis-Adressierungsarten - direct - absolute

Mehr

Hinweise 80x86-Architektur

Hinweise 80x86-Architektur Hinweise 80x86-Architektur Rainer Müller Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2014/2015 R. Müller Hinweise 80x86-Architektur

Mehr

U23 - Shellcode. Twix Chaos Computer Club Cologne. Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides

U23 - Shellcode. Twix Chaos Computer Club Cologne.  Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides Twix e.v. http://koeln.ccc.de 2016-11-28 Überblick 1 Motivation Was ist Shellcode? Beispiel 2 Einstieg Erzeugen, Testen von Shellcode 3 Der erste Shellcode Strings in Shellcode 4 Nullbytes, NOP Slides

Mehr

Assembler Unterprogramme

Assembler Unterprogramme Assembler Unterprogramme Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler Unterprogramme 1/43 2008-06-03 Unterprogramme

Mehr

Einführung in (Intel) 80x86 Assembler. Einführung in (Intel) 80x86 Assembler Wintersemester 2009/10 1 / 31

Einführung in (Intel) 80x86 Assembler. Einführung in (Intel) 80x86 Assembler Wintersemester 2009/10 1 / 31 Einführung in (Intel) 80x86 Assembler Einführung in (Intel) 80x86 Assembler Wintersemester 2009/10 1 / 31 Einführung Die folgenden Folien geben einen Überblick über die weit verbreitet x86 Architektur

Mehr

Karlsruher Institut für Technologie

Karlsruher Institut für Technologie Karlsruher Institut für Technologie Lehrstuhl für Programmierparadigmen Sprachtechnologie und Compiler WS 2010/2011 Dozent: Prof. Dr.-Ing. G. Snelting Übungsleiter: Matthias Braun Lösung zu Übungsblatt

Mehr

Einführung in (Intel) 80x86 Assembler. Einführung in (Intel) 80x86 Assembler Wintersemester 2008/09 1 / 26

Einführung in (Intel) 80x86 Assembler. Einführung in (Intel) 80x86 Assembler Wintersemester 2008/09 1 / 26 Einführung in (Intel) 80x86 Assembler Einführung in (Intel) 80x86 Assembler Wintersemester 2008/09 1 / 26 1 Geschichte 2 Programmiermodell 3 Befehlssatz 4 Konventionen 5 Beispiele 6 SSE 7 Literatur Einführung

Mehr

2. Aufgabenblatt Musterlösung

2. Aufgabenblatt Musterlösung 2. Aufgabenblatt Musterlösung Technische Informatik II Sommersemester 2011 Problem 2: Assembler Syntax Register eines 32-bit Intel-Prozessors: 16 bits 8 bits 8 bits general purpose registers EAX Accumulator

Mehr

Übungen zur Vorlesung Systemsicherheit

Übungen zur Vorlesung Systemsicherheit Übungen zur Vorlesung Systemsicherheit Address Space Layout Randomization Tilo Müller, Reinhard Tartler, Michael Gernoth Lehrstuhl Informatik 1 + 4 19. Januar 2011 c (Lehrstuhl Informatik 1 + 4) Übungen

Mehr

GCC 3.x Stack Layout. Auswirkungen auf Stack-basierte Exploit-Techniken. Tobias Klein, 2003 tk@trapkit.de Version 1.0

GCC 3.x Stack Layout. Auswirkungen auf Stack-basierte Exploit-Techniken. Tobias Klein, 2003 tk@trapkit.de Version 1.0 1 GCC 3.x Stack Layout Auswirkungen auf Stack-basierte Exploit-Techniken Tobias Klein, 2003 tk@trapkit.de Version 1.0 2 Abstract Eine spezielle Eigenschaft des GNU C Compilers (GCC) der Version 3.x wirkt

Mehr

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes Grundlagen der Informatik III Wintersemester 2010/2011 5. Vorlesung Dr.-Ing. Wolfgang Heenes int main() { printf("hello, world!"); return 0; } msg: main:.data.asciiz "Hello, world!".text.globl main la

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013. Vorlesung 9, Dienstag 18.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013. Vorlesung 9, Dienstag 18. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013 Vorlesung 9, Dienstag 18. Dezember 2012 (Performance Tuning, Profiling, Maschinencode) Prof. Dr.

Mehr

Assembler - Einleitung

Assembler - Einleitung Assembler - Einleitung Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Einleitung 1/19 2008-04-01 Teil 1: Hochsprache

Mehr

Übung 1 - Betriebssysteme I

Übung 1 - Betriebssysteme I Prof. Dr. Th. Letschert FB MNI 13. März 2002 Aufgabe 0: Basiswissen Rechnerarchitektur: Übung 1 - Betriebssysteme I Aus welchen Komponenten besteht ein Rechner mit Von-Neumann Architektur? Was sind Bits

Mehr

Assembler - Adressierungsarten

Assembler - Adressierungsarten Assembler - Adressierungsarten Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Adressierungsarten 1/31 2008-04-01

Mehr

Einleitung Funktionsaufrufe Berechnungen Verzweigungen Systemaufrufe Speicherzugriffe Fazit Quellen. Laufzeitkosten in C.

Einleitung Funktionsaufrufe Berechnungen Verzweigungen Systemaufrufe Speicherzugriffe Fazit Quellen. Laufzeitkosten in C. Laufzeitkosten in C Tobias Fechner Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 19-12-2013 Tobias Fechner

Mehr

Einführung. Übungen zur Vorlesung Virtuelle Maschinen. Stefan Potyra. SoSe 2009

Einführung. Übungen zur Vorlesung Virtuelle Maschinen. Stefan Potyra. SoSe 2009 Einführung Übungen zur Vorlesung Virtuelle Maschinen Stefan Potyra Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SoSe 2009 Übungsaufgaben 1 Entwickeln

Mehr

Assembler - Variablen

Assembler - Variablen Assembler - Variablen Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Variablen 1/30 2008-04-21 Variablen Variablen

Mehr

Übersicht der wichtigsten Assemblerbefehle in ATT-Syntax. Operanden, Statusflags und Registersatz

Übersicht der wichtigsten Assemblerbefehle in ATT-Syntax. Operanden, Statusflags und Registersatz Übersicht der wichtigsten Assemblerbefehle in ATT-Syntax Autoren: Wolfgang Heenes, Patrik Schmittat Version: 0.4 Datum: 26. März 2011 Operanden, Statusflags und Registersatz Die vier Operanden sind: Direkter

Mehr

"Organisation und Technologie von Rechensystemen 4"

Organisation und Technologie von Rechensystemen 4 Klausur OTRS-4, 29.09.2004 Seite 1 (12) INSTITUT FÜR INFORMATIK Lehrstuhl für Rechnerarchitektur (Informatik 3) Universität Erlangen-Nürnberg Martensstr. 3, 91058 Erlangen 29.09.2004 Klausur zu "Organisation

Mehr

Abstrakte C-Maschine und Stack

Abstrakte C-Maschine und Stack Abstrakte C-Maschine und Stack Julian Tobergte Proseminar C- Grundlagen und Konzepte, 2013 2013-06-21 1 / 25 Gliederung 1 Abstrakte Maschine 2 Stack 3 in C 4 Optional 5 Zusammenfassung 6 Quellen 2 / 25

Mehr

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes Grundlagen der Informatik III Wintersemester 2010/2011 4. Vorlesung Dr.-Ing. Wolfgang Heenes int main() { printf("hello, world!"); return 0; } msg: main:.data.asciiz "Hello, world!".text.globl main la

Mehr

Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 K-Uebung9.fm

Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 K-Uebung9.fm K 9. Übung K 9. Übung K-1 Überblick Besprechung 7. Aufgabe (jbuffer) Unix, C und Sicherheit K.1 Mögliche Programmsequenz für eine Passwortabfrage in einem Server- Programm: int main (int argc, char *argv[])

Mehr

Assembler Kontrollstrukturen

Assembler Kontrollstrukturen Assembler Kontrollstrukturen Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler Kontrollstrukturen 1/21 2008-04-03 Kontrollstrukturen

Mehr

Buffer Overflow. Denis Graf, Tim Krämer, Konstantin Schlese. Universität Hamburg Fachbereich Informatik. 6. Januar 2013

Buffer Overflow. Denis Graf, Tim Krämer, Konstantin Schlese. Universität Hamburg Fachbereich Informatik. 6. Januar 2013 Buffer Overflow Denis Graf, Tim Krämer, Konstantin Schlese Universität Hamburg Fachbereich Informatik 6. Januar 2013 Agenda 1. Einführung Allgemeines über Buffer Overflows Historische Angriffe Definition

Mehr

Betriebssysteme Teil 3: Laufzeitsystem für Programme

Betriebssysteme Teil 3: Laufzeitsystem für Programme Betriebssysteme Teil 3: Laufzeitsystem für Programme 23.10.15 1 Literatur [3-1] Stack: http://fbim.fh-regensburg.de/~hab39652/pg1/skriptum/ ausdruecke/maschinenmodell.html [3-2] https://de.wikipedia.org/wiki/dynamischer_speicher

Mehr

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Vorbesprechung U8 Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Basistypen Alignment der Basistypen auf deren Grösse Grössen (abhängig

Mehr

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems Mitglied der Zürcher Fachhochschule TIn 1: Lecture 4 Data transfer Feedback Laboratories Question: What is the IP? Why do we NEED an IP? Lecture 3: Lernziele Moving data, the why s and wherefores Moving

Mehr

Betriebssystembau. 7. Übung. Michael Engel Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund

Betriebssystembau. 7. Übung. Michael Engel Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund Betriebssystembau 7. Übung Michael Engel Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund michael.engel@tu-dortmund.de http://ess.cs.uni-dortmund.de/~me/ 1 Agenda Coroutinen

Mehr

Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme

Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester 2016 Lorenz Schauer Mobile & Verteilte Systeme 12. Juli 2016 Agenda heute Grundlagen: Unterprogramme I Call-by-Value (CBV) vs. Call-by-Reference

Mehr

Grundlagen der Informatik III Wintersemester 2010/2011

Grundlagen der Informatik III Wintersemester 2010/2011 Grundlagen der Informatik III Wintersemester 2010/2011 Wolfgang Heenes, Patrik Schmittat 4. Aufgabenblatt mit Lösungsvorschlag 22.11.2010 Hinweis: Der Schnelltest und die Aufgaben sollen in den Übungsgruppen

Mehr

Use of the LPM (Load Program Memory)

Use of the LPM (Load Program Memory) Use of the LPM (Load Program Memory) Use of the LPM (Load Program Memory) Instruction with the AVR Assembler Load Constants from Program Memory Use of Lookup Tables The LPM instruction is included in the

Mehr

6. Grundlagen der Programmierung

6. Grundlagen der Programmierung Computeranwendung in der Chemie Informatik für Chemiker(innen) 6. Grundlagen der Programmierung Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL6 Folie 1 Dr. Jens Döbler Grundlagen

Mehr

0 C (Carry) Überlauf des 8ten Bits. 1 DC (Digit Carry) Überlauf des 4ten Bits. Mnemonic Parameter Beschreibung Status-Flags.

0 C (Carry) Überlauf des 8ten Bits. 1 DC (Digit Carry) Überlauf des 4ten Bits. Mnemonic Parameter Beschreibung Status-Flags. 3. Assembler-Programmierung Der PIC 16F84A Microcontroller kennt 35 verschiedene Befehle. Für eine ausführliche Beschreibung aller Befehle siehe PIC16F84A-Datenblatt Kapitel 7.1. 3.1 Wichtige Flaggen im

Mehr

Maschinencode Dateiformat und Stackframes

Maschinencode Dateiformat und Stackframes Maschinencode Dateiformat und Stackframes Proseminar C-Programmierung - Grundlagen und Konzepte Julian M. Kunkel julian.martin.kunkel@informatik.uni-hamburg.de Wissenschaftliches Rechnen Fachbereich Informatik

Mehr

1 Maschinenunabhängige Optimierungen. Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17

1 Maschinenunabhängige Optimierungen. Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17 1 Maschinenunabhängige Optimierungen Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17 Optimierungen Automatische Optimierungen sind nötig, weil unoptimierter Code meist besser lesbar ist.

Mehr

Programmier-Befehle - Woche 10

Programmier-Befehle - Woche 10 Funktionen Rekursion Selbstaufruf einer Funktion Jeder rekursive Funktionsaufruf hat seine eigenen, unabhängigen Variablen und Argumente. Dies kann man sich sehr gut anhand des in der Vorlesung gezeigten

Mehr

Grundlagen der Informatik III Wintersemester 2010/2011

Grundlagen der Informatik III Wintersemester 2010/2011 Grundlagen der Informatik III Wintersemester 2010/2011 Wolfgang Heenes, Patrik Schmittat 2. Aufgabenblatt mit Lösungsvorschlag 08.11.2010 Hinweis: Der Schnelltest und die Aufgaben sollen in den Übungsgruppen

Mehr

COMPILER & CODE ANALYSE. Eine Einführung in die Code Analyse auf Grundlage von Compilern und deren Optimierung. 1

COMPILER & CODE ANALYSE. Eine Einführung in die Code Analyse auf Grundlage von Compilern und deren Optimierung. 1 1 COMPILER & CODE ANALYSE Eine Einführung in die Code Analyse auf Grundlage von Compilern und deren Optimierung. 1 INHALT Einleitung Werkzeuge Compiler Aufbau Optimierung Beispiel Code Analyse Einführung

Mehr

B1 Stapelspeicher (stack)

B1 Stapelspeicher (stack) B1 Stapelspeicher (stack) Arbeitsweise des LIFO-Stapelspeichers Im Kapitel "Unterprogramme" wurde schon erwähnt, dass Unterprogramme einen so genannten Stapelspeicher (Kellerspeicher, Stapel, stack) benötigen

Mehr

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse

Mehr

Hinweise C-Programmierung

Hinweise C-Programmierung Hinweise C-Programmierung Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2016/2017 V. Sieh Hinweise C-Programmierung

Mehr

Inhaltsverzeichnis. 1 Einleitung 2

Inhaltsverzeichnis. 1 Einleitung 2 Inhaltsverzeichnis 1 Einleitung 2 2 Installation 3 2.1 Windows............................................. 3 2.1.1 Yasm per Konsole nutzen............................... 3 2.1.2 Integration mit Visual

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 1: Von der Maschinensprache zu C Prof. Dr. Maschinensprache: MIPS R2000 Was bewirkt folgendes Programm: 00100111101111011111111111100000 10101111101111110000000000010100

Mehr

Unterprogramme. Unterprogramme

Unterprogramme. Unterprogramme Unterprogramme Unterprogramme wichtiges Hilfsmittel für mehrfach benötigte Programmabschnitte spielen in höheren Programmiersprachen eine wesentliche Rolle in Assembler sind bestimmte Konventionen nötig

Mehr

Das Paging: Stellen wir uns eine Zahlenmenge vor mit 12 Zahlen und zwar von 0 bis 11.

Das Paging: Stellen wir uns eine Zahlenmenge vor mit 12 Zahlen und zwar von 0 bis 11. Das Paging: Stellen wir uns eine Zahlenmenge vor mit 12 Zahlen und zwar von 0 bis 11. {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} Stellen wir uns nun vor, die 12 Zahlen sind nicht in der richtigen Reihenfolge,

Mehr

FAKULTÄT FÜR INFORMATIK

FAKULTÄT FÜR INFORMATIK FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN Lehrstuhl für Rechnertechnik und Rechnerorganisation Prof. Dr. Arndt Bode Einführung in die Rechnerarchitektur Wintersemester 2016/2017 Zentralübung

Mehr

C-Kurs 2010 Pointer. 16. September v2.7.3

C-Kurs 2010 Pointer. 16. September v2.7.3 C-Kurs 2010 Pointer Sebastian@Pipping.org 16. September 2010 v2.7.3 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. C-Kurs Mi Konzepte, Syntax,... printf, scanf Next

Mehr

Zusammenfassung der Assemblerbefehle des 8051

Zusammenfassung der Assemblerbefehle des 8051 Zusammenfassung der Assemblerbefehle des 8051 Seite 1 von 5 Befehl Bezeichnung Syntax Wirkung / Beispiel Befehle zum Datentransfer MOV Move MOV [Ziel],[Quelle] MOV P1,P3 Kopiert den Inhalt von P3 nach

Mehr

Übung 3: VHDL Darstellungen (Blockdiagramme)

Übung 3: VHDL Darstellungen (Blockdiagramme) Übung 3: VHDL Darstellungen (Blockdiagramme) Aufgabe 1 Multiplexer in VHDL. (a) Analysieren Sie den VHDL Code und zeichnen Sie den entsprechenden Schaltplan (mit Multiplexer). (b) Beschreiben Sie zwei

Mehr

Malware-Analyse und Reverse Engineering. 9: Polymorphe Viren und selbstmodifizierender Code Prof. Dr. Michael Engel

Malware-Analyse und Reverse Engineering. 9: Polymorphe Viren und selbstmodifizierender Code Prof. Dr. Michael Engel Malware-Analyse und Reverse Engineering 9: Polymorphe Viren und 18.5.2017 Prof. Dr. Michael Engel Überblick Themen: Erschweren des Disassemblierens von Code Ver- und Entschlüsselung von Code Selbstmodifizierender

Mehr

Buffer Overflow 1c) Angriffsstring: TTTTTTTTTTTTTTTT (16x) Beachte: Padding GCC-Compiler Zusatz: gcc O2 verhindert hier den Angriff (Code Optimierung)

Buffer Overflow 1c) Angriffsstring: TTTTTTTTTTTTTTTT (16x) Beachte: Padding GCC-Compiler Zusatz: gcc O2 verhindert hier den Angriff (Code Optimierung) Buffer Overflow 1c) 1 char passok='f'; 2 char password[8]; 3 printf( Passwort: ); 4 gets(password); 5 if(!strcmp(password, daspassw )){passok = 'T';} 6 if(passok=='t'){printf( %s, Willkommen! );} 7 else

Mehr

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

Java Tools JDK. IDEs.  Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation Java Tools JDK http://www.oracle.com/technetwork/java/javase/ Downloads IDEs Java SE 8 Java SE 8 Documentation Eclipse http://www.eclipse.org IntelliJ http://www.jetbrains.com/idea/ NetBeans https://netbeans.org/

Mehr

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht Kap.2 Befehlsschnittstelle Prozessoren, externe Sicht 2 Befehlsschnittstelle 2.1 elementare Datentypen, Operationen 2.2 logische Speicherorganisation 2.3 Maschinenbefehlssatz 2.4 Klassifikation von Befehlssätzen

Mehr

Assembler-Programmierung

Assembler-Programmierung Assembler-Programmierung Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Assembler-Programmierung 1/48 2012-02-29 Assembler-Programmierung

Mehr

Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming

Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming Task Wiederholung 1 System SysCalls (1) Wozu? Sicherheit Stabilität Erfordert verschiedene modes of execution: user mode privileged mode

Mehr

Hardware-Programmierung mit Linux/NASM

Hardware-Programmierung mit Linux/NASM Hardware-Programmierung mit Linux/NASM Daniel Grün 12. Februar 2007 Zusammenfassung Direkte Ansteuerung der Parallel-Schnittstelle mittels NASM unter Linux nur unter Einsatz von reinen Assembler-Routinen

Mehr

Problem: Keine Integers in JavaCard. ToDo: Rechnen mit Bytes und Shorts

Problem: Keine Integers in JavaCard. ToDo: Rechnen mit Bytes und Shorts Kapitel 6: Arithmetik in JavaCard Problem: Keine Integers in JavaCard ToDo: Rechnen mit Bytes und Shorts Java SmartCards, Kap. 6 (1/20) Hex-Notation 1 Byte = 8 Bit, b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 0101

Mehr

Just-In-Time-Compiler (2)

Just-In-Time-Compiler (2) Just-In-Time-Compiler (2) Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2015/2016 V. Sieh Just-In-Time-Compiler

Mehr

Compilerbau Instruktionsauswahl 168. Instruktionsauswahl

Compilerbau Instruktionsauswahl 168. Instruktionsauswahl Instruktionsauswahl Compilerbau Instruktionsauswahl 168 Instruktionsauswahl Ziel: Übersetzung der IR-Bäume in Assemblerinstruktionen mit (beliebig vielen) abstrakten Registern. Die x86 (Pentium) Architektur

Mehr

FAKULTÄT FÜR INFORMATIK

FAKULTÄT FÜR INFORMATIK FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN Lehrstuhl für Rechnertechnik und Rechnerorganisation Prof. Dr. Arndt Bode Einführung in die Rechnerarchitektur Wintersemester 2016/2017 Zentralübung

Mehr

Funktionaler Aufbau eines Computers Untersuchung von Delphi-Compilaten

Funktionaler Aufbau eines Computers Untersuchung von Delphi-Compilaten Funktionaler Aufbau eines Computers Im Folgenden soll der Weg untersucht werden, wie ein Programm, das von einem Compiler/Interpreter in Maschinencode übertragen wurde, schließlich vom Prozessor abgearbeitet

Mehr

Instruktionssatz-Architektur

Instruktionssatz-Architektur Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2005/2006 Übersicht 1 Einleitung 2 Bestandteile der ISA 3 CISC / RISC Übersicht 1 Einleitung 2 Bestandteile

Mehr

i386 Interrupt-Deskriptortabelle (IDT)

i386 Interrupt-Deskriptortabelle (IDT) Agenda: IRQ-Behandlung in OO-Stubs Interrupts und Traps bei x86 Die Interrupt-Deskriptor-Tabelle (IDT) Aufbau der IDT Traps und Hardware IRQs Der Programmierbare Interruptcontroller PIC 8295A Aufbau Verwendung

Mehr

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04.

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04. Kontrollstrukturen Informatik II SS 2004 Teil 4: Assembler Programmierung Sprünge (bedingte und unbedingte) If-then-else, Case Loop (n Durchläufe) While (Abbruchbedingung) Institut für Informatik Prof.

Mehr

1. Grundlagen der Informatik Organisation und Architektur von Rechnern

1. Grundlagen der Informatik Organisation und Architektur von Rechnern 1. Grundlagen der Informatik Organisation und Architektur von Rechnern Inhalt Grundlagen digitaler Systeme Boolesche Algebra / Aussagenlogik Organisation und Architektur von Rechnern Algorithmen, Darstellung

Mehr

Betriebssysteme KU - Einführungstutorium

Betriebssysteme KU - Einführungstutorium Betriebssysteme KU - Einführungstutorium SWEB-Tutoren irc://irc.at.euirc.net/bs Teamwork Arbeitsaufteilung? Zeiteinteilung? Codeeinteilung? Kommunikation! Kommunikation Kommunikation mit dem Team Gruppentreffen

Mehr

7 Ein einfacher CISC-Prozessor

7 Ein einfacher CISC-Prozessor 7 Ein einfacher CISC-Prozessor In diesem Kapitel wird ein einfacher Prozessor vorgestellt. Die Architektur, die wir implementieren, wurde von R. Bryant und D. O Hallaron entworfen und verwendet eine Untermenge

Mehr

Übung zu Betriebssystembau (Ü BS)

Übung zu Betriebssystembau (Ü BS) Übung zu Betriebssystembau (Ü BS) Interruptbehandlung in OOStuBS Wanja Hofer Lehrstuhl für Informatik IV WS 07/08 1 Agenda: IRQ-Behandlung in OOStuBS Interrupts und Traps beim x86 Die Interrupt-Deskriptor-Tabelle

Mehr

Software Security. Andreas Kostecka Alexander Miller Patrick Rappensberger

Software Security. Andreas Kostecka Alexander Miller Patrick Rappensberger Software Security Andreas Kostecka Alexander Miller Patrick Rappensberger Inhalt Buffer Overrruns Integer Overflows Heap-Overflow Attack Format String Attack SQL Injection Buffer Overrruns Was ist 'Buffer

Mehr

Just-In-Time-Compiler (2)

Just-In-Time-Compiler (2) Just-In-Time-Compiler (2) Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2011/2012 Just-In-Time-Compiler (2) 1/13 2011-09-12 Just-In-Time-Compiler

Mehr

Grundlagen der Informatik III Wintersemester 2010/2011

Grundlagen der Informatik III Wintersemester 2010/2011 Grundlagen der Informatik III Wintersemester 2010/2011 Wolfgang Heenes, Patrik Schmittat 10. Aufgabenblatt mit Lösungsvorschlag 24.01.2011 Hinweis: Der Schnelltest und die Aufgaben sollen in den Übungsgruppen

Mehr

Moritz Höppner. m-hoeppner@gmx.net

Moritz Höppner. m-hoeppner@gmx.net Linux-Assembler Tutorial Moritz Höppner m-hoeppner@gmx.net 1 Inhalt 1. Grundlagen... 3 1.1 Einführung... 3 1.2 Zahlensysteme... 3 1.3 Register... 5 1.4 Die benötigten Tools... 6 2. Das erste Programm...

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

Rechnern netze und Organisatio on

Rechnern netze und Organisatio on Rechnernetze und Organisation Konstruktionsübung SS2009 Vorbesprechung 1 Übersicht Einleitung Motivation Administratives i ti Generelles zur KU Assignment A1 Vorbereitung Johannes Wolkerstorfer Vorstellung

Mehr

3 Assembler- und Maschinenbefehle, Programmablauf-Steuerung

3 Assembler- und Maschinenbefehle, Programmablauf-Steuerung 3 Assembler- und Maschinenbefehle, Programmablauf-Steuerung In der Vorlesung wurde folgendes Beispiel-Programm in der höheren Programmiersprache C vorgestellt: int x=0; int i= 0; for (i=1;i

Mehr

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen Mikroprozessoren Grundlagen Aufbau, Blockschaltbild Grundlegende Datentypen AVR-Controller Anatomie Befehlssatz Assembler Speicherzugriff Adressierungsarten Kontrollstrukturen Stack Input / Output (I/O)

Mehr

Legen Sie den Ausweis (mit Lichtbild!) griffbereit auf den Platz! Dieses Aufgabenheft umfasst 24 Seiten. Überprüfen Sie die Vollständigkeit!

Legen Sie den Ausweis (mit Lichtbild!) griffbereit auf den Platz! Dieses Aufgabenheft umfasst 24 Seiten. Überprüfen Sie die Vollständigkeit! Department Informatik Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg Martensstraße 3, 91058 Erlangen 25.09.2013 Klausur zu Grundlagen der Rechnerarchitektur

Mehr

Fallbeispiel Unix. Betriebssysteme. Hermann Härtig TU Dresden

Fallbeispiel Unix. Betriebssysteme. Hermann Härtig TU Dresden Fallbeispiel Unix Betriebssysteme Hermann Härtig TU Dresden Wegweiser Geschichte und Struktur von Unix Vom Programm zum Prozess Unix-Grundkonzepte Dateien Prozesse Prozess-Kommunikation Signale Pipes Sockets

Mehr

Übungsblatt 10 (Block C 2) (16 Punkte)

Übungsblatt 10 (Block C 2) (16 Punkte) georg.von-der-brueggen [ ] tu-dortmund.de ulrich.gabor [ ] tu-dortmund.de pascal.libuschewski [ ] tu-dortmund.de Übung zur Vorlesung Rechnerstrukturen Wintersemester 2016 Übungsblatt 10 (Block C 2) (16

Mehr

Assembler Integer-Arithmetik

Assembler Integer-Arithmetik Assembler Integer-Arithmetik Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler Integer-Arithmetik 1/23 2008-04-01 Arithmetik

Mehr

Mikrocomputertechnik

Mikrocomputertechnik Assembler Aufgaben: Übersetzt mnemotechnische Abkürzungen (z.b. move, add...) in die Maschinenbefehle des Prozessors Ermöglicht die Vergabe von Namen für Speicheradressen (Label) Berechnet relative Adressedistanz

Mehr

Gefahrenreduzierung nach stackbasierten BufferOverflows

Gefahrenreduzierung nach stackbasierten BufferOverflows Gefahrenreduzierung nach stackbasierten s Lars Knösel 22. Dezember 2005 Wichtiger Hinweis Dieses Dokument und die Live-nstration liefern Informationen, mit deren Hilfe es möglich wird, stackbasierte Pufferüberläufe

Mehr

Sicheres C Programmieren in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011

Sicheres C Programmieren in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011 Sicheres C in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011 Dipl. Ing. (FH) Ebrecht Roland, Infineon Technologies AG M.Eng (Electronic Systems) Güller Markus, Infineon Technologies

Mehr

Was kann ein Assembler?

Was kann ein Assembler? Assemblerprogrammierung Assembler und Maschinensprache Befehle und Pseudo-Befehle C-Konstrukte in Assembler übersetzt Aufrufkonventionen (ABI) Der netwide assembler nasm Binärformate Was ist ein Assembler?

Mehr

8. Intel IA-32 Prozessoren: Befehlsübersicht

8. Intel IA-32 Prozessoren: Befehlsübersicht 8. Intel IA-32 Prozessoren: Befehlsübersicht Ganzzahlarithmetik Kontrollstrukturen Bitmanipulation Schieben und Rotieren 20.10.2007 Meisel 1 8.1 Ganzzahl-Arithmetik 8.1.1 Übersicht add adc sub sbb imul

Mehr

Einführung in die Programmierung mit C++

Einführung in die Programmierung mit C++ Seite 1 Einführung in die Programmierung mit C Teil IV - Weiterführende Themen 16. SIMD Programmierung Was bedeutet SIMD Seite SIMD Single-Instruction, Multiple-Data, also eine Instruktion, mehrere Daten

Mehr

Embedded-Linux-Seminare. Linux als Betriebssystem

Embedded-Linux-Seminare. Linux als Betriebssystem Embedded-Linux-Seminare Linux als Betriebssystem http://www.embedded-linux-seminare.de Diplom-Physiker Peter Börner Spandauer Weg 4 37085 Göttingen Tel.: 0551-7703465 Mail: info@embedded-linux-seminare.de

Mehr

TI-Übung Assembler. Andreas I. Schmied AspectIX-Team Abteilung Verteilte Systeme Universität Ulm WS2005

TI-Übung Assembler. Andreas I. Schmied AspectIX-Team Abteilung Verteilte Systeme Universität Ulm WS2005 TI-Übung 2 6809-Assembler Andreas I. Schmied (andreas.schmied@uni-ulm.de) AspectIX-Team Abteilung Verteilte Systeme Universität Ulm WS2005 6809 Wiederholung (1) 8/16-Bit Prozessor Register: A/B/D, S, U,X,

Mehr

1.7 Assembler Programmierung

1.7 Assembler Programmierung 1.7 Assembler Programmierung Die nach außen sichtbare Programmierschnittstelle eines Prozessors ist der Befehlscode. Dies ist eine binäre Dateninformation, die vom Prozessor Byte für Byte abgearbeitet

Mehr

Rechnerorganisation. Überblick über den Teil 13

Rechnerorganisation. Überblick über den Teil 13 Rechnerorganisation Teil 3 9. Juni 2 KC Posch Überblick über den Teil 3 Arbiter: Wie können sich 2 aktive Partner vertragen? Direkter Speicherzugriff: Ein Ko Prozessor zum Daten Schaufeln Die Verbesserung

Mehr

Betriebssysteme BS-V SS 2015. Hans-Georg Eßer. Foliensatz V: Ulix: Interrupts und Faults Ulix: System Calls. Dipl.-Math., Dipl.-Inform.

Betriebssysteme BS-V SS 2015. Hans-Georg Eßer. Foliensatz V: Ulix: Interrupts und Faults Ulix: System Calls. Dipl.-Math., Dipl.-Inform. BS-V Betriebssysteme SS 2015 Dipl.-Math., Dipl.-Inform. Foliensatz V: Ulix: Interrupts und Faults Ulix: System Calls v1.0, 2015/05/28 (klassische Dokumentation) Folie V-1 Übersicht: BS Praxis und BS Theorie

Mehr

Vorlesung Betriebssysteme I

Vorlesung Betriebssysteme I 1 / 19 Vorlesung Betriebssysteme I Thema 4: Grundlegende Begriffe, Teil 2 Robert Baumgartl 22. November 2016 2 / 19 Begriffe: Schnittstelle beschreibt den statischen Aspekt einer Kommunikationsbeziehung

Mehr