DR. MIGUEL ÁNGEL OROS HERNÁNDEZ 2. Software de bajo nivel.

Slides:



Advertisements
Similar presentations
Euripides Montagne University of Central Florida (Summer 2011)
Advertisements

Practical Malware Analysis
Slide 3-1 Copyright © 2004 Pearson Education, Inc. Operating Systems: A Modern Perspective, Chapter 3 3 Operating System Organization.
C Programming and Assembly Language Janakiraman V – NITK Surathkal 2 nd August 2014.
PC hardware and x86 3/3/08 Frans Kaashoek MIT
1 ICS 51 Introductory Computer Organization Fall 2006 updated: Oct. 2, 2006.
1 Lecture 5: Procedures Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.
Chapter 12: High-Level Language Interface. Chapter Overview Introduction Inline Assembly Code C calls assembly procedures Assembly calls C procedures.
Assembly Language for Intel-Based Computers Chapter 2: IA-32 Processor Architecture Kip Irvine.
JVM-1 Introduction to Java Virtual Machine. JVM-2 Outline Java Language, Java Virtual Machine and Java Platform Organization of Java Virtual Machine Garbage.
Data Structure and Algorithm 1 Yingcai Xiao. You Me The Course (
Informationsteknologi Friday, November 16, 2007Computer Architecture I - Class 111 Today’s class Instruction set architecture.
The ISA Level The Instruction Set Architecture (ISA) is positioned between the microarchtecture level and the operating system level.  Historically, this.
1 Assembly Language: Overview. 2 If you’re a computer, What’s the fastest way to multiply by 5? What’s the fastest way to divide by 5?
1 Software Testing and Quality Assurance Lecture 31 – SWE 205 Course Objective: Basics of Programming Languages & Software Construction Techniques.
Joseph L. Lindo Assembly Programming Sir Joseph Lindo University of the Cordilleras.
Intro to Java The Java Virtual Machine. What is the JVM  a software emulation of a hypothetical computing machine that runs Java bytecodes (Java compiler.
David Evans CS201j: Engineering Software University of Virginia Computer Science Lecture 18: 0xCAFEBABE (Java Byte Codes)
Part 1.  Intel x86/Pentium family  32-bit CISC processor  SUN SPARC and UltraSPARC  32- and 64-bit RISC processors  Java  C  C++  Java  Why Java?
Assembly Language for Intel-Based Computers, 4 th Edition Chapter 2: IA-32 Processor Architecture (c) Pearson Education, All rights reserved. You.
6.828: PC hardware and x86 Frans Kaashoek
IT253: Computer Organization Lecture 4: Instruction Set Architecture Tonga Institute of Higher Education.
Lecture 10 : Introduction to Java Virtual Machine
Intel Pentium II Processor Brent Perry Pat Reagan Brian Davis Umesh Vemuri.
Code Generation Gülfem Savrun Yeniçeri CS 142 (b) 02/26/2013.
CS 147 June 13, 2001 Levels of Programming Languages Svetlana Velyutina.
The ISA Level The Instruction Set Architecture (ISA) is positioned between the microarchtecture level and the operating system level.  Historically, this.
Silberschatz, Galvin and Gagne  2002 Modified for CSCI 399, Royden, Operating System Concepts Operating Systems Lecture 7 OS System Structure.
Conrad Benham Java Opcode and Runtime Data Analysis By: Conrad Benham Supervisor: Professor Arthur Sale.
Introduction to Information Security מרצים : Dr. Eran Tromer: Prof. Avishai Wool: מתרגלים : Itamar Gilad
The x86 Architecture Lecture 15 Fri, Mar 4, 2005.
Part 1.  Intel x86/Pentium family  32-bit CISC processor  SUN SPARC and UltraSPARC  32- and 64-bit RISC processors  Java  C  C++  Java  Why Java?
Assembly תרגול 5 תכנות באסמבלי. Assembly vs. Higher level languages There are NO variables’ type definitions.  All kinds of data are stored in the same.
Today’s topics Procedures Procedures Passing values to/from procedures Passing values to/from procedures Saving registers Saving registers Documenting.
1 ICS 51 Introductory Computer Organization Fall 2009.
Assembly Language for x86 Processors 7th Edition Chapter 13: High-Level Language Interface (c) Pearson Education, All rights reserved. You may modify.
CNIT 127: Exploit Development Ch 1: Before you begin.
Chapter 2 Parts of a Computer System. 2.1 PC Hardware: Memory.
Sahar Mosleh California State University San MarcosPage 1 Assembly language and Digital Circuit By Sahar Mosleh California State University San Marcos.
Buffer Overflow Attack- proofing of Code Binaries Ramya Reguramalingam Gopal Gupta Gopal Gupta Department of Computer Science University of Texas at Dallas.
Compiler Construction Code Generation Activation Records
October 1, 2003Serguei A. Mokhov, 1 SOEN228, Winter 2003 Revision 1.2 Date: October 25, 2003.
University of Amsterdam Computer Systems – the instruction set architecture Arnoud Visser 1 Computer Systems The instruction set architecture.
Introduction to Intel IA-32 and IA-64 Instruction Set Architectures.
Overview of Back-end for CComp Zhaopeng Li Software Security Lab. June 8, 2009.
Review A program is… a set of instructions that tell a computer what to do. Programs can also be called… software. Hardware refers to… the physical components.
Week 6 Dr. Muhammad Ayaz Intro. to Assembly Language.
RealTimeSystems Lab Jong-Koo, Lim
Instruction Set Architecture
Instruction Set Architectures
Assembly language.
Credits and Disclaimers
ENERGY 211 / CME 211 Lecture 25 November 17, 2008.
Introduction to Compilers Tim Teitelbaum
High-Level Language Interface
COAL Chapter 1,2,3.
A Review of Processor Design Flow
Discussion Section – 11/3/2012
BIC 10503: COMPUTER ARCHITECTURE
Introduction to Intel IA-32 and IA-64 Instruction Set Architectures
Fundamentals of Computer Organisation & Architecture
Practical Session 4.
Multi-modules programming
Week 2: Buffer Overflow Part 1.
Computer Architecture CST 250
X86 Assembly Review.
CSC 497/583 Advanced Topics in Computer Security
Credits and Disclaimers
Computer Architecture and System Programming Laboratory
Computer Architecture and System Programming Laboratory
Presentation transcript:

DR. MIGUEL ÁNGEL OROS HERNÁNDEZ 2. Software de bajo nivel

1. Perspectivas de bajo y alto nivel 2. Ensamblador 3. Compilación 4. Ambientes de ejecución

Perspectivas de bajo y alto nivel

Perspectivas de bajo y alto nivel high-level perspectives Program structure Encapsulation Modules  Static libraries  Dynamic (Link) libraries Common code constructs  Procedures  Objects Data Management  Variables  User-defined data structures  Lists Control Flow  Conditional blocks  Switch blocks (n-way conditionals)  Loops High-Level Languages CC  C++  Java  C# (CLR-MSIL)

Perspectivas de bajo y alto nivel low-level perspectives Low-level data management  Registers  The stack  Temporarily saved register values  Local variables  Function parameters and return addresess  Heaps  Executable Data Sections Control flow

Ensamblador

Ensamblador registers RegisterDescription EAX, EBX, EDX Generic registers They can be used for any integer, boolean, logical, or memory operation ECX Generic register used as a counter by repetitive instructions ESI/EDI Generic registers Used as source/destination pointers EBP Generic register Used as the stack base ponter ESP CPU stack pointer Stores the current position in the stack

Ensamblador Flags  Special register  Contains all kinds of status and system flags Instruction format Opcode DestOp SourceOp Basic instructions  Moving data ( MOV )  Arithmetic ( ADD, SUB, MUL, DIV, IMUL, IDIV )  Conditional branches ( JCC, JNZ )  Function calls ( CALL ) Examples cmp ebx, 0xf020 jnz mov edi, [ecx+0x5b0] mov ebx, [ecx+0x5b4] imul edi, ebx

Compilación

Herramientas compiladores Source code Object File Executable compilationlinking Human readable Text file Binary code with readable symbols Binary code with no symbols Code readability

Ambientes de ejecución

The componet that actually runs programs  CPU  Software environment, p.e. virtual machine Software execution environment Bytecode Virtual machine  Java Virtual Machine (JVM)  Common Language Runtime (CLR) Benefits  Platform isolation  Enhanced functionality Interpreters Just-in-Time compilers (JiTs) Reversing strategies (bytecode programs)

Ambientes de ejecución Hardware execution environments in modern processors AMD (Advanced Micro Devices) Intel NetBurst  ops Pipelines Branch prediction

Bibliografía Reversing: Secrets of Reverse Engineering  Eldad Eilam  Wiley Publishing, Inc.  2005

Fin