Software Reverse Engineering
|
|
|
- Charity Booker
- 9 years ago
- Views:
Transcription
1 Software Reverse Engineering Jacco Krijnen June 19, 2013 Abstract While reverse engineering probably started with the analysis of hardware, today it plays a significant role in the software world. We discuss some of its uses and explain security related issues like malicious software and software piracy. It is shown how tools such as disassemblers and decompilers can help in this process, and why it is difficult to completely protect software from being reverse engineered. 1 Introduction Trying to understand the world around us is part of what makes us human. It is the reason that we build particle accelerators, travel in space, and do scientific research in general. We like to take things apart and put them back together. Reverse engineering means working backwards from something man made, to gain knowledge about the internal workings or underlying design. Whereas software engineering can be seen as implementing functional and technical specifications, software reverse engineering is the act of taking a piece of software (the implementation) and reconstructing original specifications or design. From now on we will refer to this simply as reverse engineering. Reverse engineering is tightly related with security, some topics include: Detecting and analyzing malicious software Testing encryption systems Locating software vulnerabilities These topics, among other uses, will be discussed in section two. Since programs in their binary form are highly unreadable to most people, we would like to translate them in a higher level language and reverse as much as we can from what the compiler did. Techniques to do this will be discussed in section three. Another obvious question is: Is there a way to protect my software from being reverse engineered?. This question, and more on protecting software will be discussed in section four. 1
2 2 Uses 2.1 Malicious software The detection and understanding of malicious software (or malware) can be divided into two techniques: static and dynamic analysis. Dynamic analysis tries to analyze the program while it is running, by closely monitoring its behaviour with for instance a debugger. With static analysis, the code is reverse engineered and studied. Both have their strengths and weaknesses. For instance, advanced malware might notice that it is being observed and behave differently, defeating forms of dynamic analysis. On the other hand, code can be obfuscated (see section 4.1) or packed (which means encrypted or compressed) to hide as much as possible. We can also look at it from a completely different angle, namely the perspective of the malware developer. It can use reverse engineering to locate vulnerabilities in an OS, or a protocol, in order to spread the malware. Sometimes, a malware developer might be interested in personal information which is stored in other software. In that case, the malware could be built to exploit a certain vulnerability in such software. 2.2 Encryption systems Kerckhoffs s principle 1 states that we should not try to keep the encryption algorithm secret. If an enemy would ever get their hands on the software, it would be a matter of time before it is reverse engineered, which essentially breaks the algorithm. So let us assume that the algorithms conform to Kerckhoffs s principle. In most well designed algorithms, the best option to decrypt an intercepted message would be to bruteforce all the keys, so that appears to be a dead end. However, we should still try to reverse engineer private implementations of the algorithm. A single mistake in an implementation could create potential loopholes. 2.3 Developing competing software Clean room design A famous reverse engineering example took place during the 1980s, when Columbia Data Products developed a PC that was very similar to the IBM PCs. Since copying the proprietary BIOS software would have been illegal, a similar product was developed using the so called clean room design or Chinese wall. The method works as following A team examines the original software and comes up with a description of its functional specifications The description is implemented by a different team that has no connections with the specification team whatsoever 1 The security of an encryption system should only depend on the secrecy of the key, not the system itself. 2
3 The second team therefore has no knowledge of the actual techniques used in the product that is being reverse engineered. It should be noted that this method is a way to avoid copyright problems, since it is based on the principle of independent invention. Patents, however, do offer protection to the clean room approach [1] Clean room approach (source: 3 Tools and Techniques The reverse engineering process starts with an executable program. This can either be native machine code (for instance a windows.exe file) or code for a virtual machine (for instance a java.class file). Since programs in this binary format are highly unreadable to most people, we need a layer of abstraction. 3.1 Machine code and assembly language Every processor architecture has an instructionset; a collection of operation codes, oropcodes which are represented by a fixed amount of bits. These are the elementary operations that a processor can execute. Opcodes can take arguments, which are called operands. For example, the instruction to pop 32-bits from the stack on an x86 architecture is , or simply 0F in hexadecimal notation [2]. An assembly language is a language of which the semantics have a one-toone correspondence with a specific instructionset. The main reason is that it makes machine code readable. This is done by giving every instruction a name, a so called mnemoic. For the above example, the mnemoic would be pop. An assembler is a tool that performs this mapping; it converts the mnemoics to their associated opcodes. Assembly languages are often classified as low level programming languages, since it is the closest that you can get to the processor as programmer. 3
4 3.2 Disassemblers To map machine code to assembly language, the opposite of an assembler is used, called a disassembler. The process itself is not exactly difficult, it could be implemented by linearly going through the binary opcodes, and retrieving the mnemoics with table lookups. Difficullties arise when trying to distinguish the actual code from data, since these two are combad. A simple linear scanningand-translating algorithm therefore does not suffice, and some form of control flow analysis has to be performed. For a more advanced algorithm, see [3] Also keep in mind that executables may have different file formats. The two most common types beingpe (Portable Executable, Windows) and ELF (Executable and Linking Format, Unix). Both contain file headers that describe the entry point of the application (the address of the first instruction)[4][5]. 3.3 Compilers Most software is written in high level languages, such as C++ or Java. A compiler translates programs in these languages to machine code. This is a complex process, with some aspects to keep in mind: Comments and documentation are removed, since these have no meaning to the processor. Often, a compiler will perform various transformations to the original program for performance reasons, before generating the machine code. In the final machine code, identifiers (such as variable and function names) are omitted This should make it clear that compiling is a lossy process. To be more precise, it is a many-to-many process. Source code can be compiled in different ways, with different optimizations, and machine code can be translated back in many ways. 3.4 Decompilers While disassemblers can help us to get low level assembly language from machine language, we are still looking at the lowest level of abstraction. Stack operations, registers and pointers are all very close to the machine. To get the big picture, we would like a representation of the same program in a high level language. Because of the reasons mentioned above, it is nearly always impossible to obtain a copy of the original source code. However, it is possible to obtain a reasonable representation of it Malware revisited The increased popularity of smartphones and tablets has not gone unnoticed by malware developers [6]. The static analysis and detection of malware, as discussed in section 2.1, is based on disassemblers and decompilers. This causes a problem for the disassembler, since different smartdevice companies use different 4
5 processor architectures, which have different instruction sets. In [7], a decompiler is presented that solves this problem. Its disassembler is retargetable, effectively making it platform independent. 4 Protecting software Although traditionally, malicious software (the so called client ) attacks a benign operating system (the host ), it can also be the other way round, in which a benign client is attacked by a malicious host. This view is nicely and with more detail explained in [8]. Attacks include software piracy and malicious reverse engineering. Protection against a malicious client is much easier than protecting against a malicious host, since a host can restrict the actions of a malicious client. In contrast, once a malicious host has his hands on a client, it can use any technique to try and attack it. 4.1 Reverse engineering and code obfuscation Many believe that it is impossible to completely protect software against reverse engineering [9]. Still, there are many popular techniques that might make the process a lot harder, such as watermarking, temper. We discuss a popular techniques called code obfuscation. Intuitively, code obfuscation is the process of transforming a program, such that its observable behaviour stays the same. This notion is formalized in [10] You could say that an optimizing compiler already creates some obfuscation, but for different purposes: These [obfuscations] are typically non-platform-specific transformations that modify the code to hide its original purpose and drown the reverser in a sea of irrelevant information [3]. Code obfuscation therefore falls in the category of security through obscurity and Security through obesity. Code obfuscation often comes at the cost of performance Opaque predicates A key ingredient is an opaque predicate: a boolean expressions that has to be evaluated at runtime, but of which the outcome is a constant value and known apriori. They can be used to introduce branches (for instance an if-then-else construction).[11] generalizes the notion of an opaque predicate to an opaque expression. This makes it possible to use a technique known as jump table spoofing Jump tables A jump table is an array of pointers that point to possible execution branches. A compiler might implement branching (such as if-then-else or switch constructs) with jump tables. The idea of jump table spoofing is to take an ordinary, unconditional jump (for instance a function call) to address x and tranforming it into a jump table that contains arbitrary pointers into the program code (also called junk addresses ), and also includes x. By using an opaque expression that evaluates to the index of x in the table, the program flow remains unchanged. For a reverse engineer, it might be very hard to understand the 5
6 program flow this way. More advanced techniques of code obfuscation can be found in [3] 4.2 Software Piracy A different type of software protection is the battle against software piracy. Digital content is extremely easy to move around and to copy, since the smallest building block are bits, and all hardware and software is built around this representation. Compare this to the middle ages, when monks had to work years, if not a lifetime, to make a single copy of the bible. With the internet, sharing has become instant, no need to hand over CD-ROMs. Copyright owners now face the reality that they have almost zero control over what happens with their digital material. A direct result is an increased amount of software pirating. Pirating software means the unauthorized usage, copying or redistributing of software. 4.3 Protecting against software piracy A common protection is the use of serial numbers. These keys come seperately with the software, and are validated by the software using a secret algorithm. Of course, this approach has a few major flaws: keys can be shared by users, and once the secret algorithm is reverse engineered, key generators can be built. A key generator is a small piece of software that has the knowledge of the validation algorithm and can provide a user with a valid key. A famous example is the first Starcraft game, which had 13-digit keys that relied on such an algorithm. People noticed that trying some keys would often work. Eventually, the algorithm was reverse engineered and discovered that it relied on a simple checksum where the thirteenth bit verifies the first twelve.. An improvement upon serial numbers is the use of online activation. Now, the software vendor is able to tell if the serial number is legitimate. Still, it is possible to crack the software and setup a keygenerator that performs a man in the middle attack [3]. Another drawback is the fact that the customer has to rely on everlasting support from the publisher, what if the publisher goed out of bussiness? A completely different approach is Hardware based protection, usually this is in the form of a USB dongle. The program installer can then check if the dongle is present in a usb port. A simple check however, does not suffice, it is relatively easy to crack since it relies on interoperability with the OS. A better solution would be to encrypt the actual program with a key, which is present on the dongle. References [1] Mamta Garg and Manoj Kumar Jindal (2009) Reverse Engineering - Roadmap to Effective Software Design International Journal of Recent Trends in Engineering, Vol 1, No. 2(2009) 6
7 [2] Intel (2013 Intel (r) 64 and IA-32 Architectures Software Developer s Manual [3] John Willey and Sons (2005) Reversing: secrets of reverse engineering [4] Pietrek, Matt. (1994) Peering inside the PE: a tour of the win32 (R) portable executable file format. Microsoft Systems Journal-US Edition (1994): [5] Youngdale, Eric. (1995) Kernel korner: The ELF object file format by dissection. Linux Journal es (1995): 15. [6] Felt, Adrienne Porter, et al. A survey of mobile malware in the wild. Proceedings of the 1st ACM workshop on Security and privacy in smartphones and mobile devices. ACM, [7] urfina, Luk, et al. (2011) Design of a retargetable decompiler for a static platform-independent malware analysis. Information Security and Assurance. Springer Berlin Heidelberg, [8] Collberg, Christian S., and Clark Thomborson. (2002) Watermarking, tamper-proofing, and obfuscation-tools for software protection. Software Engineering, IEEE Transactions on 28.8 (2002): [9] Barak, Boaz, et al. (2001) On the (im) possibility of obfuscating programs. Advances in CryptologyCRYPTO Springer Berlin Heidelberg, [10] C. Collberg, C. Thomborson, and D. Low. (1997) A taxonomy of obfuscating transformations. [11] Linn, Cullen, and Saumya Debray. (2003) Obfuscation of executable code to improve resistance to static disassembly. Proceedings of the 10th ACM conference on Computer and communications security. ACM,
Software Reversing Engineering (a.k.a. Reversing) Spiros Mancoridis. What is Reverse Engineering? Software Reverse Engineering: Reversing
Software Reversing Engineering (a.k.a. Reversing) Spiros Mancoridis What is Reverse Engineering? Reverse engineering (RE) is the process of etracting the knowledge or design blueprints from anything man
Lecture 12: Software protection techniques. Software piracy protection Protection against reverse engineering of software
Lecture topics Software piracy protection Protection against reverse engineering of software Software piracy Report by Business Software Alliance for 2001: Global economic impact of software piracy was
DIGITAL RIGHTS MANAGEMENT SYSTEM FOR MULTIMEDIA FILES
DIGITAL RIGHTS MANAGEMENT SYSTEM FOR MULTIMEDIA FILES Saiprasad Dhumal * Prof. K.K. Joshi Prof Sowmiya Raksha VJTI, Mumbai. VJTI, Mumbai VJTI, Mumbai. Abstract piracy of digital content is a one of the
Code Obfuscation. Mayur Kamat Nishant Kumar
Code Obfuscation Mayur Kamat Nishant Kumar Agenda Malicious Host Problem Code Obfuscation Watermarking and Tamper Proofing Market solutions Traditional Network Security Problem Hostile Network Malicious
Qiong Liu, Reihaneh Safavi Naini and Nicholas Paul Sheppard Australasian Information Security Workshop 2003. Presented by An In seok. 2010.12.
Digital Rights Management for Content Distribution Qiong Liu, Reihaneh Safavi Naini and Nicholas Paul Sheppard Australasian Information Security Workshop 2003 Presented by An In seok. 2010.12.1 Contents
Code Obfuscation Literature Survey
Code Obfuscation Literature Survey Arini Balakrishnan, Chloe Schulze CS701 Construction of Compilers, Instructor: Charles Fischer Computer Sciences Department University of Wisconsin, Madison December
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
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
Design of Java Obfuscator MANGINS++ - A novel tool to secure code
J. Comp. & Math. Sci. Vol. 1 (6), 646-652 (2010) Design of Java Obfuscator MANGINS++ - A novel tool to secure code HARSHA VARDHAN RAJENDRAN, CH KALYAN CHANDRA and R. SENTHIL KUMAR School of Computing Sciences
Section 1.4. Java s Magic: Bytecode, Java Virtual Machine, JIT,
J A V A T U T O R I A L S : Section 1.4. Java s Magic: Bytecode, Java Virtual Machine, JIT, JRE and JDK This section clearly explains the Java s revolutionary features in the programming world. Java basic
MICROPROCESSOR AND MICROCOMPUTER BASICS
Introduction MICROPROCESSOR AND MICROCOMPUTER BASICS At present there are many types and sizes of computers available. These computers are designed and constructed based on digital and Integrated Circuit
İSTANBUL AYDIN UNIVERSITY
İSTANBUL AYDIN UNIVERSITY FACULTY OF ENGİNEERİNG SOFTWARE ENGINEERING THE PROJECT OF THE INSTRUCTION SET COMPUTER ORGANIZATION GÖZDE ARAS B1205.090015 Instructor: Prof. Dr. HASAN HÜSEYİN BALIK DECEMBER
SECURE IMPLEMENTATIONS OF CONTENT PROTECTION (DRM) SCHEMES ON CONSUMER ELECTRONIC DEVICES
SECURE IMPLEMENTATIONS OF CONTENT PROTECTION (DRM) SCHEMES ON CONSUMER ELECTRONIC DEVICES Contents Introduction... 3 DRM Threat Model... 3 DRM Flow... 4 DRM Assets... 5 Threat Model... 5 Protection of
CPS221 Lecture: Operating System Structure; Virtual Machines
Objectives CPS221 Lecture: Operating System Structure; Virtual Machines 1. To discuss various ways of structuring the operating system proper 2. To discuss virtual machines Materials: 1. Projectable of
Operating System Components
Lecture Overview Operating system software introduction OS components OS services OS structure Operating Systems - April 24, 2001 Operating System Components Process management Memory management Secondary
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
Defending Behind The Device Mobile Application Risks
Defending Behind The Device Mobile Application Risks Tyler Shields Product Manager and Strategist Veracode, Inc Session ID: MBS-301 Session Classification: Advanced Agenda The What The Problem Mobile Ecosystem
Next-Generation Protection Against Reverse Engineering
Next-Generation Protection Against Reverse Engineering 4 February 2005 Chris Coakley, Jay Freeman, Robert Dick [email protected]; [email protected]; [email protected] Purpose This white
Implementation of an Obfuscation Tool for C/C++ Source Code Protection on the XScale Architecture *
Implementation of an Obfuscation Tool for C/C++ Source Code Protection on the XScale Architecture * Seongje Cho, Hyeyoung Chang, and Yookun Cho 1 Dept. of Computer Science & Engineering, Dankook University,
Computer Science 281 Binary and Hexadecimal Review
Computer Science 281 Binary and Hexadecimal Review 1 The Binary Number System Computers store everything, both instructions and data, by using many, many transistors, each of which can be in one of two
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,
OSI Seven Layers Model Explained with Examples
OSI Layer Model describes how information is transmitted between networking devices. In this tutorial I will provide a brief introduction of OSI Layer model including its advantage and services. OSI model
Managing Variability in Software Architectures 1 Felix Bachmann*
Managing Variability in Software Architectures Felix Bachmann* Carnegie Bosch Institute Carnegie Mellon University Pittsburgh, Pa 523, USA [email protected] Len Bass Software Engineering Institute Carnegie
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
Patterns for Secure Boot and Secure Storage in Computer Systems
Patterns for Secure Boot and Secure Storage in Computer Systems Hans Löhr, Ahmad-Reza Sadeghi, Marcel Winandy Horst Görtz Institute for IT Security, Ruhr-University Bochum, Germany {hans.loehr,ahmad.sadeghi,marcel.winandy}@trust.rub.de
The Behavioral Analysis of Android Malware
, pp.41-47 http://dx.doi.org/10.14257/astl.2014.63.09 The Behavioral Analysis of Android Malware Fan Yuhui, Xu Ning Department of Computer and Information Engineering, Huainan Normal University, Huainan,
Malware: Malicious Code
Malware: Malicious Code UIC 594/Kent Law: Computer and Network Privacy and Security: Ethical, Legal, and Technical Considerations 2007, 2008 Robert H. Sloan Malicious code: Viruses Most famous type of
Securing end-user mobile devices in the enterprise
IBM Global Technology Services Thought Leadership White Paper January 2012 Securing end-user mobile devices in the enterprise Develop an enforceable mobile security policy and practices for safer corporate
The Network and The Cloud: Addressing Security And Performance. How Your Enterprise is Impacted Today and Tomorrow
Addressing Security And Performance How Your Enterprise is Impacted Today and Tomorrow THE CLOUD: SECURED OR NOT? IN A STUDY BY MICROSOFT, 51 percent of companies who moved to the cloud said that since
language 1 (source) compiler language 2 (target) Figure 1: Compiling a program
CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program
Parasitics: The Next Generation. Vitaly Zaytsev Abhishek Karnik Joshua Phillips
Parasitics: The Next Generation. Vitaly Zaytsev Abhishek Karnik Joshua Phillips Agenda Overview W32/Xpaj analysis Overview of a virtual machine Software protection trends W32/Winemmem analysis W32/Induc
Analysis of advanced issues in mobile security in android operating system
Available online atwww.scholarsresearchlibrary.com Archives of Applied Science Research, 2015, 7 (2):34-38 (http://scholarsresearchlibrary.com/archive.html) ISSN 0975-508X CODEN (USA) AASRC9 Analysis of
Virtualization for Cloud Computing
Virtualization for Cloud Computing Dr. Sanjay P. Ahuja, Ph.D. 2010-14 FIS Distinguished Professor of Computer Science School of Computing, UNF CLOUD COMPUTING On demand provision of computational resources
All Your Code Belongs To Us Dismantling Android Secrets With CodeInspect. Steven Arzt. 04.10.2015 Secure Software Engineering Group Steven Arzt 1
All Your Code Belongs To Us Dismantling Android Secrets With CodeInspect Steven Arzt 04.10.2015 Secure Software Engineering Group Steven Arzt 1 04.10.2015 Secure Software Engineering Group Steven Arzt
Software Piracy Overview of Anti-Tampering Technologies. Scott Baeder Sr. Architect Cadence Design Systems baeder@cadence.
Software Piracy Overview of Anti-Tampering Technologies Scott Baeder Sr. Architect Cadence Design Systems [email protected] 0 Agenda Quick Review of Piracy Binary Hacking Crackers Workflow First Impressions
Research on Situation and Key Issues of Smart Mobile Terminal Security
Research on Situation and Key Issues of Smart Mobile Terminal Security Hao-hao Song, Jun-bing Zhang, Lei Lu and Jian Gu Abstract As information technology continues to develop, smart mobile terminal has
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,
Montgomery College Course Designator/Course Number: CS 110 Course Title: Computer Literacy
Montgomery College Course Designator/Course Number: CS 11 Course Title: Computer Literacy Course Length: 3 credits 3 5-minute meetings per week or equivalent Course Description: An introduction to the
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)
Bachelors of Computer Application Programming Principle & Algorithm (BCA-S102T)
Unit- I Introduction to c Language: C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating
LASTLINE WHITEPAPER. Why Anti-Virus Solutions Based on Static Signatures Are Easy to Evade
LASTLINE WHITEPAPER Why Anti-Virus Solutions Based on Static Signatures Are Easy to Evade Abstract Malicious code is an increasingly important problem that threatens the security of computer systems. The
12. Introduction to Virtual Machines
12. Introduction to Virtual Machines 12. Introduction to Virtual Machines Modern Applications Challenges of Virtual Machine Monitors Historical Perspective Classification 332 / 352 12. Introduction to
RSA Encryption. Tom Davis [email protected] http://www.geometer.org/mathcircles October 10, 2003
RSA Encryption Tom Davis [email protected] http://www.geometer.org/mathcircles October 10, 2003 1 Public Key Cryptography One of the biggest problems in cryptography is the distribution of keys.
Software License Management using the Polymorphic Encryption Algorithm White Paper
pmc-ciphers.com Software License Management using the Polymorphic Encryption Algorithm White Paper Published: May 2007, first published in January 2003 PMC Software License Management 1 Software License
Software Code Protection Through Software Obfuscation
Software Code Protection Through Software Obfuscation Presented by: Sabu Emmanuel, PhD School of Computer Engineering Nanyang Technological University, Singapore E-mail: [email protected] 20, Mar,
Practical Programming, 2nd Edition
Extracted from: Practical Programming, 2nd Edition An Introduction to Computer Science Using Python 3 This PDF file contains pages extracted from Practical Programming, 2nd Edition, published by the Pragmatic
Pentesting Mobile Applications
WEB 应 用 安 全 和 数 据 库 安 全 的 领 航 者! 安 恒 信 息 技 术 有 限 公 司 Pentesting Mobile Applications www.dbappsecurity.com.cn Who am I l Frank Fan: CTO of DBAPPSecurity Graduated from California State University as a Computer
x64 Servers: Do you want 64 or 32 bit apps with that server?
TMurgent Technologies x64 Servers: Do you want 64 or 32 bit apps with that server? White Paper by Tim Mangan TMurgent Technologies February, 2006 Introduction New servers based on what is generally called
Advanced Computer Architecture-CS501. Computer Systems Design and Architecture 2.1, 2.2, 3.2
Lecture Handout Computer Architecture Lecture No. 2 Reading Material Vincent P. Heuring&Harry F. Jordan Chapter 2,Chapter3 Computer Systems Design and Architecture 2.1, 2.2, 3.2 Summary 1) A taxonomy of
Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C
Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection
Chapter 3: Operating-System Structures. System Components Operating System Services System Calls System Programs System Structure Virtual Machines
Chapter 3: Operating-System Structures System Components Operating System Services System Calls System Programs System Structure Virtual Machines Operating System Concepts 3.1 Common System Components
Sync Security and Privacy Brief
Introduction Security and privacy are two of the leading issues for users when transferring important files. Keeping data on-premises makes business and IT leaders feel more secure, but comes with technical
RE-TRUST. PoliTO Prototypes Overview. Paolo Falcarin, Stefano DiCarlo Alessandro Cabutto, Nicola Garazzino, Davide Barberis
RE-TRUST PoliTO Prototypes Overview Paolo Falcarin, Stefano DiCarlo Alessandro Cabutto, Nicola Garazzino, Davide Barberis RE-TRUST meeting Paris, Dec 2008 RE-TRUST Project Many prototypes developed: 1.
ASSEMBLY PROGRAMMING ON A VIRTUAL COMPUTER
ASSEMBLY PROGRAMMING ON A VIRTUAL COMPUTER Pierre A. von Kaenel Mathematics and Computer Science Department Skidmore College Saratoga Springs, NY 12866 (518) 580-5292 [email protected] ABSTRACT This paper
Outline: Operating Systems
Outline: Operating Systems What is an OS OS Functions Multitasking Virtual Memory File Systems Window systems PC Operating System Wars: Windows vs. Linux 1 Operating System provides a way to boot (start)
A Survey of Anti-Tamper Technologies
A Survey of Anti-Tamper Technologies The unauthorized modification and subsequent misuse of software is often referred to as software cracking. Usually, cracking requires disabling one or more software
1 The Java Virtual Machine
1 The Java Virtual Machine About the Spec Format This document describes the Java virtual machine and the instruction set. In this introduction, each component of the machine is briefly described. This
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
Smartphone Security for Android Applications
Smartphone Security for Android Applications Steven Arzt Siegfried Rasthofer (Eric Bodden) 17.09.2013 Secure Software Engineering Group Steven Arzt and Siegfried Rasthofer 1 About Us PhD-Students at the
1 hours, 30 minutes, 38 seconds Heavy scan. All scanned network resources. Copyright 2001, FTP access obtained
home Network Vulnerabilities Detail Report Grouped by Vulnerability Report Generated by: Symantec NetRecon 3.5 Licensed to: X Serial Number: 0182037567 Machine Scanned from: ZEUS (192.168.1.100) Scan Date:
PE Explorer. Heaventools. Malware Code Analysis Made Easy
Heaventools PE Explorer Data Sheet Malware Code Analysis Made Easy Reverse engineers within the anti-virus, vulnerability research and forensics companies face the challenge of analysing a large number
CSCE 465 Computer & Network Security
CSCE 465 Computer & Network Security Instructor: Dr. Guofei Gu http://courses.cse.tamu.edu/guofei/csce465/ Secret Key Cryptography (I) 1 Introductory Remarks Roadmap Feistel Cipher DES AES Introduction
Popular Android Exploits
20-CS-6053 Network Security Spring, 2016 An Introduction To Popular Android Exploits and what makes them possible April, 2016 Questions Can a benign service call a dangerous service without the user knowing?
Operations and Supply Chain Management Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology Madras
Operations and Supply Chain Management Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology Madras Lecture - 41 Value of Information In this lecture, we look at the Value
VMware Server 2.0 Essentials. Virtualization Deployment and Management
VMware Server 2.0 Essentials Virtualization Deployment and Management . This PDF is provided for personal use only. Unauthorized use, reproduction and/or distribution strictly prohibited. All rights reserved.
Applications of obfuscation to software and hardware systems
Applications of obfuscation to software and hardware systems Victor P. Ivannikov Institute for System Programming Russian Academy of Sciences (ISP RAS) www.ispras.ru Program obfuscation is an efficient
1. Give the 16 bit signed (twos complement) representation of the following decimal numbers, and convert to hexadecimal:
Exercises 1 - number representations Questions 1. Give the 16 bit signed (twos complement) representation of the following decimal numbers, and convert to hexadecimal: (a) 3012 (b) - 435 2. For each of
Desktop and Laptop Security Policy
Desktop and Laptop Security Policy Appendix A Examples of Desktop and Laptop standards and guidelines 1. Implement anti-virus software An anti-virus program is necessary to protect your computer from malicious
Design Principles for Protection Mechanisms. Security Principles. Economy of Mechanism. Least Privilege. Complete Mediation. Economy of Mechanism (2)
Security Principles Design Principles for Protection Mechanisms Security is a system requirement just like performance, capability, cost, etc. Therefore, it may be necessary to trade off certain security
Computer Architecture. Secure communication and encryption.
Computer Architecture. Secure communication and encryption. Eugeniy E. Mikhailov The College of William & Mary Lecture 28 Eugeniy Mikhailov (W&M) Practical Computing Lecture 28 1 / 13 Computer architecture
1.1.1 Introduction to Cloud Computing
1 CHAPTER 1 INTRODUCTION 1.1 CLOUD COMPUTING 1.1.1 Introduction to Cloud Computing Computing as a service has seen a phenomenal growth in recent years. The primary motivation for this growth has been the
COMPUTER SCIENCE TRIPOS
CST.98.5.1 COMPUTER SCIENCE TRIPOS Part IB Wednesday 3 June 1998 1.30 to 4.30 Paper 5 Answer five questions. No more than two questions from any one section are to be answered. Submit the answers in five
Quotes from Object-Oriented Software Construction
Quotes from Object-Oriented Software Construction Bertrand Meyer Prentice-Hall, 1988 Preface, p. xiv We study the object-oriented approach as a set of principles, methods and tools which can be instrumental
E-Book Security Assessment: NuvoMedia Rocket ebook TM
E-Book Security Assessment: NuvoMedia Rocket ebook TM July 1999 Prepared For: The Association of American Publishers Prepared By: Global Integrity Corporation 4180 La Jolla Village Drive, Suite 450 La
Making Client-side Java Secure with Bromium vsentry
Making Client-side Java Secure with Bromium vsentry Making Client-side Java Secure Client-side Java has become somewhat of an IT pariah, primarily as a result of the growing list of Java vulnerabilities
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
Netgator: Malware Detection Using Program Interactive Challenges. Brian Schulte, Haris Andrianakis, Kun Sun, and Angelos Stavrou
Netgator: Malware Detection Using Program Interactive Challenges Brian Schulte, Haris Andrianakis, Kun Sun, and Angelos Stavrou Intro Increase of stealthy malware in enterprises Obfuscation, polymorphic
CAS : A FRAMEWORK OF ONLINE DETECTING ADVANCE MALWARE FAMILIES FOR CLOUD-BASED SECURITY
CAS : A FRAMEWORK OF ONLINE DETECTING ADVANCE MALWARE FAMILIES FOR CLOUD-BASED SECURITY ABHILASH SREERAMANENI DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING SEOUL NATIONAL UNIVERSITY OF SCIENCE AND TECHNOLOGY
Viruses, Worms, and Trojan Horses
Viruses, Worms, and Trojan Horses Be a Power Reader Make Personal Connections As you read this article, think to yourself, How can I apply this knowledge? How will what I m learning be useful to me? You
Linux Network Security
Linux Network Security Course ID SEC220 Course Description This extremely popular class focuses on network security, and makes an excellent companion class to the GL550: Host Security course. Protocols
Chapter 5 Instructor's Manual
The Essentials of Computer Organization and Architecture Linda Null and Julia Lobur Jones and Bartlett Publishers, 2003 Chapter 5 Instructor's Manual Chapter Objectives Chapter 5, A Closer Look at Instruction
OPC UA vs OPC Classic
OPC UA vs OPC Classic By Paul Hunkar Security and Communication comparison In the world of automation security has become a major source of discussion and an important part of most systems. The OPC Foundation
The Design of the Inferno Virtual Machine. Introduction
The Design of the Inferno Virtual Machine Phil Winterbottom Rob Pike Bell Labs, Lucent Technologies {philw, rob}@plan9.bell-labs.com http://www.lucent.com/inferno Introduction Virtual Machine are topical
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).
10 Hidden IT Risks That Might Threaten Your Law Firm
(Plus 1 Fast Way to Find Them) Your law firm depends on intelligence. But can you count on your technology? You may not be in the intelligence technology business, but it s probably impossible to imagine
MovieLabs Specification for Enhanced Content Protection Version 1.0
MovieLabs Specification for Enhanced Content Protection Version 1.0 Introduction Digital content distribution technologies are evolving and advancing at a rapid pace. Content creators are using these technologies
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
Windows 8: Redmond s Safest Operating System Ever?
Windows 8: Redmond s Safest Operating System Ever? By Chet Wisniewski, Senior Security Advisor, Sophos, 2012 With its Windows 8 operating system Microsoft has introduced sweeping changes to the desktop
Firewalls. Outlines: By: Arash Habibi Lashkari July 2010. Network Security 06
Firewalls Outlines: What is a firewall Why an organization ation needs a firewall Types of firewalls and technologies Deploying a firewall What is a VPN By: Arash Habibi Lashkari July 2010 1 Introduction
Securing the Intelligent Network
WHITE PAPER Securing the Intelligent Network Securing the Intelligent Network New Threats Demand New Strategies The network is the door to your organization for both legitimate users and would-be attackers.
