Reverse Engineering Computer Science Computer Science University of Windsor University of Windsor Shaochun Xu.

Slides:



Advertisements
Similar presentations
What is a Computer Program? For a computer to be able to do anything (multiply, play a song, run a word processor), it must be given the instructions.
Advertisements

Welcome to Middleware Joseph Amrithraj
Visual Scripting of XML
Ch 3 System Development Environment
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Information Systems Analysis and Design
CMMI – Continuous as well as staged model CMMI capability levels – Incomplete, performed, managed, defined, quantitatively managed, optimized Example.
Requirements Engineering n Elicit requirements from customer  Information and control needs, product function and behavior, overall product performance,
Unified theory of software evolution Reengineering – Business process reengineering and software reengineering BPR model – Business definition, process.
Copyright 2002 Prentice-Hall, Inc. Chapter 4 Automated Tools for Systems Development 4.1 Modern Systems Analysis and Design Third Edition.
Software Evolution Managing the processes of software system change
Copyright 2002 Prentice-Hall, Inc. Chapter 4 Automated Tools for Systems Development 4.1 Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer.
Reverse Engineering Valeriya Perelman 12/10/04. Outline Motivation Terminology Related work Approach discussion Challenges References.
1 IS 4420 Database Fundamentals Chapter 2: Database Development Process Leon Chen.
Lecture Nine Database Planning, Design, and Administration
Driss Kettani Sommerville, 6th edition Software Engineering II Software re-engineering l Reorganising and modifying existing software systems to make them.
November 2011 At A Glance GREAT is a flexible & highly portable set of mission operations analysis tools that increases the operational value of ground.
Software Architecture Group University of Waterloo CANADA Architecture Recovery Of Web Applications.
SOFTWARE REVERSE ENGINEERING
Software Reengineering 2003 년 12 월 2 일 최창익, 고광 원.
Software Re-engineering
Software Construction and Evolution - CSSE 375 Reverse Engineering and Reengineering Approaches Shawn & Steve In long-term software developments, the “elephant.
SEG Software Maintenance1 Software Maintenance “The modification of a software product after delivery to correct faults, to improve performance or.
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
Systems Analysis And Design © Systems Analysis And Design © V. Rajaraman MODULE 14 CASE TOOLS Learning Units 14.1 CASE tools and their importance 14.2.
Software Construction and Evolution - CSSE 375 Reverse Engineering Tools and Techniques Shawn & Steve Left – Reengineering from the competition can be.
Karolina Muszyńska. Reverse engineering - looking at the solution to figure out how it works Reverse engineering - breaking something down in order to.
Data Visualization Project B.Tech Major Project Project Guide Dr. Naresh Nagwani Project Team Members Pawan Singh Sumit Guha.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Object Oriented Reverse Engineering JATAN PATEL. What is Reverse Engineering? It is the process of analyzing a subject system to identify the system’s.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
An approach for Framework Construction and Instantiation Using Pattern Languages Rosana Teresinha Vaccare Braga Paulo Cesar Masiero ICMC-USP: Institute.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28Slide 1 CO7206 System Reengineering 4.2 Software Reengineering Most slides are Slides.
Chapter 5: Software Re-Engineering Omar Meqdadi SE 3860 Lecture 5 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
 Programming - the process of creating computer programs.
Chapter 4 Automated Tools for Systems Development Modern Systems Analysis and Design Third Edition 4.1.
RE-ENGINEERING AND DOMAIN ANALYSIS BY- NISHANTH TIRUVAIPATI.
Reverse Engineering. Overview Need for RE Recovery of lost information – providing proper system documentation Assisting with maintenance – identification.
Reverse Engineering CS3300 Fall What is it? Extracting design information from existing software Two types: Source Code based (easier) or Binary.
Java Programming: Advanced Topics1 Introduction to Advanced Java Programming Chapter 1.
Tempus Software Maintenance and Evolution JMSE-SM&E Unit 7: Reverse Engineering Prof. Mohammad A. Mikki Gaza, Palestine,
20-753: Fundamentals of Web Programming Copyright © 1999, Carnegie Mellon. All Rights Reserved. 1 Lecture 15: Java Basics Fundamentals of Web Programming.
Contents What is Reverse Engineering (RE)? Why do we need Reverse Engineering? Scope and Tasks of Reverse Engineering Reverse Engineering Tools Reverse.
Visual Basic.NET Comprehensive Concepts and Techniques Chapter 1 An Introduction to Visual Basic.NET and Program Design.
Click anywhere to start the presentation. Steps to Resolve Error Code "17099" in MS Outlook Mac 2011 Fix Mac Outlook Corruption Issues OLM to PST Converter.
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
PHP Basics and Syntax Lesson 3 ITBS2203 E-Commerce for IT.
ISYS 350 Building Business Applications
Modern Systems Analysis and Design Third Edition
CASE Tools and Joint and Rapid Application Development
Introduction to Advanced Java Programming
Modern Systems Analysis and Design Third Edition
Introduction to Software Evolution and Maintenance
GeneXus 9.0: Web applications at their higher power
Software Maintenance.
Hierarchical Architecture
Software Maintenance
Graduation Project Kick-off presentation - SET
ISYS 350 Building Business Applications
ISYS 350 Building Business Applications
Chapter 4 Automated Tools for Systems Development
Modern Systems Analysis and Design Third Edition
ISYS 350 Building Business Applications
ISYS 350 Building Business Applications
Modern Systems Analysis and Design Third Edition
ISYS 350 Building Business Applications
ISYS 350 Building Business Applications
System Reengineering Restructuring or rewriting part or all of a system without changing its functionality Applicable when some (but not all) subsystems.
Modern Systems Analysis and Design Third Edition
Software Re-engineering and Reverse Engineering
Presentation transcript:

Reverse Engineering Computer Science Computer Science University of Windsor University of Windsor Shaochun Xu

Contents   What is Reverse Engineering (RE)? b b Why do we need Reverse Engineering? b b Scope and Tasks of Reverse Engineering b b Different Approaches b b RE tools b b Conclusions

What is Reverse Engineering ? What is Reverse Engineering ? b b You have an unexpected case: You finished one course project using Java Your program runs OK But, by accident, you delete the java file How to hand in your project?

What is Reverse Engineering ? What is Reverse Engineering ? b b You have an unexpected case: You finished one course project using Java Your program runs OK But, by accident, you delete the java file How to hand in your project? b b Reverse Engineering

What is Reverse Engineering ? What is Reverse Engineering ? Waterfall Model of software development Requirement analysis design Implementation Testing and Maintenance

What is Reverse Engineering ? What is Reverse Engineering ? Forward Engineering Requirements Design Source Code Behavior

What is Reverse Engineering ? What is Reverse Engineering ? Forward EngineeringReverse Engineering Requirements Design Source Code Behavior

What is Reverse Engineering ? What is Reverse Engineering ? Abstraction System Old systemNew System Forward Engineering Re-Implementation Reverse Engineering Abstraction

What is Reverse Engineering? b b RE encompasses any activity that is done to determine how a product works, to learn the ideas and technology that were used in developing that product. b b RE can be done at many levels  Software Maintenance  RE generally belongs to Software Maintenance

The Early Days of RE b b Law of Software Revolution (Lehman, 1980) b Fundamental strategies for program comprehension (Brooks, 1983) b Taxonomy of Reverse Engineering (Chikofsky&Cross, 1990) b WCRE (Working Conference on R.E., 1990)  IWPC (Int. Workshop on Program Comprehension)

Why do we need RE ? Why do we need RE ? b b Recovery of lost information providing proper system documentation b b Assisting with maintenance identification of side effects and anomalies   Migration to another hw/sw platform   Facilitating software reuse

Why do we need RE ? Why do we need RE ? b b Benefits maintenance cost savings quality improvements competitive advantages software reuse facilitation

Difficulties of Reverse Engineering b b Gap between problem /solution domain b b Gap between concrete and abstract b b Gap between coherency/disintegration b b Gap between hierarchical/associational

Scope and Task of Reverse Engineering b b program understanding Problem/Application domain Program/Implemen. domain Mapping

Scope and Task of Reverse Engineering b b Redocumentation and/or document generation b b Recovery of design approach and design details at any level of abstraction b b Identifying reusable components and components that need restructuring b b Recovering business rules b b Understanding high-level system description.

Discovery of Abstraction b b Discovery of abstraction in large system maintenance purpose evolution purpose reengineering purpose

Levels of abstractions b b Application Application concepts, business rule, policies b b Function Logical and functional specification, non-functional requirement b b Structure Data and control flow, dependency graphs Structure and subsystem charts Architectures b b Implementation Symbol tables, source text

Different Approaches Different Approaches b b Restructuring Transformation from one representation to another at the same level,Transformation from one representation to another at the same level, Requirements Design Source code Behavior

Different Approaches Different Approaches b b Reverse Engineering Design Recovery – –reproduce all the info for understanding the system Re-documentation – –provide different views of the system b b Re-Engineering first phase --understanding the system second phase--forward engineering

Different Approaches Different Approaches Abstraction System Old systemNew System Forward Engineering Re-Implementation Reverse Engineering Abstraction

Reverse Engineering Tools b b Analysis Tools b b Browsers b b Object Server b b Task Oriented Tools

Example--Java Decompiler b b How to recover bytecode from.class file under Unix/Win with JDK? % javap -c % javap -help (to see the options) b b Java Decompilers “DeCafe Pro" from DeCafe, France at “SourceAgain" from Ahpah corp at

Example--Java Decompiler b b ClassCracker 2 Interface

Example--Java Decompiler b b Components of ClassCracker 2 Java decompiler Java decompiler –retrieves Java source code from Java class files Java disassembler Java disassembler –produces Java Assembly Code A Java class file viewerA Java class file viewer –displays Java class file structures.

Example--Java Decompiler b b Features of ClassCracker 2 User visual interface.User visual interface. Can decompile class files within zip or jar files.Can decompile class files within zip or jar files. Conversion mode (JAVA, JASM or JDUMP) is selectableConversion mode (JAVA, JASM or JDUMP) is selectable A Batc Mode allows multiple class files to be decompiled simultaneously A Batc Mode allows multiple class files to be decompiled simultaneously more…...more…...

Example--Java Decompiler b b ClassCracker 2 System Requirements All platform (Window/Linus/Unix) JDK /JRE b b Do not believe it? From myClass_origin.class ==>myClass.java % javac myClass.java (==>myClass.class) % diff myClass.class myClass_origin.class

Example--Java Decompiler b b ClassCracker 2.0--want to try it? ccgetdemo.htmlFree download at ccgetdemo.html Only first three methods are decoded.Only first three methods are decoded. b Bridge Free ge/8617/jad.htmlhttp:// ge/8617/jad.html

Conclusions Conclusions b Reverse Engineering is a new research area among software maintenance b RE includes activities of understanding the system and recovery info from system b Program understanding is the most important subset of Reverse Engineering b Discovery of abstraction is key issue

Questions ? Questions ?