IVIZ TECHNO SOLUTIONS PVT. LTD. Puncture. Automatic Program Analysis using Dynamic Binary Instrumentation. Sunil Kumar

Size: px
Start display at page:

Download "IVIZ TECHNO SOLUTIONS PVT. LTD. Puncture. Automatic Program Analysis using Dynamic Binary Instrumentation. Sunil Kumar sunil.kumar@ivizsecurity."

Transcription

1 IVIZ TECHNO SOLUTIONS PVT. LTD. Puncture Automatic Program Analysis using Dynamic Binary Instrumentation Sunil Kumar 2/14/2011 Dynamic Binary Instrumentation involves execution of a given program in a controlled environment sometimes over a VM while tracing its runtime context and analyzing the program behavior by introduction of custom instrumentation code at various point during the lifetime of the program. In this paper we use PIN, a heavyweight instrumentation framework developed by Intel in order to perform behavior analysis of binary programs automatically at runtime.

2 Abstract Some of the major challenges in Software Security Research include Vulnerability Identification/Discovery, Vulnerability Analysis, Exploit Development and Malicious Software Analysis. Identification of vulnerability in software requires knowledge of unintended or weakly coded parts of the software. One possible way to identify them is see the use of functions with well-known bugs like strcpy. In exploit development, one need to know what input triggers the bug and how was it passed to the program. A malware is a piece of code which performs unwanted behaviour when executes. During analysis it is very important to know what this unwanted behaviour is. In this paper we have attempt to address these challenges using PIN, a Dynamic Binary Instrumentation (DBI) engine developed by Intel Corporation. Although PIN supports many platforms, our discussion will be mostly in context of Windows environment. Finally we introduce a custom tool which we developed mainly for the purpose of learning and understanding the internals of PIN that can perform automatic behaviour analysis of programs. Introduction Using debugger is one of the commonly used techniques for dynamic program analysis. Analysts attach debuggers to programs and set breakpoints at various addresses to identify which functions with what parameters are called to perform required tasks. This technique is used in vulnerability identification to identify usage of known vulnerable functions and the parameters. Exploit writers use this technique to identify the actual input that triggered the bug and the source of input by analysing runtime memory dumps. One problem with debuggers is that most of the time they use well known APIs to function and malware writers use anti-debug techniques to make debugging very difficult. This paper suggests PIN, a Dynamic Binary Instrumentation Engine for performing analysis of programs as an alternative to debuggers. PIN does not use techniques used by debuggers like setting breakpoints etc. so is capable of circumventing most anti-debug techniques. We developed a PinTool called Puncture to records all the activities performed with Windows registry, files, and network connections. Pin APIs are explained in the context of Puncture for better understanding.

3 Binary Instrumentation Instrumentation is a technique of inserting extra code into an application to observe its behaviour. Instrumentation can be performed at various stages: at source code level, compile time, post link time or at run time. Binary Instrumentation is a way of analysing behaviour of a program by inserting extra code at certain places in the program at runtime. It is very useful where source code is not available and one cannot insert extra lines and recompile it. A typical example is Microsoft Windows Platform where source code is typically not available and kernel interface cannot be adopted to support observability. Binary instrumentation created a new version of binary by inserting instrumentation code in it. For example, the binary can be instrumented to insert code before every instruction with memory reference to simulate and control cache and memory operations. With the features available with binary instrumentation, it is possible to do complete system emulation by providing custom system call interfaces, system and user binaries, devices etc. to provide a sandbox like environment to the binary in question. This makes the analysis of malwares possible without compromising the real host system. PIN Pin is a Dynamic Binary Instrumentation Engine developed by Intel Corporation. Pin is based on post-link optimizer Spike. Pin can perform software instrumentation of Windows, Linux and MacOS platforms on 32bit or 64bit architecture. Pin is the underlying infrastructure for commercial products like Intel Parallel Studio tools. Pin is provided free of charge from Intel at Pin performs the instrumentation by running unmodified application in a process-level virtual machine [1]. Pin intercepts the execution of application at first instruction and inserts the instrumentation code as and when required. The application with inserted instrumentation code is cached for subsequent executions as well to avoid instrumentation overhead. Unlike DLL injection used in exploit development, no new thread is created to run the code of PinVM or PinTool. They are executed by existing application threads only. However PinTool can create new threads if required. Pin provides a C/C++ API to write custom instrumentation code known as PinTools in form libraries (DLL files on Windows) and can be built by most common compilers. PinTools usually have two kinds of routines: Instrumentation Routines and Analysis Routines. An instrumentation routine identifies the point or conditions where instrumentation code needs to be inserted and a pointer to the analysis routine. Instrumentation routines are executed once in lifecycle of process and define when a PinTool should gain the control of

4 execution. Instrumentation happens on only and all instructions that are ever executed. Pin can even instrument self-modifying-code because instructions are instrumented in just before they executed (Just-In-Time mode). An analysis routine is the piece of code which is executed when the specific condition or point is hit during execution of program. These routines are executed whenever the when is triggered. It defines what to do when PinTool gains execution control. (Img1: Workflow of Pin on Windows Platform [1].) The execution of Pin begins with the launcher process (pin.exe) which injects Pin VMM (Virtual Machine Monitor) (pinvm.dll) and pin-tool.dll in application s address space. Pin keeps the control of execution by copying application and instrumentation code to software code cache and rewriting braches so that control remain in the cache. The program is always executed from the cache and original program is kept for reference. As a dynamic instrumentation system and to be useful in behaviour analysis of programs Pin provides as much observability as it can, yet providing enough isolation so that actual behaviour of the program is unchanged. It notifies Thread/Process Creation/Destruction, Library Load/Unload. As a process level VM, Pin has full control on everything executed in User space but loses control in kernel mode. To manage the execution of system call and regain the control after returning from kernel mode, Pin monitors some of the system calls. Every Pin monitored

5 system call has a wrapper function in ntdll.dll system library that loads the system call number and invokes the system call. Pin captures the system call number and arguments by attaching debugger to a dummy process and single stepping through monitored system calls wrapper functions [1]. It is not possible to monitor all the system calls because many system calls are undocumented feature on Windows and there is not always a one-to-one mapping of wrapper functions. To handle this situation Pin implements a System Gate to intercept the system calls and switches to VMM when an int 2e or sysenter instruction on 32bit platform or syscall on 64bit architecture is encountered [1]. Pin provides a debugging interface also where one can attach debugger of choice to debug the running process under Pin. Extending the features of debugger is also available through DebugAPI. Pin Instrumentation API: Pin provides two modes of Instrumentation: JIT (Just In Time) Mode and Probe Mode. In JIT mode the instrumented application s code and instrumentation code is generated and cached in the software cache for execution. This provides more control over the execution because code is generated by Pin-VM. JIT is the preferred mode of Instrumentation. In Probe mode the instrumented binary is modified in place. Because the code is not copied to code cache, the instrumentation is a bit faster with the cost of losing some functionality and granularity is limited to Routine level. Five levels of instrumentation granularities are provided by Pin: 1. INS (Instruction Level):-- Instruction is the unit of execution that can be addressed individually on given platform. 2. BBL (Basic Block Level):-- Basic Block is a set of Instructions start with one entry point and ends on first control transfer instruction [2]. 3. Trace (Trace Level):-- Trace is a sequence of continuous instruction with one entry point [2]. A trace starts usually from a target of a jump and ends at an unconditional jump instruction. 4. RTN (Routine Level):-- Routine level instrumentation allows instrumentation of methods or functions in defined in the application or its dependencies. This is achieved by utilizing the symbol information available in export section and in external debug symbol (.pdb) files. 5. IMG (Image Level):-- Image level instrumentation allows handling load/unload events for Images linked to the application and navigating sections of images loaded.

6 Puncture This section describes a small subset of the functions made available to PinTool writers through Pin API in the context of a PinTool named Puncture created by us to log activities performed by the application. On Windows system a fairly good picture of the behaviour of a given application can be developed by monitoring its interaction with file system, registry, other processes and the network [8]. To log all these activities we created 3 modules to wrap commonly used functions of following APIs: RegistryAPI FIleAPI NetworkAPI Details will be discussed later in this section. As discussed earlier, PinTools are basically libraries linked dynamically to application i.e. a DLL file on Windows. All the PinTools are must export their main function. So C code of a minimal PinTool that does not perform any instrumentation is listed below: #include<pin.h> int main(int argc, char * argv[]) if(pin_init(argc,argv)) return -1; PIN_StartProgram(); return 0; PIN_Init() initializes the instrumentation engine and passes the initial arguments, one of them is the application name. PIN_StartProgram() start the actual execution of application and never returns. Hence all instrumentation tasks are performed before calling PIN_StartProgram. If symbol information is required as in the case of Routine level instrumentation, PIN_InitSymbols() is called even before PIN_Init() to initialize Symbol support. Symbols are retrieved from standard symbol locations. Pin uses DBGHELP.DLL to provide symbol support and perhaps is the only external dependency. Most of the instrumentation routines are actually callback routines called on specific events, for example to perform the cleanup tasks like closing log files, network connections etc. a

7 Fini callback routine is registered using PIN_AddFiniFunction(fn, VOID* v) which is called after the analysis is finished. In order to capture the arguments passed and their corresponding return values to function called by application and to be able to log them, we used two approaches: Replace the old signature of functions with custom signatures. Register callback routines just before function starts and function returns. All routine level instrumentations are performed when Image that contains the routine is loaded. A callback for image load is registered by calling IMG_AddInstrumentFunction (IMG img, VOID *v) where parameter img is the object representing the loaded image in memory and v is pointer to an optional user defined argument passed when it was called. When Image is loaded we can get the name/path of image by calling IMG_Name(img) as std::string object. Once we have identified the right image for instrumentation by comparing names, we iterate over symbols in image to identify the routines we required to instrument. Names retrieved from symbols may not exactly match name of the routines we need to instrument because of name-mangling of overloaded functions by compiler to keep them unique. To handle name mangling, Pin provides PIN_UndecorateSymbolName to un-mangle the names. Once we have identified the name, we obtain RTN object of the routine using RTN_FindByAddress (IMG_LowAddress(img) + SYM_Value(sym)). SYM_Value returns the offset of routine from Image Base Address i.e. IMG_LowAddress. Following code listing is part of the pintool to replace the signature of socket function from ws2_32.dll. int main(int argc, char *argv[])... IMG_AddInstrumentFunction(Image, 0); PIN_AddFiniFunction(Fini,0); PIN_StartProgram(); return 0; void Image(IMG img, void *v) const char *lpimagename = StripPath(IMG_Name(img).c_str());... //Instrument Registry API if(!_strnicmp(lpimagename, "ADVAPI32.DLL",15)) Image_WS2_32(img,v);

8 void Image_WS2_32(IMG img, void *v) RTN rtn; PROTO proto; for(sym sym = IMG_RegsymHead(img); SYM_Valid(sym); sym = SYM_Next(sym)) string sundecfuncname = PIN_UndecorateSymbolName(SYM_Name(sym), UNDECORATION_NAME_ONLY); if("socket" == sundecfuncname) rtn = RTN_FindByAddress(IMG_LowAddress(img)+SYM_Value(sym)); if(rtn_valid(rtn)) proto = PROTO_Allocate(PIN_PARG(WINDOWS::SOCKET), CALLINGSTD_STDCALL, "socket", PIN_PARG(int), PIN_PARG(int), PIN_PARG(int), PIN_PARG_END()); RTN_ReplaceSignature(rtn, (AFUNPTR) jwsocket, IARG_PROTOTYPE, proto,iarg_context, IARG_ORIG_FUNCPTR, IARG_FUNCARG_ENTRYPOINT_VALUE,0,IARG_FUNCARG_ENTRYPOINT_VALUE, 1, IARG_FUNCARG_ENTRYPOINT_VALUE, 2, IARG_END);... PROTO_Free(proto); To replace signature of routine, a prototype object (PROTO) is allocated and passed to RTN_ReplaceSignature. PROTO_Allocate takes rerurn type, calling convention of the target routine, name of the routine and list of parameters. Parameters are in the pair of Type&Size. PIN_PARG macro is provided to create Type&Size pair of arguments. End of list is marked by PIN_PAG_END(). In JIT mode signature is replaces using RTN_ReplaceSignature allows us to add new or remove old parameters of the routine. This is not allowed in probe mode, new signature must match original signature. RTN_ReplaceSignature takes replaced RTN object (rtn), pointer to new routine ((AFUNPTR)jwSocket), prototype of replaced routine (IARG_PROTOTYPE, proto)) and list of parameters for the new routine ending with IARG_END and returns pointer to original routine. Other parameters are explained below: IARG_CONTEXT: pointer to the execution context (CONTEXT*). IARG_ORIG_FUNCPTR: pointer to the original routine (AFUNPTR). IARG_FUNCARG_ENTRYPOINT_VALUE, 0: Value of the first parameter passed to the routine. Needs to type casted properly before use.... is the place holder for (IARG_FUNCARG_ENTRYPOINT_VALUE, n) where n is the zero-based index of original parameter. Order of original parameters may change or parameters can be skipped if not required for analysis function.

9 It is very common to call the original routine from analysis routine. This can be done using PIN_CallApplicationFunction as described below in jwsocket analysis function which replaced original socket function earlier. int jwconnect(context *ctxt, AFUNPTR fporigin, WINDOWS::SOCKET socket, WINDOWS::PSOCKADDR psocketname, int inamelen) PIN_CallApplicationFunction(ctxt, PIN_ThreadId(), CALLINGSTD_STDCALL, fporigin, PIN_PARG(int*), &iresult, PIN_PARG(WINDOWS::SOCKET), socket, PIN_PARG(WINDOWS::PSOCKADDR), psocketname, PIN_PARG(int), inamelen, PIN_PARG_END()); The parameters are explained below: ctxt: pointer to the context of the execution. PIN_ThreadId() returns zero-based id of the executing thread assigned by Pin and is used here as Id of thread that will execute the function. CALLINGSTD_STDCALL: calling convention of the function fporigin: address of the function to execute. PIN_PARG(int*), &iresult: address of the int variable in Type,Size,Value format where return value will be stored. PIN_PARG(TypeOf(N)),N,..., PIN_PARG_END(): List of input parameters passed in form of Type,Size,Value to the routine. End of list is marked with PIN_PARG_END. Another approach of doing this is inserting analysis calls on the boundaries of routine. This approach is described in following code listing where SetFilePointer method from kernel32.dll is instrumented. else if("setfilepointer" == sundecfuncname) rtn = RTN_FindByAddress(IMG_LowAddress(img)+SYM_Value(sym)); if(rtn_valid(rtn)) RTN_Open(rtn); RTN_InsertCall(rtn, IPOINT_BEFORE, (AFUNPTR) b4setfilepointer, IARG_ADDRINT, FALSE, IARG_FUNCARG_ENTRYPOINT_VALUE, 0, IARG_FUNCARG_ENTRYPOINT_VALUE, 1, IARG_FUNCARG_ENTRYPOINT_VALUE, 3, IARG_END); RTN_InsertCall(rtn, IPOINT_AFTER, (AFUNPTR) OnFileReturn, IARG_ADDRINT, SETFILE_PTR, IARG_ADDRINT, ' ', IARG_FUNCRET_EXITPOINT_VALUE, IARG_END); RTN_Close(rtn);

10 Challenges and Limitations First challenge we have encountered with Pin was control on I/O. In instrumentation, console I/O is usually gets locked by application once PIN_StartProgram is called hence is not available to PinTool. In the case of GUI application, we couldn t see a single line of output on console by PinTool. The only reliable way of handling this was File I/O, which is recommended in Pin documentation. Another problem with I/O was that we need to Open all files preferably in main function and is not allowed in Analysis routines. So it is not possible to create a per thread log file unless the number of threads application will create is known before instrumentation begins. Pin does not recommend using Platform API directly in PinTools. Using RTN_InsertCal(..., IPOINT_AFTER,...,IARG_FUNCARG_ENTRYPOINT_VALUE,...) to retrieve value of parameters passed by reference after function returns, mostly resulted in incorrect values. Using RTN_ReplaceSignature is the reliable way in this scenario. With the Windows APIs that result Handle e.g CreateFile instead of a primitive type like int, float etc. analysis routines received 0 or Null handles when RTN_InsertCall(...,IPOINT_AFTER,..., IARG_FUNCRET_EXITPOINT_VALUE,...) while RTN_ReplaceSignature returned correct value. Using RTN_InsertCall(...,IPOINT_AFTER,...) sometimes result in more calls of analysis function than expected because Pin finds and instrument all the RET instruction in routine. Indentifying right Windows API to for instrumentation is another big challenge. Windows mostly provides two versions of same function; a Unicode version (suffix W ) and an ASCII version (suffix A ) while developers call function with no suffix, that is replaced based on Project s build environment. In instrumentation PinTool must instrument the function present in binary or instrument both of them. Some Unicode version of function internally calls ASCII version or vice-versa; in this case we might see more calls than expected. Pin loses control when program is running in kernel mode hence might not be good enough to analyse rootkits written mostly to work in kernel mode.

11 Conclusions Although Dynamic Binary Instrumentation tools like Pin are developed primarily for analysing behaviour of program in different context like code coverage, deadlock detection etc., they can very much be used for identifying security related issues also, like file and network activities, system modification or usage of vulnerable APIs in development. Researchers can use these tools to implement techniques like Taint-analysis, to identify vulnerabilities and develop exploits. This becomes more useful when using Debugger is not feasible due to anti-debugging techniques in malwares because Pin does not use platform s debug API for instrumentation. References [1]. Dynamic Program Analysis of Microsoft Windows Application Alex Skaletsky, Tevi Devor, Nadav Chachmon, Robert Cohn, Kim Hazelwood, Vladimir Vladimirov, Moshe Bach [2]. Pin: Intel s Dynamic Binary Instrumentation Engine (CGO2010).Robert Cohn, Tevi Devor [3]. Analysing Parallel Programs with Pin. Moshe Bach, Mark Charney, Robert Cohn, Elena Demikhovsky, Tevi Devor, Kim Hazelwood, Aamer Jaleel, Chi-Keung Luk, Gail Lyons, Harish Patil, and Ady Tal [4]. Controlling Program Execution through Binary Instrumentation. Heidi Pan, Krste Asanovi c, Robert Cohn, Chi-Keung Luk [5]. Dynamic Binary Instrumentation and Tools for Supporting Multi-Threaded Applications. Mosche Bach [6]. Pin: Building Customized Program Analysis Tools with Dynamic Instrumentation. Chi-Keung Luk, Robert Cohn, Robert Muth, Harish Patil, Artur Klauser, Geoff Lowney, StevenWallace, Vijay Janapa Reddi, Kim Hazelwood [7]. Hands-on Pin For Architecture, Operating system and Program Analysis.Kim Hazelwood, Vijay Janapa Reddi [8]. Practical Malware Analysis (BlackHat DC 2007).Kris Kendall [9]. Pin: Pin 2.8 User Guide.

Dynamic Program Analysis of Microsoft Windows Applications

Dynamic Program Analysis of Microsoft Windows Applications Dynamic Program Analysis of Microsoft Windows Applications Alex Skaletsky, Tevi Devor, Nadav Chachmon, Robert Cohn, Kim Hazelwood, Vladimir Vladimirov, Moshe Bach Intel Corporation University of Virginia

More information

and Symbiotic Optimization

and Symbiotic Optimization Process Virtualization and Symbiotic Optimization Kim Hazelwood ACACES Summer School July 2009 About Your Instructor Currently Assistant Professor at University of Virginia Faculty Consultant at Intel

More information

LASTLINE WHITEPAPER. In-Depth Analysis of Malware

LASTLINE WHITEPAPER. In-Depth Analysis of Malware LASTLINE WHITEPAPER In-Depth Analysis of Malware Abstract Malware analysis is the process of determining the purpose and functionality of a given malware sample (such as a virus, worm, or Trojan horse).

More information

x86 ISA Modifications to support Virtual Machines

x86 ISA Modifications to support Virtual Machines x86 ISA Modifications to support Virtual Machines Douglas Beal Ashish Kumar Gupta CSE 548 Project Outline of the talk Review of Virtual Machines What complicates Virtualization Technique for Virtualization

More information

Detecting the Presence of Virtual Machines Using the Local Data Table

Detecting the Presence of Virtual Machines Using the Local Data Table Detecting the Presence of Virtual Machines Using the Local Data Table Abstract Danny Quist {[email protected]} Val Smith {[email protected]} Offensive Computing http://www.offensivecomputing.net/

More information

Multi-core Programming System Overview

Multi-core Programming System Overview Multi-core Programming System Overview Based on slides from Intel Software College and Multi-Core Programming increasing performance through software multi-threading by Shameem Akhter and Jason Roberts,

More information

Monitoring, Tracing, Debugging (Under Construction)

Monitoring, Tracing, Debugging (Under Construction) Monitoring, Tracing, Debugging (Under Construction) I was already tempted to drop this topic from my lecture on operating systems when I found Stephan Siemen's article "Top Speed" in Linux World 10/2003.

More information

Dynamic analysis of malicious code

Dynamic analysis of malicious code J Comput Virol (2006) 2:67 77 DOI 10.1007/s11416-006-0012-2 ORIGINAL PAPER Dynamic analysis of malicious code Ulrich Bayer Andreas Moser Christopher Kruegel Engin Kirda Received: 13 January 2006 / Accepted:

More information

Chapter 14 Analyzing Network Traffic. Ed Crowley

Chapter 14 Analyzing Network Traffic. Ed Crowley Chapter 14 Analyzing Network Traffic Ed Crowley 10 Topics Finding Network Based Evidence Network Analysis Tools Ethereal Reassembling Sessions Using Wireshark Network Monitoring Intro Once full content

More information

Automatic Logging of Operating System Effects to Guide Application-Level Architecture Simulation

Automatic Logging of Operating System Effects to Guide Application-Level Architecture Simulation Automatic Logging of Operating System Effects to Guide Application-Level Architecture Simulation Satish Narayanasamy, Cristiano Pereira, Harish Patil, Robert Cohn, and Brad Calder Computer Science and

More information

Virtual machines and operating systems

Virtual machines and operating systems V i r t u a l m a c h i n e s a n d o p e r a t i n g s y s t e m s Virtual machines and operating systems Krzysztof Lichota [email protected] A g e n d a Virtual machines and operating systems interactions

More information

Transparent Monitoring of a Process Self in a Virtual Environment

Transparent Monitoring of a Process Self in a Virtual Environment Transparent Monitoring of a Process Self in a Virtual Environment PhD Lunchtime Seminar Università di Pisa 24 Giugno 2008 Outline Background Process Self Attacks Against the Self Dynamic and Static Analysis

More information

Eugene Tsyrklevich. Ozone HIPS: Unbreakable Windows

Eugene Tsyrklevich. Ozone HIPS: Unbreakable Windows Eugene Tsyrklevich Eugene Tsyrklevich has an extensive security background ranging from designing and implementing Host Intrusion Prevention Systems to training people in research, corporate, and military

More information

Title: Bugger The Debugger - Pre Interaction Debugger Code Execution

Title: Bugger The Debugger - Pre Interaction Debugger Code Execution White Paper Title: Bugger The Debugger Pre Interaction Debugger Code Execution Prepared by: Brett Moore Network Intrusion Specialist, CTO SecurityAssessment.com Date: April 2005 Abstract The use of debuggers

More information

Hotpatching and the Rise of Third-Party Patches

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

More information

An Implementation Of Multiprocessor Linux

An Implementation Of Multiprocessor Linux An Implementation Of Multiprocessor Linux This document describes the implementation of a simple SMP Linux kernel extension and how to use this to develop SMP Linux kernels for architectures other than

More information

Debugging with TotalView

Debugging with TotalView Tim Cramer 17.03.2015 IT Center der RWTH Aachen University Why to use a Debugger? If your program goes haywire, you may... ( wand (... buy a magic... read the source code again and again and...... enrich

More information

Chapter 3 Operating-System Structures

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

More information

Full System Emulation:

Full System Emulation: Full System Emulation: Achieving Successful Automated Dynamic Analysis of Evasive Malware Christopher Kruegel Lastline, Inc. [email protected] 1 Introduction Automated malware analysis systems (or sandboxes)

More information

What s Cool in the SAP JVM (CON3243)

What s Cool in the SAP JVM (CON3243) What s Cool in the SAP JVM (CON3243) Volker Simonis, SAP SE September, 2014 Public Agenda SAP JVM Supportability SAP JVM Profiler SAP JVM Debugger 2014 SAP SE. All rights reserved. Public 2 SAP JVM SAP

More information

Debugging Multi-threaded Applications in Windows

Debugging Multi-threaded Applications in Windows Debugging Multi-threaded Applications in Windows Abstract One of the most complex aspects of software development is the process of debugging. This process becomes especially challenging with the increased

More information

Hypervisor-Based, Hardware-Assisted System Monitoring

Hypervisor-Based, Hardware-Assisted System Monitoring Horst Görtz Institute for IT-Security, Chair for System Security VMRay GmbH Hypervisor-Based, Hardware-Assisted System Monitoring VB2013 October 2-4, 2013 Berlin Carsten Willems, Ralf Hund, Thorsten Holz

More information

Automating Linux Malware Analysis Using Limon Sandbox Monnappa K A [email protected]

Automating Linux Malware Analysis Using Limon Sandbox Monnappa K A monnappa22@gmail.com Automating Linux Malware Analysis Using Limon Sandbox Monnappa K A [email protected] A number of devices are running Linux due to its flexibility and open source nature. This has made Linux platform

More information

Off-by-One exploitation tutorial

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

More information

Replication on Virtual Machines

Replication on Virtual Machines Replication on Virtual Machines Siggi Cherem CS 717 November 23rd, 2004 Outline 1 Introduction The Java Virtual Machine 2 Napper, Alvisi, Vin - DSN 2003 Introduction JVM as state machine Addressing non-determinism

More information

OMPT and OMPD: OpenMP Tools Application Programming Interfaces for Performance Analysis and Debugging

OMPT and OMPD: OpenMP Tools Application Programming Interfaces for Performance Analysis and Debugging OMPT and OMPD: OpenMP Tools Application Programming Interfaces for Performance Analysis and Debugging Alexandre Eichenberger, John Mellor-Crummey, Martin Schulz, Nawal Copty, John DelSignore, Robert Dietrich,

More information

Kernel comparison of OpenSolaris, Windows Vista and. Linux 2.6

Kernel comparison of OpenSolaris, Windows Vista and. Linux 2.6 Kernel comparison of OpenSolaris, Windows Vista and Linux 2.6 The idea of writing this paper is evoked by Max Bruning's view on Solaris, BSD and Linux. The comparison of advantages and disadvantages among

More information

FRONT FLYLEAF PAGE. This page has been intentionally left blank

FRONT FLYLEAF PAGE. This page has been intentionally left blank FRONT FLYLEAF PAGE This page has been intentionally left blank Abstract The research performed under this publication will combine virtualization technology with current kernel debugging techniques to

More information

Libmonitor: A Tool for First-Party Monitoring

Libmonitor: A Tool for First-Party Monitoring Libmonitor: A Tool for First-Party Monitoring Mark W. Krentel Dept. of Computer Science Rice University 6100 Main St., Houston, TX 77005 [email protected] ABSTRACT Libmonitor is a library that provides

More information

ELEC 377. Operating Systems. Week 1 Class 3

ELEC 377. Operating Systems. Week 1 Class 3 Operating Systems Week 1 Class 3 Last Class! Computer System Structure, Controllers! Interrupts & Traps! I/O structure and device queues.! Storage Structure & Caching! Hardware Protection! Dual Mode Operation

More information

How to Sandbox IIS Automatically without 0 False Positive and Negative

How to Sandbox IIS Automatically without 0 False Positive and Negative How to Sandbox IIS Automatically without 0 False Positive and Negative Professor Tzi-cker Chiueh Computer Science Department Stony Brook University [email protected] 2/8/06 Blackhat Federal 2006 1 Big

More information

Mobile Application Hacking for Android and iphone. 4-Day Hands-On Course. Syllabus

Mobile Application Hacking for Android and iphone. 4-Day Hands-On Course. Syllabus Mobile Application Hacking for Android and iphone 4-Day Hands-On Course Syllabus Android and iphone Mobile Application Hacking 4-Day Hands-On Course Course description This course will focus on the techniques

More information

MPLAB Harmony System Service Libraries Help

MPLAB Harmony System Service Libraries Help MPLAB Harmony System Service Libraries Help MPLAB Harmony Integrated Software Framework v1.08 All rights reserved. This section provides descriptions of the System Service libraries that are available

More information

How To Write Portable Programs In C

How To Write Portable Programs In C Writing Portable Programs COS 217 1 Goals of Today s Class Writing portable programs in C Sources of heterogeneity Data types, evaluation order, byte order, char set, Reading period and final exam Important

More information

Eliminate Memory Errors and Improve Program Stability

Eliminate Memory Errors and Improve Program Stability Eliminate Memory Errors and Improve Program Stability with Intel Parallel Studio XE Can running one simple tool make a difference? Yes, in many cases. You can find errors that cause complex, intermittent

More information

Database Application Developer Tools Using Static Analysis and Dynamic Profiling

Database Application Developer Tools Using Static Analysis and Dynamic Profiling Database Application Developer Tools Using Static Analysis and Dynamic Profiling Surajit Chaudhuri, Vivek Narasayya, Manoj Syamala Microsoft Research {surajitc,viveknar,manojsy}@microsoft.com Abstract

More information

System Structures. Services Interface Structure

System Structures. Services Interface Structure System Structures Services Interface Structure Operating system services (1) Operating system services (2) Functions that are helpful to the user User interface Command line interpreter Batch interface

More information

Introduction to Virtual Machines

Introduction to Virtual Machines Introduction to Virtual Machines Introduction Abstraction and interfaces Virtualization Computer system architecture Process virtual machines System virtual machines 1 Abstraction Mechanism to manage complexity

More information

Example of Standard API

Example of Standard API 16 Example of Standard API System Call Implementation Typically, a number associated with each system call System call interface maintains a table indexed according to these numbers The system call interface

More information

Detecting Malware With Memory Forensics. Hal Pomeranz SANS Institute

Detecting Malware With Memory Forensics. Hal Pomeranz SANS Institute Detecting Malware With Memory Forensics Hal Pomeranz SANS Institute Why Memory Forensics? Everything in the OS traverses RAM Processes and threads Malware (including rootkit technologies) Network sockets,

More information

KITES TECHNOLOGY COURSE MODULE (C, C++, DS)

KITES TECHNOLOGY COURSE MODULE (C, C++, DS) KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php [email protected] [email protected] Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL

More information

Runtime Monitoring, Performance Analysis

Runtime Monitoring, Performance Analysis Runtime Monitoring, Performance Analysis Peter Libič, Pavel Parízek DEPARTMENT OF DISTRIBUTED AND DEPENDABLE SYSTEMS http://d3s.mff.cuni.cz CHARLES UNIVERSITY PRAGUE Faculty of Mathematics and Physics

More information

Building Applications Using Micro Focus COBOL

Building Applications Using Micro Focus COBOL Building Applications Using Micro Focus COBOL Abstract If you look through the Micro Focus COBOL documentation, you will see many different executable file types referenced: int, gnt, exe, dll and others.

More information

White Paper. Java versus Ruby Frameworks in Practice STATE OF THE ART SOFTWARE DEVELOPMENT 1

White Paper. Java versus Ruby Frameworks in Practice STATE OF THE ART SOFTWARE DEVELOPMENT 1 White Paper Java versus Ruby Frameworks in Practice STATE OF THE ART SOFTWARE DEVELOPMENT 1 INTRODUCTION...3 FRAMEWORKS AND LANGUAGES...3 SECURITY AND UPGRADES...4 Major Upgrades...4 Minor Upgrades...5

More information

Windows Kernel Internals for Security Researchers

Windows Kernel Internals for Security Researchers Windows Kernel Internals for Security Researchers Overview This course takes a deep dive into the internals of the Windows kernel from a security perspective. Attendees learn about behind the scenes working

More information

Elemental functions: Writing data-parallel code in C/C++ using Intel Cilk Plus

Elemental functions: Writing data-parallel code in C/C++ using Intel Cilk Plus Elemental functions: Writing data-parallel code in C/C++ using Intel Cilk Plus A simple C/C++ language extension construct for data parallel operations Robert Geva [email protected] Introduction Intel

More information

µtasker Document FTP Client

µtasker Document FTP Client Embedding it better... µtasker Document FTP Client utaskerftp_client.doc/1.01 Copyright 2012 M.J.Butcher Consulting Table of Contents 1. Introduction...3 2. FTP Log-In...4 3. FTP Operation Modes...4 4.

More information

Software Vulnerabilities

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

More information

Full and Para Virtualization

Full and Para Virtualization Full and Para Virtualization Dr. Sanjay P. Ahuja, Ph.D. 2010-14 FIS Distinguished Professor of Computer Science School of Computing, UNF x86 Hardware Virtualization The x86 architecture offers four levels

More information

Design: Metadata Cache Logging

Design: Metadata Cache Logging Dana Robinson HDF5 THG 2014-02-24 Document Version 4 As an aid for debugging, the existing ad-hoc metadata cache logging functionality will be made more robust. The improvements will include changes to

More information

Host-based Intrusion Prevention System (HIPS)

Host-based Intrusion Prevention System (HIPS) Host-based Intrusion Prevention System (HIPS) White Paper Document Version ( esnhips 14.0.0.1) Creation Date: 6 th Feb, 2013 Host-based Intrusion Prevention System (HIPS) Few years back, it was relatively

More information

Virtual Servers. Virtual machines. Virtualization. Design of IBM s VM. Virtual machine systems can give everyone the OS (and hardware) that they want.

Virtual Servers. Virtual machines. Virtualization. Design of IBM s VM. Virtual machine systems can give everyone the OS (and hardware) that they want. Virtual machines Virtual machine systems can give everyone the OS (and hardware) that they want. IBM s VM provided an exact copy of the hardware to the user. Virtual Servers Virtual machines are very widespread.

More information

OMPT: OpenMP Tools Application Programming Interfaces for Performance Analysis

OMPT: OpenMP Tools Application Programming Interfaces for Performance Analysis OMPT: OpenMP Tools Application Programming Interfaces for Performance Analysis Alexandre Eichenberger, John Mellor-Crummey, Martin Schulz, Michael Wong, Nawal Copty, John DelSignore, Robert Dietrich, Xu

More information

Software Tracing of Embedded Linux Systems using LTTng and Tracealyzer. Dr. Johan Kraft, Percepio AB

Software Tracing of Embedded Linux Systems using LTTng and Tracealyzer. Dr. Johan Kraft, Percepio AB Software Tracing of Embedded Linux Systems using LTTng and Tracealyzer Dr. Johan Kraft, Percepio AB Debugging embedded software can be a challenging, time-consuming and unpredictable factor in development

More information

Analysis of the Linux Audit System 1

Analysis of the Linux Audit System 1 Analysis of the Linux Audit System 1 Authors Bruno Morisson, MSc (Royal Holloway, 2014) Stephen Wolthusen, ISG, Royal Holloway Overview Audit mechanisms on an operating system (OS) record relevant system

More information

Bug hunting. Vulnerability finding methods in Windows 32 environments compared. FX of Phenoelit

Bug hunting. Vulnerability finding methods in Windows 32 environments compared. FX of Phenoelit Bug hunting Vulnerability finding methods in Windows 32 environments compared FX of Phenoelit The goal: 0day What we are looking for: Handles network side input Runs on a remote system Is complex enough

More information

COS 318: Operating Systems

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

More information

evm Virtualization Platform for Windows

evm Virtualization Platform for Windows B A C K G R O U N D E R evm Virtualization Platform for Windows Host your Embedded OS and Windows on a Single Hardware Platform using Intel Virtualization Technology April, 2008 TenAsys Corporation 1400

More information

Hands-on CUDA exercises

Hands-on CUDA exercises Hands-on CUDA exercises CUDA Exercises We have provided skeletons and solutions for 6 hands-on CUDA exercises In each exercise (except for #5), you have to implement the missing portions of the code Finished

More information

Binary Code Extraction and Interface Identification for Security Applications

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

More information

VirtualCenter Database Performance for Microsoft SQL Server 2005 VirtualCenter 2.5

VirtualCenter Database Performance for Microsoft SQL Server 2005 VirtualCenter 2.5 Performance Study VirtualCenter Database Performance for Microsoft SQL Server 2005 VirtualCenter 2.5 VMware VirtualCenter uses a database to store metadata on the state of a VMware Infrastructure environment.

More information

Freescale Semiconductor, I

Freescale Semiconductor, I nc. Application Note 6/2002 8-Bit Software Development Kit By Jiri Ryba Introduction 8-Bit SDK Overview This application note describes the features and advantages of the 8-bit SDK (software development

More information

Instrumentation Software Profiling

Instrumentation Software Profiling Instrumentation Software Profiling Software Profiling Instrumentation of a program so that data related to runtime performance (e.g execution time, memory usage) is gathered for one or more pieces of the

More information

CS 1133, LAB 2: FUNCTIONS AND TESTING http://www.cs.cornell.edu/courses/cs1133/2015fa/labs/lab02.pdf

CS 1133, LAB 2: FUNCTIONS AND TESTING http://www.cs.cornell.edu/courses/cs1133/2015fa/labs/lab02.pdf CS 1133, LAB 2: FUNCTIONS AND TESTING http://www.cs.cornell.edu/courses/cs1133/2015fa/labs/lab02.pdf First Name: Last Name: NetID: The purpose of this lab is to help you to better understand functions:

More information

Integrated Error-Detection Techniques: Find More Bugs in Java Applications

Integrated Error-Detection Techniques: Find More Bugs in Java Applications Integrated Error-Detection Techniques: Find More Bugs in Java Applications Software verification techniques such as pattern-based static code analysis, runtime error detection, unit testing, and flow analysis

More information

How to use PDFlib products with PHP

How to use PDFlib products with PHP How to use PDFlib products with PHP Last change: July 13, 2011 Latest PDFlib version covered in this document: 8.0.3 Latest version of this document available at: www.pdflib.com/developer/technical-documentation

More information

Virtualization. Dr. Yingwu Zhu

Virtualization. Dr. Yingwu Zhu Virtualization Dr. Yingwu Zhu What is virtualization? Virtualization allows one computer to do the job of multiple computers. Virtual environments let one computer host multiple operating systems at the

More information

Betriebssysteme KU Security

Betriebssysteme KU Security Betriebssysteme KU Security IAIK Graz University of Technology 1 1. Drivers 2. Security - The simple stuff 3. Code injection attacks 4. Side-channel attacks 2 1. Drivers 2. Security - The simple stuff

More information

Experimental Evaluation of Distributed Middleware with a Virtualized Java Environment

Experimental Evaluation of Distributed Middleware with a Virtualized Java Environment Experimental Evaluation of Distributed Middleware with a Virtualized Java Environment Nuno A. Carvalho, João Bordalo, Filipe Campos and José Pereira HASLab / INESC TEC Universidade do Minho MW4SOC 11 December

More information

The programming language C. sws1 1

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

More information

Application-Level Debugging and Profiling: Gaps in the Tool Ecosystem. Dr Rosemary Francis, Ellexus

Application-Level Debugging and Profiling: Gaps in the Tool Ecosystem. Dr Rosemary Francis, Ellexus Application-Level Debugging and Profiling: Gaps in the Tool Ecosystem Dr Rosemary Francis, Ellexus For years instruction-level debuggers and profilers have improved in leaps and bounds. Similarly, system-level

More information

Application Note C++ Debugging

Application Note C++ Debugging Application Note C++ Debugging TRACE32 Online Help TRACE32 Directory TRACE32 Index TRACE32 Documents... High-Level Language Debugging... Application Note C++ Debugging... 1 Sample Code used by This Application

More information

Chapter 6, The Operating System Machine Level

Chapter 6, The Operating System Machine Level Chapter 6, The Operating System Machine Level 6.1 Virtual Memory 6.2 Virtual I/O Instructions 6.3 Virtual Instructions For Parallel Processing 6.4 Example Operating Systems 6.5 Summary Virtual Memory General

More information

International Journal of Enterprise Computing and Business Systems ISSN (Online) : 2230-8849

International Journal of Enterprise Computing and Business Systems ISSN (Online) : 2230-8849 WINDOWS-BASED APPLICATION AWARE NETWORK INTERCEPTOR Ms. Shalvi Dave [1], Mr. Jimit Mahadevia [2], Prof. Bhushan Trivedi [3] [1] Asst.Prof., MCA Department, IITE, Ahmedabad, INDIA [2] Chief Architect, Elitecore

More information

Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters

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.

More information

An API for Reading the MySQL Binary Log

An API for Reading the MySQL Binary Log An API for Reading the MySQL Binary Log Mats Kindahl Lead Software Engineer, MySQL Replication & Utilities Lars Thalmann Development Director, MySQL Replication, Backup & Connectors

More information

Advanced Scripting Techniques for Automating Regression Tests and Measurements with the Code Composer Studio Scripting Utility

Advanced Scripting Techniques for Automating Regression Tests and Measurements with the Code Composer Studio Scripting Utility 01001000100000110000001000001100 010010001000 Advanced Scripting Techniques for Automating Regression Tests and Measurements with the Code Composer Studio Scripting Utility Name: Vincent Wan, Ki-Soo Lee

More information

Pro ASP.NET 4 CMS. Using the JET 4 Framework. Advanced Techniques for C# Developers. Apress. Alan Harris

Pro ASP.NET 4 CMS. Using the JET 4 Framework. Advanced Techniques for C# Developers. Apress. Alan Harris Pro ASP.NET 4 CMS Advanced Techniques for C# Developers Using the JET 4 Framework Alan Harris Apress Contents at a Glance. Contents About the Author About the Technical Reviewer Acknowledgments. Introduction

More information

Hands-on Hacking Unlimited

Hands-on Hacking Unlimited About Zone-H Attacks techniques (%) File Inclusion Shares misconfiguration SQL Injection DNS attack through social engineering Web Server external module intrusion Attack against the administrator/user

More information

CUDA Debugging. GPGPU Workshop, August 2012. Sandra Wienke Center for Computing and Communication, RWTH Aachen University

CUDA Debugging. GPGPU Workshop, August 2012. Sandra Wienke Center for Computing and Communication, RWTH Aachen University CUDA Debugging GPGPU Workshop, August 2012 Sandra Wienke Center for Computing and Communication, RWTH Aachen University Nikolay Piskun, Chris Gottbrath Rogue Wave Software Rechen- und Kommunikationszentrum

More information

Virtualization. Types of Interfaces

Virtualization. Types of Interfaces Virtualization Virtualization: extend or replace an existing interface to mimic the behavior of another system. Introduced in 1970s: run legacy software on newer mainframe hardware Handle platform diversity

More information

Image Acquisition Toolbox Adaptor Kit User's Guide

Image Acquisition Toolbox Adaptor Kit User's Guide Image Acquisition Toolbox Adaptor Kit User's Guide R2015b How to Contact MathWorks Latest news: www.mathworks.com Sales and services: www.mathworks.com/sales_and_services User community: www.mathworks.com/matlabcentral

More information

Q N X S O F T W A R E D E V E L O P M E N T P L A T F O R M v 6. 4. 10 Steps to Developing a QNX Program Quickstart Guide

Q N X S O F T W A R E D E V E L O P M E N T P L A T F O R M v 6. 4. 10 Steps to Developing a QNX Program Quickstart Guide Q N X S O F T W A R E D E V E L O P M E N T P L A T F O R M v 6. 4 10 Steps to Developing a QNX Program Quickstart Guide 2008, QNX Software Systems GmbH & Co. KG. A Harman International Company. All rights

More information

Windows Rootkit Overview

Windows Rootkit Overview WHITE PAPER: SYMANTEC SECURITY RESPONSE Windows Rootkit Overview White Paper: Symantec Security Response Windows Rootkit Overview Contents Introduction...4 User Mode Rootkits...4 Kernel Mode Rootkits...5

More information

CSCI E 98: Managed Environments for the Execution of Programs

CSCI E 98: Managed Environments for the Execution of Programs CSCI E 98: Managed Environments for the Execution of Programs Draft Syllabus Instructor Phil McGachey, PhD Class Time: Mondays beginning Sept. 8, 5:30-7:30 pm Location: 1 Story Street, Room 304. Office

More information

How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)

How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint) TN203 Porting a Program to Dynamic C Introduction Dynamic C has a number of improvements and differences compared to many other C compiler systems. This application note gives instructions and suggestions

More information

Windows8 Internals, Sixth Edition, Part 1

Windows8 Internals, Sixth Edition, Part 1 Microsoft Windows8 Internals, Sixth Edition, Part 1 Mark Russinovich David A. Solomon Alex lonescu Windows Internals, Sixth Edition, Part i Introduction xvii Chapter 1 Concepts and Tools 1 Windows Operating

More information

How do Users and Processes interact with the Operating System? Services for Processes. OS Structure with Services. Services for the OS Itself

How do Users and Processes interact with the Operating System? Services for Processes. OS Structure with Services. Services for the OS Itself How do Users and Processes interact with the Operating System? Users interact indirectly through a collection of system programs that make up the operating system interface. The interface could be: A GUI,

More information

A Day in the Life of a Cyber Tool Developer

A Day in the Life of a Cyber Tool Developer A Day in the Life of a Cyber Tool Developer by Jonathan Tomczak [email protected] Jonathan Tomczak ( Front Man ) Software Engineer w/ over 7 years experience working in software and web development Dave

More information

10 STEPS TO YOUR FIRST QNX PROGRAM. QUICKSTART GUIDE Second Edition

10 STEPS TO YOUR FIRST QNX PROGRAM. QUICKSTART GUIDE Second Edition 10 STEPS TO YOUR FIRST QNX PROGRAM QUICKSTART GUIDE Second Edition QNX QUICKSTART GUIDE A guide to help you install and configure the QNX Momentics tools and the QNX Neutrino operating system, so you can

More information

Operating System Structures

Operating System Structures COP 4610: Introduction to Operating Systems (Spring 2015) Operating System Structures Zhi Wang Florida State University Content Operating system services User interface System calls System programs Operating

More information

An Easier Way for Cross-Platform Data Acquisition Application Development

An Easier Way for Cross-Platform Data Acquisition Application Development An Easier Way for Cross-Platform Data Acquisition Application Development For industrial automation and measurement system developers, software technology continues making rapid progress. Software engineers

More information

Intel Application Software Development Tool Suite 2.2 for Intel Atom processor. In-Depth

Intel Application Software Development Tool Suite 2.2 for Intel Atom processor. In-Depth Application Software Development Tool Suite 2.2 for Atom processor In-Depth Contents Application Software Development Tool Suite 2.2 for Atom processor............................... 3 Features and Benefits...................................

More information

Using the Intel Inspector XE

Using the Intel Inspector XE Using the Dirk Schmidl [email protected] Rechen- und Kommunikationszentrum (RZ) Race Condition Data Race: the typical OpenMP programming error, when: two or more threads access the same memory

More information

Lab 2 : Basic File Server. Introduction

Lab 2 : Basic File Server. Introduction Lab 2 : Basic File Server Introduction In this lab, you will start your file system implementation by getting the following FUSE operations to work: CREATE/MKNOD, LOOKUP, and READDIR SETATTR, WRITE and

More information

QA Analysis of the WRF Program

QA Analysis of the WRF Program QA Analysis of the WRF Program WRF Workshop, Boulder Colorado, 26-28th June 2012 Mark Anderson 1 John Collins 1,2,3,4 Brian Farrimond 1,2,4 [email protected] [email protected] [email protected]

More information

Cloud Computing. Up until now

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

More information