Maschinencode Dateiformat und Stackframes
|
|
|
- Alwin Pohl
- vor 9 Jahren
- Abrufe
Transkript
1 Maschinencode Dateiformat und Stackframes Proseminar C-Programmierung - Grundlagen und Konzepte Julian M. Kunkel [email protected] Wissenschaftliches Rechnen Fachbereich Informatik Universität Hamburg / 28
2 Motivation Hintergründe verstehen für Fehleranalyse Hacking Code-Optimierung Code von verschiedenen Sprachen gemeinesam nutzen 2 / 28
3 1 Dateiformat 2 Stack 3 Backtrace 4 Hacking 3 / 28
4 1 Dateiformat 2 Stack 3 Backtrace 4 Hacking 4 / 28
5 Fragen Woher weiß der Linker wie Objektdateien zusammen gehören? Wie werden Programme in den Speicher geladen? 5 / 28
6 Executable and Linking Format (ELF) Dateiarten Executable: Ausführbare Datei Relocatable: Objekt Datei Shared object: Bibliothek ELF Beschreibt Inhalte der Binärdateien Zwei Sichten: Programmausführung vs. Compilierung Programmkopf-Tabelle zeigt auf Segmente Sektionen enthalten informationen für Linker und Relocation DWARF bettet Debugging Informationen in ELF ein... 6 / 28
7 ELF Aufbau Figure: ELF file structure 1 1 Surueña, "Layout of an ELF file", / 28
8 Wichtigste Bestandteile der Objektdateien (RO)Data : Datensegment, enthält initalisierte globale und statische Variablen BSS : Block Started by Symbol, 0-initalisierte statische Variablen Text : Enthält ausführbaren Maschinencode Symboltabelle: Symbolnamen für den Linker relevant Dynsym : Enthält globale Symbole ist zur Laufzeit bekannt 8 / 28
9 Frage an das Publikum Warum gibt es Dynsm und eine normale Symboltabelle? 9 / 28
10 Figure: Executing an ELF file 2 2 Jhawthorn, "Executable image and elf binary can being mapped onto each other", / 28
11 Werkzeuge nm Symbole von Objektdateien anzeigen objdump Objekt-Dateien analysieren -d Code disassemblieren -s Inhalt der Sektionen -t Symboltabelle -T Dynamische Symboltabelle Symbole zur dynamischen Symboltabelle hinzufügen mit: gcc -rdynamic Symboltabelle und andere (überflüssigen) Bereiche entfernen: strip Assembler erzeugen: gcc -S <DATEI.c> 11 / 28
12 Dynamische Symbole Bibliotheken Shared-libraries stellen Dsym zur Verfügung Programm-Loader lädt Shared-Libaries Manuelle Verwendung Zur Laufzeit Code nachladen Module programmieren dlopen(), dlsym(), dlclose() 12 / 28
13 Demo: stackframe-simple.c 13 / 28
14 1 Dateiformat 2 Stack 3 Backtrace 4 Hacking 14 / 28
15 Stapelspeicher LIFO Speicherbereich Schnellere/Leichtere Verwaltung als Heap Jeder Thread bekommt einen Stack zugewiesen Stack wächst Richtung niedrigerer Adresse Funktionsaufrufe als Stack-Frame auf Stack speichern 15 / 28
16 Stack-Frame Adressierung von Variablen Addressierung relativ zu dem Start des Frames Base-Pointer zeigt auf Start des Frames Stack-Pointer zeigt auf Ende des Stacks Bei Funktionsaufruf Alten IP und BP merken Lokale Variablen auf Stack reservieren Registerzustand speichern BP, IP und SP umsetzen Zeitaufwand 16 / 28
17 Stack-Frame Figure: Stack-Frame 3 3 Steve Friedl, "", / 28
18 Aufrufkonventionen Varianten cdecl: Nutzung des Stacks für Parameter und Rückgabewerte Variablen Parameteranzahl Aufrufer bereinigt Stack stdcall: Feste Anzahl an Parametern für eine Funktion Funktion entfernt Parameter von Stack selbst Optimierungen Register: Parameter werden in Registern abgelegt Frame Pointer Omission: Verwende SP zur Adressierung 18 / 28
19 Verschiedenes Stackspeicher nutzen alloca reserviert Speicher auf Stack Vorsicht: Nach Stackabbau ungültig Vorsicht: Größe des Stacks ist limitiert Stackgröße Vom System oder zur Kompilezeit eingestellt Unter Linux mittels ulimit -a anzeigen oder verändern 19 / 28
20 1 Dateiformat 2 Stack 3 Backtrace 4 Hacking 20 / 28
21 Backtrace Ein Backtrace ermittelt die IP s der aufrufenden Funktionen Name der Funktion in welcher der IP gerade steht? GNU C Library (libc) stellt Backtraces zur Verfügung Funktionsnamen in dynamischer Symboltabelle benötigt 21 / 28
22 Demo: backtrace.c mit objdump und -rdynamic 22 / 28
23 1 Dateiformat 2 Stack 3 Backtrace 4 Hacking 23 / 28
24 Hacking der Stack-Frames Gespeicherten Rücksprungadresse auf Stack umsetzen Bei Verlassen der Funktion wird anderer Code ausgeführt Basis von Buffer-Overflow Angriffen Lokale Variable überschreibt gespeicherten IP 24 / 28
25 Stack-Frame hacken Figure: Stack-Frame 4 4 Steve Friedl, "", / 28
26 Demo: hacked.c 26 / 28
27 Zusammenfassung Compilezeit vs. Laufzeit ELF: Code, Datenbereiche, Symbolltabelle(n) ELF Dateien mit objdump analysieren Stack-Frames speichern Funktionsaufrufe Backtraces verstehen Symboltabelle und Stack-Frames! 27 / 28
28 Literatur AMD. Amd64 instruction-level debugging with sun studio dbx. A. Bahrami. Inside elf symbol tables. S. Friedl. Intel x86 function-call convetions assembly view. G. L. Manual. Backtraces. A. Müller. Der stack frame. OSDev. Elf. Phillip. Using assembly language in linux. Wikipedia. 28 / 28
Einführung in die Programmiersprache C
Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:
Einführung in die Programmiersprache C
Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:
Systemprogrammierung
Systemprogrammierung 3Vom C-Programm zum laufenden Prozess 6. November 2008 Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2008 SS 2006 SOS 1 (03-Pro.fm 2008-11-06 08.52) 3 Vom C-Programm
2Binden 3. und Bibliotheken
3 Vom C-Programm zum laufenden Prozess 3.1 Übersetzen - Objektmodule 1Übersetzen 3. - Objektmodule (2) Teil III 3Vom C-Programm zum laufenden Prozess 2. Schritt: Compilieren übersetzt C-Code in Assembler
Technische Informatik 1 - Übung 3 3. & 4. November Philipp Miedl
Technische Informatik 1 - Übung 3 3. & 4. November 2016 Philipp Miedl Philipp Miedl 3. 11. 2016 1 Ziele der Übungen Aufgabe 1 Philipp Miedl 3. 11. 2016 2 Ziele der Übungen Aufgabe 1 Aufbau von Objekt-Dateien
Dynamisches Speichermanagement
Dynamisches Speichermanagement Proseminar C-Programmierung - Grundlagen und Konzepte Timo Minartz [email protected] Wissenschaftliches Rechnen Fachbereich Informatik Universität Hamburg
Vorlesung Programmieren
Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von
Vorlesung Programmieren
Vorlesung Programmieren 17 Vom Programm zur Maschine Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),
Ü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
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
Konzepte von Betriebssystem-Komponenten. Programmstart & dynamische Bibliotheken SS 05. Wladislaw Eckhardt.
Proseminar KVBK Programmstart dynamische Bibliotheken Konzepte von Betriebssystem-Komponenten Programmstart & dynamische Bibliotheken SS 05 Wladislaw Eckhardt [email protected] 1 1 Einleitung 1.1 Problematik
Hacking in C (Windows) Reinhard Oertel
Hacking in C (Windows) Reinhard Oertel Agenda Einleitung Techniken Hintergrundwissen Buffer-Overflow Zusammenfassung 03.06.11 Hacking in C 2/36 Meldungen 2011 Quelle: Spiegel.de 03.06.11 Hacking in C 3/36
Konzepte von Betriebssystemkomponenten
Konzepte von Betriebssystemkomponenten Systemstart und Programmausführung Seminarvortrag 15.12.2003, Michael Moese Übersicht 2. Systemstart 3. Programmausführung TEIL 1: Systemstart 1.1 Das BIOS 1.2 Der
Sicheres C Programmieren in Embedded Systemen ARM I (ARM7TMDI [1] ) Wintersemester 2010-2011
Sicheres C in Embedded Systemen ARM I (ARM7TMDI [1] ) Wintersemester 2010-2011 Dipl. Ing. (FH) Ebrecht Roland, Infineon Technologies AG M.Eng (Electronic Systems) Güller Markus, Infineon Technologies AG
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
Betriebssysteme Teil 4: Übersetzung von C-Programmen
Betriebssysteme Teil 4: Übersetzung von C-Programmen 18.10.13 1 Übersicht Übersetzungsprozess gcc(i) als Steuerprogramm Assembler Binder Hauptprogramme in C In dieser Einheit werden nur die Grundprinzipien
Linker: Adreßräume verknüpfen. Informationen über einen Prozeß. Prozeß-Erzeugung: Verwandtschaft
Prozeß: drei häufigste Zustände Prozeß: anatomische Betrachtung jeder Prozeß verfügt über seinen eigenen Adreßraum Sourcecode enthält Anweisungen und Variablen Compiler überträgt in Assembler bzw. Binärcode
6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
Dynamisches Binden in Multics
Dynamisches Binden in Multics AKSS Seminarvortrag Daniel Götz Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme 14.12.15 Motivation Welche
Konzepte von Betriebssystem-Komponenten. Programmstart & dynamische Bibliotheken SS 05. Wladislaw Eckhardt.
Proseminar KVBK Programmstart dynamische Bibliotheken Konzepte von Betriebssystem-Komponenten Programmstart & dynamische Bibliotheken SS 05 Wladislaw Eckhardt [email protected] 1 1 Einleitung 11. Problematik
Einführung in die Systemprogrammierung
Einführung in die Systemprogrammierung Der Binder Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 28. Mai 2015 Herausforderungen durch große Programme Große Programme: die meisten
C - Grundlagen und Konzepte Modulare Programmierung und Bibliotheken
C - Grundlagen und Konzepte Modulare Programmierung und Bibliotheken Stefan Grusche Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften
Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
Matthias Hanreich - TheGreyKnight
Matthias Hanreich - TheGreyKnight Grundlagen Code Injection Beispiel: Buffer Overflow Gegenmaßnahmen Code Injection Return Oriented Programming (ROP) Gegenmaßnahmen ROP Demonstration CVE-2012-4969 Hands
Vorlesung Programmieren
Vorlesung Programmieren 16 Vom Programm zur Maschine Dr.-Ing. Erik Burger Version 1.0 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION
Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software
Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL3 Folie 1 Grundlagen Software steuert Computersysteme
Betriebssysteme I: Speicherverwaltung (Teil A: Adress-Bindung)
Betriebssysteme I: Speicherverwaltung (Teil A: Adress-Bindung) Mühlbacher BS: Speicherverwaltung TeilA Adressbindung,Loader, Linker 1 Ausgangssituation Programm ist auf einem Massenspeicher als binary
Speicherverwaltung (Swapping und Paging)
Speicherverwaltung (Swapping und Paging) Rückblick: Segmentierung Feste Einteilung des Speichers in einzelne Segmente 750k 0 Rückblick: Segmentierung Feste Einteilung des Speichers in einzelne Segmente
TA Hacke Dein bewaffnen Sie!
What can possibly go wrong? _john mcacicl: [email protected] (nur jeden 2. buchstaben lesen ) Juli 2012 Einleitung gdb Kerndetails Rinde M{3,4} Programmerzeugung in C (GNU Toolchain) Quellcode
Simulink: Softwareentwurf für eingebettete Systeme ROS-Arduino-Interface. von Christian Schildwächter
Simulink: Softwareentwurf für eingebettete Systeme ROS-Arduino-Interface von Christian Schildwächter Simulink Simulink S-Functions Softwareprojekt ROS-Arduino-Interface Simulink 3 LIVE DEMO 4 External
PC/XT/AT ASSEMBLER-BUCH
PC/XT/AT ASSEMBLER-BUCH Alle Befehle + Makro-Assembler KLAUS-DIETER THIES t
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.
Bibliotheks-basierte Virtualisierung
Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2015/2016 V. Sieh Bibliotheks-basierte Virtualisierung (WS15/16)
M I K R O P R O Z E SS O R P R A K T I K U M SS2018. Termin1. C-Programmierung für eingebettete Systeme
Mikroprozessorpraktikum Termin1 SS2018 Technische Fachgruppe C-Programmierung für eingebettete M I K R O P R O Z E SS O R P R A K T I K U M SS2018 Termin1 C-Programmierung für eingebettete Name, Vorname
Grundlagen der Informatik 11. Zeiger
11. Zeiger Motivation Zeiger und Adressen Zeiger und Funktionen Zeiger und Arrays Dynamische Objekte Grundlagen der Informatik (Alex Rempel) 1 Motivation Dynamische Speicherverwaltung Oft müssen große
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
Technische Informatik 1 - HS 2015
Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik 1 - HS 2015 Übung 3 Datum: 29. 30. 10. 2015 Einleitung Das Ziel dieser Übung ist, den Compilations-Vorgang
DHBW Stuttgart Mikrocomputertechnik Labor KEIL Entwicklungsumgebung. Projektstruktur
Projektstruktur 25.10.12 K.Kraft D\MCT_Labor_2013\Dokumente\Projektdetails.odt 1 Typischer Aufbau eines 8051 Programms Start Adresse = 0003H External Interrupt 0 ISR Interrupt Service Routinen Start Adresse
Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Debugging
Grundkurs C++ Debugging Berühmte Software-Bugs 1947: Fehlfunktion des Mark II Relay Calculator aufgrund einer Motte. Grundkurs C++ 6 Berühmte Software-Fehler 1996: Ariane 5 muss 40 Sekunden nach dem Start
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
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
ELF Executable and Linkable Format
ELF Executable and Linkable Format Hagen Paul Pfeifer www.jauu.net 18. April 2005 Typeset by FoilTEX Prologue Binärformat ELF Executable and Linkable Format Entwickelt und veröffentlicht durch UNIX System
Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher
Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher Arvid Terzibaschian 1 Zusammengesetzte Datentypen 2 Wozu zusammengesetzte Datentypen? Anforderung: Sie sollen ein Kundenverzeichnis
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
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
Java Virtual Machine (JVM) Bytecode
Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,
Einführung in die C-Programmierung
Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).
Embedded-Linux-Seminare. Toolchains
Embedded-Linux-Seminare Toolchains http://www.embedded-linux-seminare.de Diplom-Physiker Peter Börner Spandauer Weg 4 37085 Göttingen Tel.: 0551-7703465 Mail: [email protected] Kopier-Rechte
Thomas Binzinger. Jetzt lerne ich. Delphi. Markt+Technik Verlag
Thomas Binzinger Jetzt lerne ich Delphi Markt+Technik Verlag Inhaltsverzeichnis Vorwort 1 1.1 1.2 1.3 1.4 2 2.1 2.2 2.3 3 3.1 3.2 3.3 3.4 3.5 3.6 4 4.1 4.2 4.3 4.4 4.5 4.6 5 5.1 5.2 5.3 Was ist Delphi?
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
Beleg: API für Plugin und Treiberbasierte Softwareentwicklung
Fakultät Informatik Institut für Software- und Multimediatechnik, Professur Computergraphik Beleg: API für Plugin und Treiberbasierte Dresden, 23. Mai 2007 Übersicht Grundlagen zum Plugin-Konzept Dynamische
Zwei Möglichkeiten die TLB zu aktualisieren
Zwei Möglichkeiten die TLB zu aktualisieren Die MMU kümmert sich um alles (Hardware-Lösung) sucht die p-entry wenn diese nicht da ist, behandelt direkt das TLB-miss zum Schluss wird die neue p-entry (virt
Propädeutikum. Dipl.-Inf. Frank Güttler
Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) [email protected] Universität Leipzig Institut für Informatik Technische Informatik
V by WBR1/BFH-TI 2011 by MOU2/BFH-TI
Java-Applets Unterlagen zum Modul OOP mit Java V 3.0 2007 by WBR1/BFH-TI 2011 by MOU2/BFH-TI Java-Applets V3.0 2011 by WBR1&MOU2/BFH- TI Lernziele Die Kursteilnehmer sind in der Lage: Möglichkeiten und
Betriebssysteme KU - Einführungstutorium
Betriebssysteme KU - Einführungstutorium SWEB-Tutoren 5. Oktober 2008 1 Grundlagen 2 SWEB 3 Kernel Basics Memory Management Details 4 Userspace 5 Hacking 6 Beispiele 7 Assignment 0 Aufgaben eines Betriebssystems
DieÜbersetzung funktionaler Programmiersprachen
DieÜbersetzung funktionaler Programmiersprachen 107 11 Die Sprache PuF Wir betrachten hier nur die Mini-Sprache PuF( Pure Functions ). Insbesondere verzichten wir(vorerst) auf: Seiteneffekte; Datenstrukturen;
Inhaltsverzeichnis. 9.1 Einführung 9.2 Die Objekt-Datei. 9.3 Der Linker. 9.4 Der Lader. Inhalt von Objekt-Dateien Beispiele:.COM, a.
Inhaltsverzeichnis 9.1 Einführung Inhalt von Objekt-Dateien Beispiele:.COM, a.out, ELF 9.3 Der Linker Aufgabe und Arbeitsweise Speicherlayout Symbol-Management Relocation 9.4 Der Lader 1 9.1 Einführung
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
Übersicht. Speichertypen. Speicherverwaltung und -nutzung. Programmieren in C
Übersicht Speichertypen Speicherverwaltung und -nutzung Speichertypen Beim Laden eines Programms in den Speicher (Programmausführung) kommen 3 verschiedene Speicherbereiche zum Einsatz: Text Segment (Code
Malware-Analyse und Reverse Engineering. 13: Rückblick über das Semester Prof. Dr. Michael Engel
Malware-Analyse und Reverse Engineering 13: Rückblick über das Semester 29.6.2017 Prof. Dr. Michael Engel Überblick MARE 2017: Einführungund Motivation, Malware-Historie Übersetzen und Linken von Programmen,
Ü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
C- Kurs 08 Zeiger. Dipl.- Inf. Jörn Hoffmann leipzig.de. Universität Leipzig Ins?tut für Informa?k Technische Informa?
C- Kurs 08 Dipl.- Inf. Jörn Hoffmann jhoffmann@informa?k.uni- leipzig.de Universität Leipzig Ins?tut für Informa?k Technische Informa?k Überblick Datentyp zur Verwaltung von Adressen (auf Speicherplätze)
Welche Register werden zur Parameterübergabe verwendet? In welcher Reihenfolge werden die Parameter auf dem Stack bzw. in den Registern abgelegt?
6.5 MMIX Befehle 291 Aufrufkonventionen Eine Aufrufkonvention (engl. calling convention) legt fest, wie einer Funktion Parameter übergeben werden und wie der Rückgabewert zurückgegeben wird. Damit spezifiziert
Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou ([email protected]) 22./23. Oktober 2015
Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou ([email protected]) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse
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.
Speicherverwaltung in C
Speicherverwaltung in C Tobias Gutzmann, Le Xuan Khanh, Robert Hartmann 19.04.2005 Typeset by FoilTEX Inhalt Übersicht der wichtigsten Befehle malloc, free, realloc alloca, obstack, brk Speicherverwaltung
Systemstart und Programmausführung
Michael Moese, 15.12.2003 Konzepte von Betriebssystemkomponenten Systemstart und Programmausführung Wir haben immer über ein Betriebssystem (Linux) gesprochen, aber wie wird es gestartet wenn man den Rechner
Threads. Netzwerk - Programmierung. Alexander Sczyrba Jan Krüger
Netzwerk - Programmierung Threads Alexander Sczyrba [email protected] Jan Krüger [email protected] Übersicht Probleme mit fork Threads Perl threads API Shared Data Mutexes
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
Totalview. Henrichs NEC Australia. Dieter an Mey
Totalview http://www.rz.rwth www.rz.rwth-aachen.de/sw/prog/totalview/ Dr. Jörg J Henrichs NEC Australia Dieter an Mey ([email protected]( [email protected]) Rechenzentrum und Kommunikationszentrum RWTH
Grundbegriffe der Informatik
Grundbegriffe der Informatik Kapitel 22: Mima-X Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik
Modulare Programmierung und Bibliotheken
Modulare Programmierung und Bibliotheken Proseminar-Vortrag am 24.06.2011 von Ludwig Eisenblätter Ludwig Eisenblätter 1 von 25 Modulare Programmierung und Bibliotheken Inhaltsübersicht Motivation / Einleitung
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
8. Referenzen und Zeiger
8. Referenzen und Zeiger Motivation Variable werden in C++ an speziellen Positionen im Speicher abgelegt. An jeder Position befindet sich 1 Byte. Sie sind durchnummeriert beginnend bei 0. Diese Positionen
Zeiger in C und C++ Zeiger in Java und C/C++
1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für Referenztypen (Klassen und Arrays) verwendet,
Proseminar - Zeiger in C
Proseminar - Zeiger in C Thomas Mechelke April 2011 1 / 24 Gliederung Grundlagen 1 Grundlagen Allgemeines Syntax 2 Anwendung Zeiger und Funktionen Zeiger und Arrays Weitere Andwendungen 3 Zusammenfassung
Dynamische Speicherverwaltung
Dynamische Speicherverwaltung INE2 M. Thaler, [email protected] Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Bisjetzt Beispiel Ranglistenprogramm für Sportveranstaltungen Besser - genaue Anzahl Teilnehmer
Funktionen in JavaScript
Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Mithilfe von Funktionen kann man denselben Code von mehreren Stellen des Programms aus aufrufen.
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
Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur
Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert
Grundlagen der Stackorganisation und -adressierung
GRUNDLAGEN DER STACKORGANISATION UND -ADRESSIERUNG 1 Grundlagen der Stackorganisation und -adressierung Das Stack- (Kellerspeicher-) Prinzip ist in der Informatik von grundsätzlicher Bedeutung, namentlich
Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen:
1 ADRESSIERUNG IN MMIX Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: no base address is close enough to the address A! relative address
Speicher und Adressraum
Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode
Methoden zur Interpretation LISPähnlicher. Programmiersprachen. Seminarvortrag / 53 FH AACHEN FACHBEREICH 9 TOBIAS STUMM MATR.-NR.
Methoden zur Interpretation LISPähnlicher Programmiersprachen Seminarvortrag 20.01.2017 FACHBEREICH 9 TOBIAS STUMM MATR.-NR. 4012917 1 Inhalt Motivation Lisp > Definition > Scheme Interpreter > Definition
