BUG: unable to handle kernel NULL pointer dereference at virtual address c printing eip: c01e41ee *pde = Oops: 0000 [#1] SMP Modules
|
|
|
- Jack Chambers
- 10 years ago
- Views:
Transcription
1 BUG: unable to handle kernel NULL pointer dereference at virtual address c printing eip: c01e41ee *pde = Oops: 0000 [#1] SMP Modules linked in: CPU: 0 EIP: 0060:[<c01e41ee>] Not tainted VLI EFLAGS: ( k7 #1) EIP is at acpi_hw_low_level_read+0x7/0x6a eax: ebx: ecx: edx: c18e1f80 esi: c18e1f94 edi: ebp: esp: c18e1f68 ds: 007b es: 007b ss: 0068 Process swapper (pid: 1, ti=c18e0000 task=f7b44aa0 task.ti=c18e0000) Stack: c18e1f c01e42ae 00fb3c c02b670c f7fb3c00 c02b6834 c01c21b5 c02b66dc c01c1e26 f7fb3c00 c0344b6c c01c12d c01003e1 c0102b c01002d Call Trace: [<c01e42ae>] acpi_hw_register_read+0x5d/0x177 [<c01c21b5>] quirk_via_abnormal_poweroff+0x11/0x36 [<c01c1e26>] pci_fixup_device+0x68/0x73 [<c01c12d0>] pci_init+0x11/0x28 [<c01003e1>] init+0x111/0x28e [<c0102b46>] ret_from_fork+0x6/0x1c [<c01002d0>] init+0x0/0x28e [<c01002d0>] init+0x0/0x28e [<c >] kernel_thread_helper+0x5/0xb Code: a0 82 2d c0 76 1b c 2a c0 68 f ff 35 ac ef 28 c0 e8 c d2 83 c d0 c c d <8b> b f7 09 df c a EIP: [<c01e41ee>] acpi_hw_low_level_read+0x7/0x6a SS:ESP 0068:c18e1f68 1 <0>Kernel panic - not syncing: Attempted to kill init!
2 Slicing Object Code Jan Tobias Mühlberg Slicing Object Code... and finding memory safety violations. Jan Tobias Mühlberg University of York, UK Theory Seminars, Birmingham, 28th February
3 Motivation Motivation "BLASTing Linux Code" (Mühlberg and Lüttgen, 2006) "Model-checking Part of a Linux File System" (Galloway et al., 2007) Results: The biggest problem is to abstract a faithful model from a given program to be analysed. 3
4 Related Work Related Work O Hearn and colleagues: SpaceInvader, Smallfoot (Yang et al., 2007) Microsoft Research: SLAM, VCC, Hypervisor (Ball et al., 2006) "EXE: automatically generating inputs of death" (Cadar et al., 2006) 4
5 Memory Safety? Memory Safety? What I am interested in: Dereferencing invalid pointers Uninitialised reads Buffer overflows Memory leaks Violation of API usage rules for (de)allocation Not now: Shape safety But: Exhaustive and push-button 5
6 Project Outline Project Outline Why don t we verify on the compiled code? 6
7 Why Object Code? Why Object Code? (Balakrishnan et al., 2005) Programs are not always available in source code (proprietary stuff, libraries) Do properties hold after compilation and optimisation? Many bugs exist because of platform specific details Programs may be modified after compilation Unspecified language constructs, use of inline assembly or multiple languages 7
8 Project Outline Project Outline Why don t we verify on the compiled code? Find application domain: Linux device drivers 8
9 Why Linux Device Drivers? Why Linux Device Drivers? Highly critical domain Modular software architecture Small programs with high complexity Almost no tool support for debugging and verification Plenty of case studies available to compare results with 9
10 Project Outline Project Outline Why don t we verify on the compiled code? Find application domain: Linux device drivers Chose an intermediate representation: Valgrind 10
11 Intermediate Representation Intermediate Representation IA32 assembly: 500 instructions, 3 byte opcodes lots of instructions with multiple effects (i.e. POP, PUSH, CALL) But still: clear semantics 11
12 Intermediate Representation Intermediate Representation Valgrind s IR (Nethercote and Fitzhardinge, 2004) RISC-like assembly language with arbitrary number of temporary registers 12 expressions, 130 operations No side-effects Explicit load/store operations Static single assignment form 12
13 Intermediate Representation Intermediate Representation push %ebp t0 = GET:I32(20) t34 = GET:I32(16) t33 = Sub32(t34,0x4:I32) PUT(16) = t33 STle(t33) = t0 mov %esp,%ebp PUT(60) = 0x :I32 t35 = GET:I32(16) PUT(20) = t35 sub $0x8,%esp PUT(60) = 0x :I32 t4 = GET:I32(16) t2 = Sub32(t4,0x8:I32) PUT(32) = 0x6:I32 PUT(36) = t4 PUT(40) = 0x8:I32 PUT(16) = t2 13
14 Intermediate Representation Intermediate Representation Defining a semantics: T ypes = t = r = h = l = (I8 I16 I32) I16 (type : T ypes, val : V alues) I16 I8 Addresses V alues Addresses (alloc : Bool, init : Bool, start : I32, size : I32) command-state pair: c, (t, r, h, l) (with c being a command, t the set of temporary registers, r the set of CPU registers, h the current heap and l the "Locations function") 14
15 Intermediate Representation Intermediate Representation Defining a semantics: PUT(reg) = treg, (t, r, h, l) (t, [r reg : val], h, l) (t, [r reg..reg + 1 : val], h, l) (t, [r reg..reg + 3 : val], h, l) if t(treg).type = I8 if t(treg).type = I16 if t(treg).type = I32 treg = GET : type(reg), (t, r, h, l) ([t treg : (type, r(reg))], r, h, l) ([t treg : (type, r(reg..reg + 1))], r, h, l) ([t treg : (type, r(reg..reg + 3))], r, h, l) if type = I8 if type = I16 if type = I32 15
16 Intermediate Representation Intermediate Representation And translate the program into a set of bit-vector constraints for Yices (Dutertre and de Moura, 2006):... (define t34.0x ::(bitvector 32) (bv-concat (bv-concat r19.0x r18.0x ) (bv-concat r17.0x r16.0x ))) (define t33.0x ::(bitvector 32) (bv-sub t34.0x (mk-bv 32 4)))... 16
17 Project Outline Project Outline Why don t we verify on the compiled code? Find application domain: Linux device drivers Chose an intermediate representation: Valgrind For each program location, check safety properties: 17
18 Symbolic Execution Symbolic Execution Construct constraint system for each possible path of the program (bounded loop unrolling) Registers and heap/stack are allowed to hold any possible value initially Add (assert...) for all pointer operations (check) 18
19 Symbolic Execution Symbolic Execution... (define t36.0x ::(bitvector 32) (bv-concat (bv-concat (heap (bv-add t34.0x (mk-bv 32 3))) (heap (bv-add t34.0x (mk-bv 32 2)))) (bv-concat (heap (bv-add t34.0x (mk-bv 32 1))) (heap t34.0x )))) (define r0.0x ::(bitvector 8) (bv-extract 7 0 t36.0x )) (define r1.0x ::(bitvector 8) (bv-extract 15 8 t36.0x )) (define r2.0x ::(bitvector 8) (bv-extract t36.0x )) (define r3.0x ::(bitvector 8) (bv-extract t36.0x )) (define t19.0x b.1::(bitvector 32) (bv-concat (bv-concat r3.0x r2.0x ) (bv-concat r1.0x r0.0x ))) ;; checking t19.0x b.1 (r) (assert (= t19.0x b.1 0b )) (check) 19
20 Project Outline Project Outline Why don t we verify on the compiled code? Find application domain: Linux device drivers Chose an intermediate representation: Valgrind For each program location, check safety properties: bounded model checking, symbolic execution Of course it doesn t work... 20
21 Project Outline Project Outline Why don t we verify on the compiled code? Find application domain: Linux device drivers Chose an intermediate representation: Valgrind For each program location, check safety properties: bounded model checking, symbolic execution, slicing 21
22 Slicing Object Code Slicing Object Code Program Slicing: (Weiser, 1981), (Ottenstein and Ottenstein, 1984), (Horwitz et al., 1990) Decomposing programs based on control and data flow Basically, constructing a system dependence graph and searching for nodes the slicing criterion depends on 22
23 Slicing Object Code Slicing Object Code push %ebp t0 = GET:I32(20) t34 = GET:I32(16) <- t33 = Sub32(t34,0x4:I32) <- PUT(16) = t33 <- STle(t33) = t0 mov %esp,%ebp PUT(60) = 0x :I32 t35 = GET:I32(16) PUT(20) = t35 sub $0x8,%esp PUT(60) = 0x :I32 t4 = GET:I32(16) <- t2 = Sub32(t4,0x8:I32) PUT(32) = 0x6:I32 PUT(36) = t4 <- criterion PUT(40) = 0x8:I32 PUT(16) = t2 23
24 Slicing Object Code Slicing Object Code Now, how do we deal with LD/ST instructions?... t64 = LDle:I32(t62)... STle(t64) = t63 STle(t34) = t1... t17 = LDle:I32(t18)... STle(t17) = t (assert (= t17 0b )) (check) 24
25 Slicing Object Code Slicing Object Code If all pointers evaluate to exactly one value, it s easy However, often they don t and we might end up with "symbolic" pointers that may hold any value between lo pointer up Solution: Heap dependency tree 25
26 Slicing Object Code Slicing Object Code Solution: Heap dependency tree 26
27 Slicing Object Code Slicing Object Code All satisfying values have to be computed for all pointers expensive We have to store the dependency tree expensive as well (but probably okay for device drivers) We get very precise slices! 27
28 Slicing Object Code Slicing Object Code Is it any good? Slices are usually 200 constraints long and are solved less than a second We can analyse a whole driver within an hour and using about 1 GByte of RAM (crypto drivers quite simple, depth 2000) Works fine for finding possible NULL-dereferences and access to memory that is not allocated Many more experiments to do... 28
29 Slicing Object Code Slicing Object Code Some pointers to literature: "Recovery of Jump Table Case Statements from Binary Code" (Cifuentes and Emmerik, 1999) "Interprocedural Static Slicing of Binary Executables" (Kiss et al., 2003) "Analyzing Memory Accesses in x86 Executables" (Balakrishnan and Reps, 2004) and "Recovery of Variables and Heap Structure in x86 Executables" (Balakrishnan and Reps, 2005) 29
30 Slicing Object Code Slicing Object Code Some pointers to literature: "Generisches Slicing auf Maschinencode" (Schlickling, 2005) 30
31 Project Outline Project Outline Why don t we verify on the compiled code? Find application domain: Linux device drivers Chose an intermediate representation: Valgrind For each program location, check safety properties: bounded model checking, symbolic execution, slicing 31
32 Project Outline Project Outline Why don t we verify on the compiled code? Find application domain: Linux device drivers Chose an intermediate representation: Valgrind For each program location, check safety properties: bounded model checking, symbolic execution, slicing If a property is violated, generate a test case that will make the program crash quickly 32
33 Test Case Execution Test Case Execution Device drivers contain lots of hardware dependent operations we can t just run them in user space... but we can construct a new binary program by compiling all statements from (a union of) slices back to object code Executes quickly without waiting for hardware interaction or similar things. But that s another talk... 33
34 Project Outline/Summary Summary Why don t we verify on the compiled code? Find application domain: Linux device drivers Chose an intermediate representation: Valgrind For each program location, check safety properties: bounded model checking, symbolic execution, slicing If a property is violated, generate a test case that will make the program crash quickly 34
35 Future Work Future Work Try more properties (i.e. bounds checking, etc.) Experimental evaluation Compute the test cases Soundness and Completeness? Just ask me how many bugs I ve found so far... 35
36 Thank you! Thank you! Questions? 36
37 References References Balakrishnan, G. and Reps, T.: 2004, Analyzing memory accesses in x86 executables, in Proc. Int. Conf. on Compiler Construction, Vol of LNCS, pp 5 23 Balakrishnan, G. and Reps, T.: 2005, Recovery of Variables and Heap Structure in x86 Executables, Technical report, University of Wisconsin, Madison Balakrishnan, G., Reps, T., Melski, D., and Teitelbaum, T.: 2005, WYSINWYX: What You See Is Not What You execute, in VSTTE Ball, T., Bounimova, E., Cook, B., Levin, V., Lichtenberg, J., McGarvey, C., Ondrusek, B., Rajamani, S. K., and Ustuner, A.: 2006, Thorough static analysis of device drivers, in EuroSys Cadar, C., Ganesh, V., Pawlowski, P. M., Dill, D. L., and Engler, D. R.: 2006, Exe: automatically generating inputs of death, in CCS 06: Proceedings of the 13th ACM conference on Computer and communications security, pp , ACM, New York, NY, USA Cifuentes, C. and Emmerik, M. V.: 1999, Recovery of jump table case statements from binary code, in IWPC 99: Proceedings of the 7th International Workshop on Program Comprehension, p. 192, IEEE Computer Society, Washington, DC, USA Dutertre, B. and de Moura, L.: 2006, A fast linear-arithmetic solver for DPLL(T), in CAV 2006, No in LNCS, pp Galloway, A., Mühlberg, J. T., Siminiceanu, R., and Lüttgen, G.: 2007, Model-checking Part of a Linux File System, Technical Report YCS , Department of Computer Science, University of York, UK Horwitz, S., Reps, T., and Binkley, D.: 1990, ACM Trans. Program. Lang. Syst. 12(1), 26 37
38 Kiss, A., Jasz, J., Lehotai, G., and Gyimothy, T.: 2003, scam 00, 118 Mühlberg, J. T. and Lüttgen, G.: 2006, Blasting linux code, in FMICS 2006, No in LNCS, pp Nethercote, N. and Fitzhardinge, J.: 2004, Bounds-checking entire programs without recompiling, in Informal Proceedings of the Second Workshop on Semantics, Program Analysis, and Computing Environments for Memory Management (SPACE 2004) Ottenstein, K. J. and Ottenstein, L. M.: 1984, The program dependence graph in a software development environment, in SDE 1: Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments, pp , ACM, New York, NY, USA Schlickling, M.: 2005, Generisches slicing auf maschinencode, Master s thesis Weiser, M.: 1981, Program slicing, in ICSE 81: Proceedings of the 5th international conference on Software engineering, pp , IEEE Press, Piscataway, NJ, USA Yang, H., Lee, O., Calcagno, C., Distefano, D., and O Hearn, P.: 2007, On Scalable Shape Analysis, Technical Report RR-07-10, Queen Mary, University of London
Symbolic Object Code Analysis
Bamberger Beiträge zur Wirtschaftsinformatik und Angewandten Informatik ISSN 0937-3349 Nr. 85 Symbolic Object Code Analysis Jan Tobias Mühlberg und Gerald Lüttgen Februar 2010 Fakultät Wirtschaftsinformatik
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
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
CS412/CS413. Introduction to Compilers Tim Teitelbaum. Lecture 20: Stack Frames 7 March 08
CS412/CS413 Introduction to Compilers Tim Teitelbaum Lecture 20: Stack Frames 7 March 08 CS 412/413 Spring 2008 Introduction to Compilers 1 Where We Are Source code if (b == 0) a = b; Low-level IR code
Static Taint-Analysis on Binary Executables
Static Taint-Analysis on Binary Executables Sanjay Rawat, Laurent Mounier, Marie-Laure Potet VERIMAG University of Grenoble October 2011 Static Taint-Analysis on Binary Executables 1/29 Outline 1 Introduction
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.
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!
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
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
Jakstab: A Static Analysis Platform for Binaries
Jakstab: A Static Analysis Platform for Binaries (Tool Paper) Johannes Kinder and Helmut Veith Technische Universität Darmstadt, 64289 Darmstadt, Germany Abstract. For processing compiled code, model checkers
Abysssec Research. 1) Advisory information. 2) Vulnerable version
Abysssec Research 1) Advisory information Title Version Discovery Vendor Impact Contact Twitter CVE : Apple QuickTime FlashPix NumberOfTiles Remote Code Execution Vulnerability : QuickTime player 7.6.5
Computer Organization and Architecture
Computer Organization and Architecture Chapter 11 Instruction Sets: Addressing Modes and Formats Instruction Set Design One goal of instruction set design is to minimize instruction length Another goal
Intel 8086 architecture
Intel 8086 architecture Today we ll take a look at Intel s 8086, which is one of the oldest and yet most prevalent processor architectures around. We ll make many comparisons between the MIPS and 8086
Attacking x86 Windows Binaries by Jump Oriented Programming
Attacking x86 Windows Binaries by Jump Oriented Programming L. Erdődi * * Faculty of John von Neumann, Óbuda University, Budapest, Hungary [email protected] Abstract Jump oriented programming
Hotpatching and the Rise of Third-Party Patches
Hotpatching and the Rise of Third-Party Patches Alexander Sotirov [email protected] BlackHat USA 2006 Overview In the next one hour, we will cover: Third-party security patches _ recent developments
Linux Kernel. Security Report
Linux Kernel Security Report September 25 Authors: Andy Chou, Bryan Fulton and Seth Hallem Coverity has combined two years of analysis work carried out in a commercial setting at Coverity with four years
Cloud Computing. Up until now
Cloud Computing Lecture 11 Virtualization 2011-2012 Up until now Introduction. Definition of Cloud Computing Grid Computing Content Distribution Networks Map Reduce Cycle-Sharing 1 Process Virtual Machines
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
Introduction. Application Security. Reasons For Reverse Engineering. This lecture. Java Byte Code
Introduction Application Security Tom Chothia Computer Security, Lecture 16 Compiled code is really just data which can be edit and inspected. By examining low level code protections can be removed and
Virtualization Technologies
12 January 2010 Virtualization Technologies Alex Landau ([email protected]) IBM Haifa Research Lab What is virtualization? Virtualization is way to run multiple operating systems and user applications on
Instruction Set Design
Instruction Set Design Instruction Set Architecture: to what purpose? ISA provides the level of abstraction between the software and the hardware One of the most important abstraction in CS It s narrow,
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
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
Introduction. Figure 1 Schema of DarunGrim2
Reversing Microsoft patches to reveal vulnerable code Harsimran Walia Computer Security Enthusiast 2011 Abstract The paper would try to reveal the vulnerable code for a particular disclosed vulnerability,
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
BARF: A multiplatform open source Binary Analysis and Reverse engineering Framework
BARF: A multiplatform open source Binary Analysis and Reverse engineering Framework Christian Heitman and Iván Arce Fundación Sadosky, {cnheitman,iarce}@fundacionsadosky.org.ar Abstract. The analysis of
esrever gnireenigne tfosorcim seiranib
esrever gnireenigne tfosorcim seiranib Alexander Sotirov [email protected] CanSecWest / core06 Reverse Engineering Microsoft Binaries Alexander Sotirov [email protected] CanSecWest / core06 Overview
Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.
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)
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
The Beast is Resting in Your Memory On Return-Oriented Programming Attacks and Mitigation Techniques To appear at USENIX Security & BlackHat USA, 2014
Intelligent Things, Vehicles and Factories: Intel Workshop on Cyberphysical and Mobile Security 2014, Darmstadt, June 11 The Beast is Resting in Your Memory On Return-Oriented Programming Attacks and Mitigation
Visualizing Information Flow through C Programs
Visualizing Information Flow through C Programs Joe Hurd, Aaron Tomb and David Burke Galois, Inc. {joe,atomb,davidb}@galois.com Systems Software Verification Workshop 7 October 2010 Joe Hurd, Aaron Tomb
Heap-based Buffer Overflow Vulnerability in Adobe Flash Player
Analysis of Zero-Day Exploit_Issue 03 Heap-based Buffer Overflow Vulnerability in Adobe Flash Player CVE-2014-0556 20 December 2014 Table of Content Overview... 3 1. CVE-2014-0556 Vulnerability... 3 2.
Stitching the Gadgets On the Ineffectiveness of Coarse-Grained Control-Flow Integrity Protection
USENIX Security Symposium 2014, San Diego, CA, USA Stitching the Gadgets On the Ineffectiveness of Coarse-Grained Control-Flow Integrity Protection Lucas Davi Intel Collaborative Research Institute for
W4118 Operating Systems. Junfeng Yang
W4118 Operating Systems Junfeng Yang Outline Linux overview Interrupt in Linux System call in Linux What is Linux A modern, open-source OS, based on UNIX standards 1991, 0.1 MLOC, single developer Linus
Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture
Last Class: OS and Computer Architecture System bus Network card CPU, memory, I/O devices, network card, system bus Lecture 3, page 1 Last Class: OS and Computer Architecture OS Service Protection Interrupts
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
Software Fingerprinting for Automated Malicious Code Analysis
Software Fingerprinting for Automated Malicious Code Analysis Philippe Charland Mission Critical Cyber Security Section October 25, 2012 Terms of Release: This document is approved for release to Defence
How To Trace
CS510 Software Engineering Dynamic Program Analysis Asst. Prof. Mathias Payer Department of Computer Science Purdue University TA: Scott A. Carr Slides inspired by Xiangyu Zhang http://nebelwelt.net/teaching/15-cs510-se
Technical Properties. Mobile Operating Systems. Overview Concepts of Mobile. Functions Processes. Lecture 11. Memory Management.
Overview Concepts of Mobile Operating Systems Lecture 11 Concepts of Mobile Operating Systems Mobile Business I (WS 2007/08) Prof Dr Kai Rannenberg Chair of Mobile Business and Multilateral Security Johann
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.
Dsc+Mock: A Test Case + Mock Class Generator in Support of Coding Against Interfaces
Dsc+Mock: A Test Case + Mock Class Generator in Support of Coding Against Interfaces Mainul Islam, Christoph Csallner Computer Science and Engineering Department University of Texas at Arlington Arlington,
µz An Efficient Engine for Fixed points with Constraints
µz An Efficient Engine for Fixed points with Constraints Kryštof Hoder, Nikolaj Bjørner, and Leonardo de Moura Manchester University and Microsoft Research Abstract. The µz tool is a scalable, efficient
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
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
A Tiny Guide to Programming in 32-bit x86 Assembly Language
CS308, Spring 1999 A Tiny Guide to Programming in 32-bit x86 Assembly Language by Adam Ferrari, [email protected] (with changes by Alan Batson, [email protected] and Mike Lack, [email protected])
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
ò Paper reading assigned for next Thursday ò Lab 2 due next Friday ò What is cooperative multitasking? ò What is preemptive multitasking?
Housekeeping Paper reading assigned for next Thursday Scheduling Lab 2 due next Friday Don Porter CSE 506 Lecture goals Undergrad review Understand low-level building blocks of a scheduler Understand competing
Model Checking: An Introduction
Announcements Model Checking: An Introduction Meeting 2 Office hours M 1:30pm-2:30pm W 5:30pm-6:30pm (after class) and by appointment ECOT 621 Moodle problems? Fundamentals of Programming Languages CSCI
Instruction Set Architecture (ISA)
Instruction Set Architecture (ISA) * Instruction set architecture of a machine fills the semantic gap between the user and the machine. * ISA serves as the starting point for the design of a new machine
CHAPTER 6 TASK MANAGEMENT
CHAPTER 6 TASK MANAGEMENT This chapter describes the IA-32 architecture s task management facilities. These facilities are only available when the processor is running in protected mode. 6.1. TASK MANAGEMENT
Windows XP SP3 Registry Handling Buffer Overflow
Windows XP SP3 Registry Handling Buffer Overflow by Matthew j00ru Jurczyk and Gynvael Coldwind Hispasec 1. Basic Information Name Windows XP SP3 Registry Handling Buffer Overflow Class Design Error Impact
Systems Design & Programming Data Movement Instructions. Intel Assembly
Intel Assembly Data Movement Instruction: mov (covered already) push, pop lea (mov and offset) lds, les, lfs, lgs, lss movs, lods, stos ins, outs xchg, xlat lahf, sahf (not covered) in, out movsx, movzx
COS 318: Operating Systems
COS 318: Operating Systems OS Structures and System Calls Andy Bavier Computer Science Department Princeton University http://www.cs.princeton.edu/courses/archive/fall10/cos318/ Outline Protection mechanisms
Building Embedded Systems
All Rights Reserved. The contents of this document cannot be reproduced without prior permission of the authors. Building Embedded Systems Chapter 5: Maintenance and Debugging Andreas Knirsch [email protected]
Operating System Overview. Otto J. Anshus
Operating System Overview Otto J. Anshus A Typical Computer CPU... CPU Memory Chipset I/O bus ROM Keyboard Network A Typical Computer System CPU. CPU Memory Application(s) Operating System ROM OS Apps
Towards practical reactive security audit using extended static checkers 1
Towards practical reactive security audit using extended static checkers 1 Julien Vanegue 1 Shuvendu K. Lahiri 2 1 Bloomberg LP, New York 2 Microsoft Research, Redmond May 20, 2013 1 The work was conducted
Understanding a Simple Operating System
Understanding a Simple Operating System SOS is a Simple Operating System designed for the 32- bit x86 architecture. Its purpose is to understand basic concepts of operating system design. These notes are
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
2) Write in detail the issues in the design of code generator.
COMPUTER SCIENCE AND ENGINEERING VI SEM CSE Principles of Compiler Design Unit-IV Question and answers UNIT IV CODE GENERATION 9 Issues in the design of code generator The target machine Runtime Storage
Obfuscation: know your enemy
Obfuscation: know your enemy Ninon EYROLLES [email protected] Serge GUELTON [email protected] Prelude Prelude Plan 1 Introduction What is obfuscation? 2 Control flow obfuscation 3 Data flow
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
Computer Architectures
Computer Architectures 2. Instruction Set Architectures 2015. február 12. Budapest Gábor Horváth associate professor BUTE Dept. of Networked Systems and Services [email protected] 2 Instruction set architectures
Combining Static Analysis and Test Generation for C Program Debugging
Combining Static Analysis and Test Generation for C Program Debugging Omar Chebaro 1,2, Nikolai Kosmatov 1, Alain Giorgetti 2,3, and Jacques Julliand 2 1 CEA, LIST, Software Safety Laboratory, PC 94, 91191
Practical taint analysis for protecting buggy binaries
Practical taint analysis for protecting buggy binaries So your exploit beats ASLR/DEP? I don't care Erik Bosman Traditional Stack Smashing buf[16] GET / HTTP/1.100baseretnarg1arg2 Traditional
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
Upcompiling Legacy Code to Java
Master Thesis Upcompiling Legacy Code to Java Author Urs Fässler Supervisor ETH Zürich UC Irvine Prof. Dr. Thomas Gross Prof. Dr. Michael Franz Dr. Stefan Brunthaler Dr. Per Larsen September 7, 2012 Urs
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
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
Secure Software Programming and Vulnerability Analysis
Secure Software Programming and Vulnerability Analysis Christopher Kruegel [email protected] http://www.auto.tuwien.ac.at/~chris Testing and Source Code Auditing Secure Software Programming 2 Overview
Unix Security Technologies. Pete Markowsky <peterm[at] ccs.neu.edu>
Unix Security Technologies Pete Markowsky What is this about? The goal of this CPU/SWS are: Introduce you to classic vulnerabilities Get you to understand security advisories Make
GameTime: A Toolkit for Timing Analysis of Software
GameTime: A Toolkit for Timing Analysis of Software Sanjit A. Seshia and Jonathan Kotker EECS Department, UC Berkeley {sseshia,jamhoot}@eecs.berkeley.edu Abstract. Timing analysis is a key step in the
Finding Execution Faults in Dynamic Web Application
International Journal of Information and Computation Technology. ISSN 0974-2239 Volume 4, Number 5 (2014), pp. 445-452 International Research Publications House http://www. irphouse.com /ijict.htm Finding
Debugging A MotoHawk Application using the Application Monitor
CONTROL SYSTEM SOLUTIONS Debugging A MotoHawk Application using the Application Monitor Author(s): New Eagle Consulting 3588 Plymouth Road, #274 Ann Arbor, MI 48105-2603 Phone: +1 (734) 929-4557 Ben Hoffman
Chapter 3 Operating-System Structures
Contents 1. Introduction 2. Computer-System Structures 3. Operating-System Structures 4. Processes 5. Threads 6. CPU Scheduling 7. Process Synchronization 8. Deadlocks 9. Memory Management 10. Virtual
Cloud9 Parallel Symbolic Execution for Automated Real-World Software Testing
Cloud9 Parallel Symbolic Execution for Automated Real-World Software Testing Stefan Bucur, Vlad Ureche, Cristian Zamfir, George Candea School of Computer and Communication Sciences Automated Software Testing
CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study
CS 377: Operating Systems Lecture 25 - Linux Case Study Guest Lecturer: Tim Wood Outline Linux History Design Principles System Overview Process Scheduling Memory Management File Systems A review of what
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
Fighting malware on your own
Fighting malware on your own Vitaliy Kamlyuk Senior Virus Analyst Kaspersky Lab [email protected] Why fight malware on your own? 5 reasons: 1. Touch 100% of protection yourself 2. Be prepared
Compiler Construction
Compiler Construction Lecture 1 - An Overview 2003 Robert M. Siegfried All rights reserved A few basic definitions Translate - v, a.to turn into one s own language or another. b. to transform or turn from
Encryption Wrapper. on OSX
Encryption Wrapper on OSX Overview OSX Kernel What is an Encryption Wrapper? Project Implementation OSX s Origins and Design NeXTSTEP Legacy NextStep v1 NextStep v3.3 Mac OS X Jobs creates NeXT Apple acquisition
Pattern Insight Clone Detection
Pattern Insight Clone Detection TM The fastest, most effective way to discover all similar code segments What is Clone Detection? Pattern Insight Clone Detection is a powerful pattern discovery technology
A Static Analyzer for Large Safety-Critical Software. Considered Programs and Semantics. Automatic Program Verification by Abstract Interpretation
PLDI 03 A Static Analyzer for Large Safety-Critical Software B. Blanchet, P. Cousot, R. Cousot, J. Feret L. Mauborgne, A. Miné, D. Monniaux,. Rival CNRS École normale supérieure École polytechnique Paris
TitanMist: Your First Step to Reversing Nirvana TitanMist. mist.reversinglabs.com
TitanMist: Your First Step to Reversing Nirvana TitanMist mist.reversinglabs.com Contents Introduction to TitanEngine.. 3 Introduction to TitanMist 4 Creating an unpacker for TitanMist.. 5 References and
The Click2NetFPGA Toolchain. Teemu Rinta-aho, Mika Karlstedt, Madhav P. Desai USENIX ATC 12, Boston, MA, 13 th of June, 2012
The Click2NetFPGA Toolchain Teemu Rinta-aho, Mika Karlstedt, Madhav P. Desai USENIX ATC 12, Boston, MA, 13 th of June, 2012 Click2NetFPGA We have explored the possibilities of High Level Synthesis (HLS)
Custom Penetration Testing
Custom Penetration Testing Compromising a Vulnerability through Discovery and Custom Exploitation Stephen Sims Advanced Penetration Testing - 2009 SANS 1 Objectives Penetration Testing Precompiled Tools
Dongwoo Kim : Hyeon-jeong Lee s Husband
2/ 32 Who we are Dongwoo Kim : Hyeon-jeong Lee s Husband Ph.D. Candidate at Chungnam National University in South Korea Majoring in Computer Communications & Security Interested in mobile hacking, digital
Attacking Obfuscated Code with IDA Pro. Chris Eagle
Attacking Obfuscated Code with IDA Pro Chris Eagle Outline Introduction Operation Demos Summary 2 First Order Of Business MOVE UP AND IN! There is plenty of room up front I can't increase the font size
Binary Code Extraction and Interface Identification for Security Applications
Binary Code Extraction and Interface Identification for Security Applications Juan Caballero Noah M. Johnson Stephen McCamant Dawn Song UC Berkeley Carnegie Mellon University Abstract Binary code reuse
Towards Automatic Discovery of Deviations in Binary Implementations with Applications to Error Detection and Fingerprint Generation
Towards Automatic Discovery of Deviations in Binary Implementations with Applications to Error Detection and Fingerprint Generation David Brumley, Juan Caballero, Zhenkai Liang, James Newsome, and Dawn
I Control Your Code Attack Vectors Through the Eyes of Software-based Fault Isolation. Mathias Payer, ETH Zurich
I Control Your Code Attack Vectors Through the Eyes of Software-based Fault Isolation Mathias Payer, ETH Zurich Motivation Applications often vulnerable to security exploits Solution: restrict application
