Automated Repair of Binary and Assembly Programs for Cooperating Embedded Devices
|
|
|
- Hester Bruce
- 10 years ago
- Views:
Transcription
1 Automated Repair of Binary and Assembly Programs for Cooperating Embedded Devices Eric Schulte 1 Jonathan DiLorenzo 2 Westley Weimer 2 Stephanie Forrest 1 1 Department of Computer Science University of New Mexico Albuquerque, NM Department of Computer Science University of Virginia Charlottesville, VA March 19, 2013 ASPLOS
2 i Outline Background Technical Approach Empirical Results Distributed Program Repair Discussion Conclusion b; i if(a! a; int argc, []) main(int int mai argc, char *argv[]) ASPLOS
3 Embedded Devices Computing Device Sales 500 tablet pc smartphone 400 Million Units Years [Maier, 2011] ASPLOS
4 Embedded Devices Resource Constraints Small disks Less memory Slow processors Slow, costly comm. ASPLOS
5 Genprog: Automatically Repairing Software Bugs Use of algorithmic and heuristic methods to search for, generate, and evaluate program repairs. Strengths Repaired 55/105 bugs for $8 each [Le Goues et al., 2012a] Repairs multiple classes of bugs and security defects [Weimer et al., 2009] Wins human-competitive awards [Forrest et al., 2009; Le Goues et al., 2012b] Limitations Requires source code Requires build tool chain Requires program instrumentation Expensive fitness function (compilation, test execution) ASPLOS
6 Software Repair Algorithm: Baseline Input Evolve Fitness Evaluation Output Accept X Discard Mutants ASPLOS
7 Software Repair Algorithm: Contributions if(a==0) puts(b); while(b!=0) How do we mutate? Where do we mutate? if(a>b) puts(a); a=a-b; else b=b-a; ASPLOS
8 Software Repair Algorithm: Contributions if(a==0) puts(b); while(b!=0) How do we mutate? Where do we mutate? if(a>b) puts(a); a=a-b; else b=b-a; ASPLOS
9 ASM and ELF Program Representations Source 1 if (a ==0){ 2 printf ("%g\n", b); } 3 else { 4 while (b!=0){ 5 if (a>b){ a=a- b; } 6 else { b=b-a; } } } 7 printf ("%g\n", a); AST printf("%g\n",b); a=a-b; if(a==0) if(a>b) while(b!=0) else b=b-a; printf("%g\n",a); ASPLOS
10 ASM and ELF Program Representations Source 1 if (a ==0){ 2 printf ("%g\n", b); } 3 else { 4 while (b!=0){ 5 if (a>b){ a=a- b; } 6 else { b=b-a; } } } 7 printf ("%g\n", a); ASM.file "gcd.c".globl main.type main:.cfi startproc pushq %rbp.cfi def cfa offset 16.cfi offset 6, -16 movq %rsp, %rbp.cfi def cfa register 6 subq $48, %rsp AST if(a==0) printf("%g\n",b); if(a>b) a=a-b; while(b!=0) printf("%g\n",a); else b=b-a; ASPLOS
11 ASM and ELF Program Representations Source 1 if (a ==0){ 2 printf ("%g\n", b); } 3 else { 4 while (b!=0){ 5 if (a>b){ a=a- b; } 6 else { b=b-a; } } } 7 printf ("%g\n", a); AST if(a==0) printf("%g\n",b); if(a>b) a=a-b; while(b!=0) printf("%g\n",a); else b=b-a; ASM.file "gcd.c".globl main.type main:.cfi startproc pushq %rbp.cfi def cfa offset 16.cfi offset 6, -16 movq %rsp, %rbp.cfi def cfa register 6 subq $48, %rsp ELF ELF\? ELF header program header table section 1....text section [55] [48 89 e5] [48 83 ec 20] [ d e8] [89 75 e4] [83 7d e4 01] [7e 60] section n section header table ASPLOS
12 ASM and ELF Program Mutations Delete Insert Swap movq 8(%rdx), %rdi xorl %eax, %eax movq %rdx, -80(%rbp) addl $1, %r14d call atoi movq -80(%rbp), %rdx movl %eax, (%r15) addq $4, %r15 movq 8(%rdx), %rdi xorl %eax, %eax addl $1, %r14d call atoi movq %rdx, -80(%rbp) movl %eax, (%r15) addq $4, %r15 movq 8(%rdx), %rdi xorl %eax, %eax movq -80(%rbp), %rdx addl $1, %r14d call atoi movq -80(%rbp), %rdx movl %eax, (%r15) addq $4, %r15 movq 8(%rdx), %rdi xorl %eax, %eax movq -80(%rbp), %rdx addl $1, %r14d call atoi movq %rdx, -80(%rbp) movq -80(%rbp), %rdx movl %eax, (%r15) addq $4, %r15 movq 8(%rdx), %rdi xorl %eax, %eax movq %rdx, -80(%rbp) addl $1, %r14d call atoi movq -80(%rbp), %rdx movl %eax, (%r15) addq $4, %r15 movq 8(%rdx), %rdi xorl %eax, %eax movq -80(%rbp), %rdx addl $1, %r14d call atoi movq %rdx, -80(%rbp) movl %eax, (%r15) addq $4, %r15 (... additional ELF bookkeeping... ) ASPLOS
13 Genprog: Automatically Repairing Software Bugs if(a==0) puts(b); while(b!=0) How do we mutate? Where do we mutate? if(a>b) puts(a); a=a-b; else b=b-a; ASPLOS
14 Genprog: Automatically Repairing Software Bugs if(a==0) puts(b); while(b!=0) How do we mutate? Where do we mutate? if(a>b) puts(a); a=a-b; else b=b-a; ASPLOS
15 Genprog: Automatically Repairing Software Bugs if(a==0) puts(b); while(b!=0) How do we mutate? Where do we mutate? if(a>b) puts(a); a=a-b; else b=b-a; Fault Localization ASPLOS
16 Light Weight Fault Localization 1. Sample program counter. 2. Translate memory addresses to program offsets. 3. Smooth sample with Gaussian convolution. CPU movq 8(%rdx), %rdi xorl %eax, %eax movl %eax, (%r15) addl $1, %r14d call atoi movq -80(%rbp), %rdx movq %rdx, -80(%rbp) addq $4, %r15 movq 8(%rdx), %rdi xorl %eax, %eax movl %eax, (%r15) Machine-code Instructions ASPLOS
17 Light Weight Fault Localization 1. Sample program counter. 2. Translate memory addresses to program offsets. 3. Smooth sample with Gaussian convolution. CPU movq 8(%rdx), %rdi xorl %eax, %eax movl %eax, (%r15) addl $1, %r14d call atoi movq -80(%rbp), %rdx movq %rdx, -80(%rbp) addq $4, %r15 movq 8(%rdx), %rdi xorl %eax, %eax movl %eax, (%r15) Machine-code Instructions ASPLOS
18 Light Weight Fault Localization 1. Sample program counter. 2. Translate memory addresses to program offsets. 3. Smooth sample with Gaussian convolution. CPU memory addr. to instruction movq 8(%rdx), %rdi xorl %eax, %eax movl %eax, (%r15) addl $1, %r14d call atoi movq -80(%rbp), %rdx movq %rdx, -80(%rbp) addq $4, %r15 movq 8(%rdx), %rdi xorl %eax, %eax movl %eax, (%r15) Machine-code Instructions ASPLOS
19 Light Weight Fault Localization 1. Sample program counter. 2. Translate memory addresses to program offsets. 3. Smooth sample with Gaussian convolution. CPU memory addr. to instruction movq 8(%rdx), %rdi xorl %eax, %eax movl %eax, (%r15) addl $1, %r14d call atoi movq -80(%rbp), %rdx movq %rdx, -80(%rbp) addq $4, %r15 movq 8(%rdx), %rdi xorl %eax, %eax movl %eax, (%r15) Machine-code Instructions ASPLOS
20 Fault Localization Comparison Execution Count Merge Sort Full Trace Sampling 0x4005D8 0x x x4006A0 Address 0x400B50 0x400A88 0x4009C0 0x4008F8 0x ASPLOS
21 Genprog: Automatically Repairing Software Bugs Use of algorithmic and heuristic methods to search for, generate, and evaluate program repairs. Strengths Repaired 55/105 bugs for $8 each [Le Goues et al., 2012a] Repairs multiple classes of bugs and security defects [Weimer et al., 2009] Wins human-competitive awards [Forrest et al., 2009; Le Goues et al., 2012b] Limitations Requires source code Requires build tool chain Requires program instrumentation Expensive fitness function (compilation, test execution) ASPLOS
22 Genprog: Automatically Repairing Software Bugs Use of algorithmic and heuristic methods to search for, generate, and evaluate program repairs. Strengths Repaired 55/105 bugs for $8 each [Le Goues et al., 2012a] Repairs multiple classes of bugs and security defects [Weimer et al., 2009] Wins human-competitive awards [Forrest et al., 2009; Le Goues et al., 2012b] Limitations Requires source code Requires build tool chain Requires program instrumentation Expensive fitness function (compilation, test execution) ASPLOS
23 Benchmark Programs Program Program Description Bug atris graphical tetris game local stack buffer exploi ccrypt encryption utility segfault deroff document processing segfault flex lexical analyzer generator segfault indent source code processing infinite loop look svr4 dictionary lookup infinite loop look ultrix dictionary lookup infinite loop merge merge sort duplicate inputs merge-cpp merge sort (in C++) duplicate inputs s3 sendmail utility buffer overflow uniq duplicate text processing segfault units metric conversion segfault zune embedded media player infinite loop ASPLOS
24 Empirical Results Effective 62% faster runtime 95% smaller disk footprint 86% less memory Total bugs repaired Rep. Num. Bugs AST 13 ASM 12 ELF 11 Average success rate 100 runs per bug Rep. Success Rate AST 78.17% ASM 70.75% ELF 65.83% ASPLOS
25 Empirical Results Effective 62% faster runtime 95% smaller disk footprint 86% less memory Expected fitness evaluations Rep. Evaluations AST ASM ELF Total runtime Rep. Sec. AST ASM ELF ASPLOS
26 Empirical Results Effective 62% faster runtime 95% smaller disk footprint 86% less memory Example: Merge Sort Repair by representation AST, 2 of 4900 Swaps ASM, 1 of 280 Deletes merge.c 44 if( left [l-mid -1] <= right [0]){ 45 result = list ; } 46 else {/* fix : swap branches */ 47 result = merge (left,l-mid, 48 right, mid ); } merge.s 210 cmpl % eax, % edx ; fix : del. 211 jg.l movq -72(% rbp ), % rax ASPLOS
27 Empirical Results Disk size Effective 62% faster runtime 95% smaller disk footprint 86% less memory Rep. AST ASM ELF Requirements Source code & build toolchain Assembly code & linker Compiled executable ASPLOS
28 Empirical Results Working memory Effective 62% faster runtime 95% smaller disk footprint 86% less memory Rep. MB AST 1402 ASM 756 ELF 200 ASPLOS
29 Distributed Genetic Repair Algorithm ASPLOS
30 Distributed Genetic Repair Algorithm ASPLOS
31 Distributed Genetic Repair Algorithm delete(45) 1 swap(23,86) 4 2 insert(4,23) 3 delete(4) ASPLOS
32 Distributed Genetic Repair Evaluation Relative performance of DGA Expected Wall Clock # Nodes Fitness Evaluations Seconds w/sms ASPLOS
33 Distributed Genetic Repair Evaluation Relative performance of DGA Expected Wall Clock # Nodes Fitness Evaluations Seconds w/sms ASPLOS
34 Distributed Genetic Repair Evaluation Relative performance of DGA Expected Wall Clock # Nodes Fitness Evaluations Seconds w/sms ASPLOS
35 Discussion ASM & ELF search space Search space System protection Program size 3 more assembly instructions than C statements Search space size program size = alphabet Possible program coverage Possible Programs Reachable Programs Original Program ASPLOS
36 Discussion Search space System protection System protection Arbitrary assembly is arbitrarily dangerous Light weight sandboxing (ulimit and chroot) ASPLOS
37 Conclusion ASM and ELF representation Remove requirement for source code and build toolchain Language Agnostic; x86 or ARM assembly or ELF Change program repair search space Reduce resources; 95% smaller disk footprint, 86% less memory, 62% faster runtime Distributed Genetic Program Repair Allows multiple devices to collaborate Fewer fitness evaluations and faster runtime ASPLOS
38 Conclusion Take away Assembly mutations cause semantic changes! Software is not brittle! ASPLOS
39 Conclusion Take away Assembly mutations cause semantic changes! Software is not brittle! ASPLOS
40 Thank You Contact Name Homepage Eric Schulte Code Program Repair Tool ptrace Tracer ELF (C) ELF (Common Lisp) ASPLOS
41 Bibliography S. Forrest, W. Weimer, T. Nguyen, and C. Le Goues. A genetic programming approach to automated software repair. In Genetic and Evolutionary Computing Conference, C. Le Goues, M. Dewey-Vogt, S. Forrest, and W. Weimer. A systematic study of automated program repair: Fixing 55 out of 105 bugs for $8 each. In International Conference on Software Engineering, 2012a. C. Le Goues, W. Weimer, and S. Forrest. Representations and operators for improving evolutionary software repair. In Proceedings of the fourteenth international conference on Genetic and evolutionary computation conference, pages ACM, 2012b. D. Maier. Sales of smartphones and tablets to exceed pcs. Practical Ecommerce, October Sales-of-Smartphones-and-Tablets-to-Exceed-PCs-. W. Weimer, T. Nguyen, C. Le Goues, and S. Forrest. Automatically finding patches using genetic programming. In International Conference on Software Engineering, pages , ASPLOS
42 Backup Slides ASPLOS
43 Backup: Wall Clock Times Mean wall clock time in seconds to find a successful repair DGA Naïve Parallel # Nodes Seconds Rounds Seconds ASPLOS
44 Backup: Software Mutational Robustness Semantic Space, Specification & Test Suite Specification Program Test Suite ASPLOS
45 Backup: Software Mutational Robustness Semantic Space, Specification & Test Suite Specification Program 1 Test Suite ASPLOS
46 Backup: Software Mutational Robustness Semantic Space, Specification & Test Suite 2 Specification Program 1 Test Suite ASPLOS
47 Backup: Software Mutational Robustness Semantic Space, Specification & Test Suite 2 Specification Program 1 3 Test Suite ASPLOS
48 Backup: Software Mutational Robustness Semantic Space, Specification & Test Suite 2 Specification 4 Program 1 3 Test Suite ASPLOS
49 Backup: Software Mutational Robustness Semantic Space, Specification & Test Suite 2 Specification 4 5 Program 1 3 Test Suite ASPLOS
Lecture 7: Machine-Level Programming I: Basics Mohamed Zahran (aka Z) [email protected] http://www.mzahran.com
CSCI-UA.0201-003 Computer Systems Organization Lecture 7: Machine-Level Programming I: Basics Mohamed Zahran (aka Z) [email protected] http://www.mzahran.com Some slides adapted (and slightly modified)
Language Processing Systems
Language Processing Systems Evaluation Active sheets 10 % Exercise reports 30 % Midterm Exam 20 % Final Exam 40 % Contact Send e-mail to [email protected] Course materials at www.u-aizu.ac.jp/~hamada/education.html
How to make the computer understand? Lecture 15: Putting it all together. Example (Output assembly code) Example (input program) Anatomy of a Computer
How to make the computer understand? Fall 2005 Lecture 15: Putting it all together From parsing to code generation Write a program using a programming language Microprocessors talk in assembly language
Lecture 27 C and Assembly
Ananda Gunawardena Lecture 27 C and Assembly This is a quick introduction to working with x86 assembly. Some of the instructions and register names must be check for latest commands and register names.
Dynamic Behavior Analysis Using Binary Instrumentation
Dynamic Behavior Analysis Using Binary Instrumentation Jonathan Salwan [email protected] St'Hack Bordeaux France March 27 2015 Keywords: program analysis, DBI, DBA, Pin, concrete execution, symbolic
Introduction. Compiler Design CSE 504. Overview. Programming problems are easier to solve in high-level languages
Introduction Compiler esign CSE 504 1 Overview 2 3 Phases of Translation ast modifled: Mon Jan 28 2013 at 17:19:57 EST Version: 1.5 23:45:54 2013/01/28 Compiled at 11:48 on 2015/01/28 Compiler esign Introduction
64-Bit NASM Notes. Invoking 64-Bit NASM
64-Bit NASM Notes The transition from 32- to 64-bit architectures is no joke, as anyone who has wrestled with 32/64 bit incompatibilities will attest We note here some key differences between 32- and 64-bit
Search Algorithm in Software Testing and Debugging
Search Algorithm in Software Testing and Debugging Hsueh-Chien Cheng Dec 8, 2010 Search Algorithm Search algorithm is a well-studied field in AI Computer chess Hill climbing A search... Evolutionary Algorithm
Hacking Techniques & Intrusion Detection. Ali Al-Shemery arabnix [at] gmail
Hacking Techniques & Intrusion Detection Ali Al-Shemery arabnix [at] gmail All materials is licensed under a Creative Commons Share Alike license http://creativecommonsorg/licenses/by-sa/30/ # whoami Ali
Two Flavors in Automated Software Repair: Rigid Repair and Plastic Repair
Two Flavors in Automated Software Repair: Rigid Repair and Plastic Repair Martin Monperrus, Benoit Baudry Dagstuhl Preprint, Seminar #13061, 2013. Link to the latest version Abstract In this paper, we
CS:APP Chapter 4 Computer Architecture. Wrap-Up. William J. Taffe Plymouth State University. using the slides of
CS:APP Chapter 4 Computer Architecture Wrap-Up William J. Taffe Plymouth State University using the slides of Randal E. Bryant Carnegie Mellon University Overview Wrap-Up of PIPE Design Performance analysis
Return-oriented programming without returns
Faculty of Computer Science Institute for System Architecture, Operating Systems Group Return-oriented programming without urns S. Checkoway, L. Davi, A. Dmitrienko, A. Sadeghi, H. Shacham, M. Winandy
Physical Data Organization
Physical Data Organization Database design using logical model of the database - appropriate level for users to focus on - user independence from implementation details Performance - other major factor
CS61: Systems Programing and Machine Organization
CS61: Systems Programing and Machine Organization Fall 2009 Section Notes for Week 2 (September 14 th - 18 th ) Topics to be covered: I. Binary Basics II. Signed Numbers III. Architecture Overview IV.
System/Networking performance analytics with perf. Hannes Frederic Sowa <[email protected]>
System/Networking performance analytics with perf Hannes Frederic Sowa Prerequisites Recent Linux Kernel CONFIG_PERF_* CONFIG_DEBUG_INFO Fedora: debuginfo-install kernel for
Embedded Software Development
Linköpings Tekniska Högskola Institutionen för Datavetanskap (IDA), Software and Systems (SaS) TDDI11, Embedded Software 2010-04-22 Embedded Software Development Host and Target Machine Typical embedded
Buffer Overflows. Security 2011
Buffer Overflows Security 2011 Memory Organiza;on Topics Kernel organizes memory in pages Typically 4k bytes Processes operate in a Virtual Memory Space Mapped to real 4k pages Could live in RAM or be
Lecture 9. Semantic Analysis Scoping and Symbol Table
Lecture 9. Semantic Analysis Scoping and Symbol Table Wei Le 2015.10 Outline Semantic analysis Scoping The Role of Symbol Table Implementing a Symbol Table Semantic Analysis Parser builds abstract syntax
TODAY, FEW PROGRAMMERS USE ASSEMBLY LANGUAGE. Higher-level languages such
9 Inline Assembly Code TODAY, FEW PROGRAMMERS USE ASSEMBLY LANGUAGE. Higher-level languages such as C and C++ run on nearly all architectures and yield higher productivity when writing and maintaining
Programming Languages
Programming Languages In the beginning To use a computer, you needed to know how to program it. Today People no longer need to know how to program in order to use the computer. To see how this was accomplished,
The Quest for Speed - Memory. Cache Memory. A Solution: Memory Hierarchy. Memory Hierarchy
The Quest for Speed - Memory Cache Memory CSE 4, Spring 25 Computer Systems http://www.cs.washington.edu/4 If all memory accesses (IF/lw/sw) accessed main memory, programs would run 20 times slower And
Parallelization: Binary Tree Traversal
By Aaron Weeden and Patrick Royal Shodor Education Foundation, Inc. August 2012 Introduction: According to Moore s law, the number of transistors on a computer chip doubles roughly every two years. First
Lecture 26: Obfuscation
Lecture 26: Obfuscation 15411: Compiler Design Robbie Harwood and Maxime Serrano 21 November 2013 1 Introduction We have previously (lecture 20) considered the problem of doing compilation backwards (i.e.,
Automating Mimicry Attacks Using Static Binary Analysis
Automating Mimicry Attacks Using Static Binary Analysis Christopher Kruegel and Engin Kirda Technical University Vienna [email protected], [email protected] Darren Mutz, William Robertson,
CSC230 Getting Starting in C. Tyler Bletsch
CSC230 Getting Starting in C Tyler Bletsch What is C? The language of UNIX Procedural language (no classes) Low-level access to memory Easy to map to machine language Not much run-time stuff needed Surprisingly
CSE 141L Computer Architecture Lab Fall 2003. Lecture 2
CSE 141L Computer Architecture Lab Fall 2003 Lecture 2 Pramod V. Argade CSE141L: Computer Architecture Lab Instructor: TA: Readers: Pramod V. Argade ([email protected]) Office Hour: Tue./Thu. 9:30-10:30
Lexical Analysis and Scanning. Honors Compilers Feb 5 th 2001 Robert Dewar
Lexical Analysis and Scanning Honors Compilers Feb 5 th 2001 Robert Dewar The Input Read string input Might be sequence of characters (Unix) Might be sequence of lines (VMS) Character set ASCII ISO Latin-1
Off-by-One exploitation tutorial
Off-by-One exploitation tutorial By Saif El-Sherei www.elsherei.com Introduction: I decided to get a bit more into Linux exploitation, so I thought it would be nice if I document this as a good friend
Chapter 7D The Java Virtual Machine
This sub chapter discusses another architecture, that of the JVM (Java Virtual Machine). In general, a VM (Virtual Machine) is a hypothetical machine (implemented in either hardware or software) that directly
Raima Database Manager Version 14.0 In-memory Database Engine
+ Raima Database Manager Version 14.0 In-memory Database Engine By Jeffrey R. Parsons, Senior Engineer January 2016 Abstract Raima Database Manager (RDM) v14.0 contains an all new data storage engine optimized
Applying Clang Static Analyzer to Linux Kernel
Applying Clang Static Analyzer to Linux Kernel 2012/6/7 FUJITSU COMPUTER TECHNOLOGIES LIMITED Hiroo MATSUMOTO 管 理 番 号 1154ka1 Copyright 2012 FUJITSU COMPUTER TECHNOLOGIES LIMITED Abstract Now there are
CSCI 3136 Principles of Programming Languages
CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University
Toward Improving Graftability on Automated Program Repair
Toward Improving Graftability on Automated Program Repair Soichi Sumi, Yoshiki Higo, Keisuke Hotta, and Shinji Kusumoto Graduate School of Information Science and Technology, Osaka University, Japan Email:
Object-Oriented Software Engineering THE TOOLS OF THE TRADE CHAPTER 5. Stephen R. Schach [email protected]. 5.1 Stepwise Refinement.
Slide 5.1 CHAPTER 5 Slide 5.2 Object-Oriented Software Engineering THE TOOLS OF THE TRADE WCB/McGraw-Hill, 2008 Stephen R. Schach [email protected] Overview Slide 5.3 5.1 Stepwise Refinement Slide
Compilers. Introduction to Compilers. Lecture 1. Spring term. Mick O Donnell: [email protected] Alfonso Ortega: alfonso.ortega@uam.
Compilers Spring term Mick O Donnell: [email protected] Alfonso Ortega: [email protected] Lecture 1 to Compilers 1 Topic 1: What is a Compiler? 3 What is a Compiler? A compiler is a computer
Application Note 195. ARM11 performance monitor unit. Document number: ARM DAI 195B Issued: 15th February, 2008 Copyright ARM Limited 2007
Application Note 195 ARM11 performance monitor unit Document number: ARM DAI 195B Issued: 15th February, 2008 Copyright ARM Limited 2007 Copyright 2007 ARM Limited. All rights reserved. Application Note
DATA ITEM DESCRIPTION
DD Form 1664, APR 89 Previous editions are obsolete Page 1 of 4 Pages 135/123 DATA ITEM DESCRIPTION Form Approved OMB NO.0704-0188 Public reporting burden for collection of this information is estimated
Machine Programming II: Instruc8ons
Machine Programming II: Instrucons Move instrucons, registers, and operands Complete addressing mode, address computaon (leal) Arithmec operaons (including some x6 6 instrucons) Condion codes Control,
Machine-Level Programming II: Arithmetic & Control
Mellon Machine-Level Programming II: Arithmetic & Control 15-213 / 18-213: Introduction to Computer Systems 6 th Lecture, Jan 29, 2015 Instructors: Seth Copen Goldstein, Franz Franchetti, Greg Kesden 1
Optimizing Linux Performance
Optimizing Linux Performance Why is Performance Important Regular desktop user Not everyone has the latest hardware Waiting for an application to open Application not responding Memory errors Extra kernel
The programming language C. sws1 1
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
A Dozen Years of Shellphish From DEFCON to the Cyber Grand Challenge
A Dozen Years of Shellphish From DEFCON to the Cyber Grand Challenge Antonio Bianchi [email protected] University of California, Santa Barbara HITCON Enterprise August 27th, 2015 Agenda Shellphish The
Exploiting nginx chunked overflow bug, the undisclosed attack vector
Exploiting nginx chunked overflow bug, the undisclosed attack vector Long Le [email protected] About VNSECURITY.NET CLGT CTF team 2 VNSECURITY.NET In this talk Nginx brief introduction Nginx chunked
Compilers I - Chapter 4: Generating Better Code
Compilers I - Chapter 4: Generating Better Code Lecturers: Paul Kelly ([email protected]) Office: room 304, William Penney Building Naranker Dulay ([email protected]) Materials: Office: room 562 Textbook
CS:APP Chapter 4 Computer Architecture Instruction Set Architecture. CS:APP2e
CS:APP Chapter 4 Computer Architecture Instruction Set Architecture CS:APP2e Instruction Set Architecture Assembly Language View Processor state Registers, memory, Instructions addl, pushl, ret, How instructions
Assembly Language: Function Calls" Jennifer Rexford!
Assembly Language: Function Calls" Jennifer Rexford! 1 Goals of this Lecture" Function call problems:! Calling and returning! Passing parameters! Storing local variables! Handling registers without interference!
The Elective Part of the NSS ICT Curriculum D. Software Development
of the NSS ICT Curriculum D. Software Development Mr. CHEUNG Wah-sang / Mr. WONG Wing-hong, Robert Member of CDC HKEAA Committee on ICT (Senior Secondary) 1 D. Software Development The concepts / skills
a storage location directly on the CPU, used for temporary storage of small amounts of data during processing.
CS143 Handout 18 Summer 2008 30 July, 2008 Processor Architectures Handout written by Maggie Johnson and revised by Julie Zelenski. Architecture Vocabulary Let s review a few relevant hardware definitions:
External Sorting. Why Sort? 2-Way Sort: Requires 3 Buffers. Chapter 13
External Sorting Chapter 13 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1 Why Sort? A classic problem in computer science! Data requested in sorted order e.g., find students in increasing
Parallel Databases. Parallel Architectures. Parallelism Terminology 1/4/2015. Increase performance by performing operations in parallel
Parallel Databases Increase performance by performing operations in parallel Parallel Architectures Shared memory Shared disk Shared nothing closely coupled loosely coupled Parallelism Terminology Speedup:
Software Vulnerabilities
Software Vulnerabilities -- stack overflow Code based security Code based security discusses typical vulnerabilities made by programmers that can be exploited by miscreants Implementing safe software in
what operations can it perform? how does it perform them? on what kind of data? where are instructions and data stored?
Inside the CPU how does the CPU work? what operations can it perform? how does it perform them? on what kind of data? where are instructions and data stored? some short, boring programs to illustrate the
Oracle Solaris Studio Code Analyzer
Oracle Solaris Studio Code Analyzer The Oracle Solaris Studio Code Analyzer ensures application reliability and security by detecting application vulnerabilities, including memory leaks and memory access
For a 64-bit system. I - Presentation Of The Shellcode
#How To Create Your Own Shellcode On Arch Linux? #Author : N3td3v!l #Contact-mail : [email protected] #Website : Nopotm.ir #Spcial tnx to : C0nn3ct0r And All Honest Hackerz and Security Managers I - Presentation
Efficient Program Exploration by Input Fuzzing
Efficient Program Exploration by Input Fuzzing towards a new approach in malcious code detection Guillaume Bonfante Jean-Yves Marion Ta Thanh Dinh Université de Lorraine CNRS - INRIA Nancy First Botnet
Designing Better Fitness Functions for Automated Program Repair
Designing Better Fitness Functions for Automated Program Repair Ethan Fast University of Virginia [email protected] Claire Le Goues University of Virginia [email protected] Stephanie Forrest University
æ A collection of interrelated and persistent data èusually referred to as the database èdbèè.
CMPT-354-Han-95.3 Lecture Notes September 10, 1995 Chapter 1 Introduction 1.0 Database Management Systems 1. A database management system èdbmsè, or simply a database system èdbsè, consists of æ A collection
Data Structures and Data Manipulation
Data Structures and Data Manipulation What the Specification Says: Explain how static data structures may be used to implement dynamic data structures; Describe algorithms for the insertion, retrieval
Stack Overflows. Mitchell Adair
Stack Overflows Mitchell Adair Outline Why? What? There once was a VM Virtual Memory Registers Stack stack1, stack2, stack3 Resources Why? Real problem Real money Real recognition Still prevalent Very
Leak Check Version 2.1 for Linux TM
Leak Check Version 2.1 for Linux TM User s Guide Including Leak Analyzer For x86 Servers Document Number DLC20-L-021-1 Copyright 2003-2009 Dynamic Memory Solutions LLC www.dynamic-memory.com Notices Information
Secure Programming with Static Analysis. Jacob West [email protected]
Secure Programming with Static Analysis Jacob West [email protected] Software Systems that are Ubiquitous Connected Dependable Complexity U Unforeseen Consequences Software Security Today The line between
Machine-Level Programming I: Basics
Machine-Level Programming I: Basics 15-213/18-213: Introduction to Computer Systems 5 th Lecture, May 25, 2016 Instructor: Brian Railing 1 Today: Machine Programming I: Basics History of Intel processors
Persistent Binary Search Trees
Persistent Binary Search Trees Datastructures, UvA. May 30, 2008 0440949, Andreas van Cranenburgh Abstract A persistent binary tree allows access to all previous versions of the tree. This paper presents
Bringing Big Data Modelling into the Hands of Domain Experts
Bringing Big Data Modelling into the Hands of Domain Experts David Willingham Senior Application Engineer MathWorks [email protected] 2015 The MathWorks, Inc. 1 Data is the sword of the
Java in High-Performance Computing
Java in High-Performance Computing Dawid Weiss Carrot Search Institute of Computing Science, Poznan University of Technology GeeCon Poznań, 05/2010 Learn from the mistakes of others. You can t live long
TRACE PERFORMANCE TESTING APPROACH. Overview. Approach. Flow. Attributes
TRACE PERFORMANCE TESTING APPROACH Overview Approach Flow Attributes INTRODUCTION Software Testing Testing is not just finding out the defects. Testing is not just seeing the requirements are satisfied.
Static Analysis. Find the Bug! 15-654: Analysis of Software Artifacts. Jonathan Aldrich. disable interrupts. ERROR: returning with interrupts disabled
Static Analysis 15-654: Analysis of Software Artifacts Jonathan Aldrich 1 Find the Bug! Source: Engler et al., Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions, OSDI
Format string exploitation on windows Using Immunity Debugger / Python. By Abysssec Inc WwW.Abysssec.Com
Format string exploitation on windows Using Immunity Debugger / Python By Abysssec Inc WwW.Abysssec.Com For real beneficiary this post you should have few assembly knowledge and you should know about classic
Fast Arithmetic Coding (FastAC) Implementations
Fast Arithmetic Coding (FastAC) Implementations Amir Said 1 Introduction This document describes our fast implementations of arithmetic coding, which achieve optimal compression and higher throughput by
Instruction Set Architecture
CS:APP Chapter 4 Computer Architecture Instruction Set Architecture Randal E. Bryant adapted by Jason Fritts http://csapp.cs.cmu.edu CS:APP2e Hardware Architecture - using Y86 ISA For learning aspects
Symbol Tables. Introduction
Symbol Tables Introduction A compiler needs to collect and use information about the names appearing in the source program. This information is entered into a data structure called a symbol table. The
Configuration management. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 29 Slide 1
Configuration management Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 29 Slide 1 Objectives To explain the importance of software configuration management (CM) To describe key CM activities
Tailored Source Code Transformations to Synthesize Computationally Diverse Program Variants. Benoit Baudry, Simon Allier, Martin Monperrus
Tailored Source Code Transformations to Synthesize Computationally Diverse Program Variants Benoit Baudry, Simon Allier, Martin Monperrus This talk is about the generation of very large quantities of sosie
Keil C51 Cross Compiler
Keil C51 Cross Compiler ANSI C Compiler Generates fast compact code for the 8051 and it s derivatives Advantages of C over Assembler Do not need to know the microcontroller instruction set Register allocation
Input / Ouput devices. I/O Chapter 8. Goals & Constraints. Measures of Performance. Anatomy of a Disk Drive. Introduction - 8.1
Introduction - 8.1 I/O Chapter 8 Disk Storage and Dependability 8.2 Buses and other connectors 8.4 I/O performance measures 8.6 Input / Ouput devices keyboard, mouse, printer, game controllers, hard drive,
Informatica e Sistemi in Tempo Reale
Informatica e Sistemi in Tempo Reale Introduction to C programming Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 25, 2010 G. Lipari (Scuola Superiore Sant Anna)
A3 Computer Architecture
A3 Computer Architecture Engineering Science 3rd year A3 Lectures Prof David Murray [email protected] www.robots.ox.ac.uk/ dwm/courses/3co Michaelmas 2000 1 / 1 6. Stacks, Subroutines, and Memory
Best Practices for Monitoring Databases on VMware. Dean Richards Senior DBA, Confio Software
Best Practices for Monitoring Databases on VMware Dean Richards Senior DBA, Confio Software 1 Who Am I? 20+ Years in Oracle & SQL Server DBA and Developer Worked for Oracle Consulting Specialize in Performance
Administration. Instruction scheduling. Modern processors. Examples. Simplified architecture model. CS 412 Introduction to Compilers
CS 4 Introduction to Compilers ndrew Myers Cornell University dministration Prelim tomorrow evening No class Wednesday P due in days Optional reading: Muchnick 7 Lecture : Instruction scheduling pr 0 Modern
MSc Computer Science Dissertation
University of Oxford Computing Laboratory MSc Computer Science Dissertation Automatic Generation of Control Flow Hijacking Exploits for Software Vulnerabilities Author: Sean Heelan Supervisor: Dr. Daniel
Chapter 13. Chapter Outline. Disk Storage, Basic File Structures, and Hashing
Chapter 13 Disk Storage, Basic File Structures, and Hashing Copyright 2007 Ramez Elmasri and Shamkant B. Navathe Chapter Outline Disk Storage Devices Files of Records Operations on Files Unordered Files
Advanced IBM AIX Heap Exploitation. Tim Shelton V.P. Research & Development HAWK Network Defense, Inc. [email protected]
Advanced IBM AIX Heap Exploitation Tim Shelton V.P. Research & Development HAWK Network Defense, Inc. [email protected] Introduction Our society has become dependent on computers and network systems.
Simplifying Failure-Inducing Input
Simplifying Failure-Inducing Input Ralf Hildebrandt and Andreas Zeller ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA) Portland, Oregon, August 23, 2000 [The Mozilla BugAThon]
Optimal Stack Slot Assignment in GCC
Optimal Stack Slot Assignment in GCC Naveen Sharma Sanjiv Kumar Gupta System Software Group HCL Technologies Ltd Noida, India 201301 {naveens, sanjivg}@noida.hcltech.com Abstract Several microprocessors,
CSE 326: Data Structures B-Trees and B+ Trees
Announcements (4//08) CSE 26: Data Structures B-Trees and B+ Trees Brian Curless Spring 2008 Midterm on Friday Special office hour: 4:-5: Thursday in Jaech Gallery (6 th floor of CSE building) This is
DATA STRUCTURES USING C
DATA STRUCTURES USING C QUESTION BANK UNIT I 1. Define data. 2. Define Entity. 3. Define information. 4. Define Array. 5. Define data structure. 6. Give any two applications of data structures. 7. Give
Jonathan Worthington Scarborough Linux User Group
Jonathan Worthington Scarborough Linux User Group Introduction What does a Virtual Machine do? Hides away the details of the hardware platform and operating system. Defines a common set of instructions.
Exam 1 Review Questions
CSE 473 Introduction to Computer Networks Exam 1 Review Questions Jon Turner 10/2013 1. A user in St. Louis, connected to the internet via a 20 Mb/s (b=bits) connection retrieves a 250 KB (B=bytes) web
