Software Construction and Evolution - CSSE 375 Reverse Engineering Tools and Techniques Shawn & Steve Left – Reengineering from the competition can be.

Slides:



Advertisements
Similar presentations
Reverse Engineering Computer Science Computer Science University of Windsor University of Windsor Shaochun Xu.
Advertisements

Decompilation of Binary Programs Christina Cifuentes & K. John Gough School of Computing Science Queensland University of Technology Presented by Conny.
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
Systems Software.
UML Diagrams Jung Woo. What is UML? Standard language for specifying, visualizing, constructing, and documenting the artifacts of software systems, business.
Chapter 22 UML Tooks and UML as Blueprint Model-Driven Architecture (MDA) Object-Constraint Language (OCL)
Automated creation of verification models for C-programs Yury Yusupov Saint-Petersburg State Polytechnic University The Second Spring Young Researchers.
© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.1 2. Reverse Engineering What and Why Setting Direction  Most Valuable First First Contact.
1 Software Maintenance and Evolution CSSE 575: Session 5, Part 2 Reverse Engineering Tools and Techniques Steve Chenoweth Office Phone: (812)
Reverse Engineering Valeriya Perelman 12/10/04. Outline Motivation Terminology Related work Approach discussion Challenges References.
Automatically Extracting and Verifying Design Patterns in Java Code James Norris Ruchika Agrawal Computer Science Department Stanford University {jcn,
1 Software Maintenance and Evolution CSSE 575: Session 5, Part 1 Reverse Engineering and Reengineering Approaches Steve Chenoweth Office Phone: (812)
© Copyright Eliyahu Brutman Programming Techniques Course.
Driss Kettani Sommerville, 6th edition Software Engineering II Software re-engineering l Reorganising and modifying existing software systems to make them.
© 2008 IBM Corporation Behavioral Models for Software Development Andrei Kirshin, Dolev Dotan, Alan Hartman January 2008.
3-1 3 Compilers and interpreters  Compilers and other translators  Interpreters  Tombstone diagrams  Real vs virtual machines  Interpretive compilers.
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.
Debugging, Build and Version Control Rudra Dutta CSC Spring 2007, Section 001.
Smith’s Aerospace © P. Bailey & K. Vander Linden, 2005 Architecture: Component and Deployment Diagrams Patrick Bailey Keith Vander Linden Calvin College.
Trying to like a boss… REVERSE ENGINEERING. WHAT EVEN IS… REVERSE ENGINEERING?? Reverse engineering is the process of disassembling and analyzing a particular.
© Janice Regan, CMPT 128, Jan CMPT 128 Introduction to Computing Science for Engineering Students Creating a program.
1 CSE 2102 CSE 2102 CSE 2102: Introduction to Software Engineering Ch9: Software Engineering Tools and Environments.
© SERG Reverse Engineering (Introduction to Binary Reversing) Software Reversing Engineering (a.k.a. Reversing) Spiros Mancoridis.
Karolina Muszyńska. Reverse engineering - looking at the solution to figure out how it works Reverse engineering - breaking something down in order to.
TOPIC R Software Maintenance, Evolution, Program Comprehension, and Reverse Engineering SEG4110 Advanced Software Design and Reengineering.
Software development process ธนวัฒน์ แซ่ เอียบ. The development process Process –set of rules which define how a development project. Methodology and.
CS266 Software Reverse Engineering (SRE) Reversing and Patching Java Bytecode Teodoro (Ted) Cipresso,
EECS 354 Network Security Reverse Engineering. Introduction Preventing Reverse Engineering Reversing High Level Languages Reversing an ELF Executable.
Selected Topics in Software Engineering - Distributed Software Development.
UML diagrams What is UML UML diagrams –Static modeoing –Dynamic modeling 1.
SEMINAR WEI GUO. Software Visualization in the Large.
Protecting User Interfaces By: Mike Krause. Step #1 Don’t get a job.
CSSE 375 Software Construction and Evolution: More SCM, and a loop back to Feathers! Shawn and Steve Left – On big systems, SCM is a well-defined process.
Back to the Basics The Ethical Aspect of Reverse Engineering.
Computer Systems & Architecture Lesson 4 8. Reconstructing Software Architectures.
Protecting Software Code By Guards The George Washington University Cs297 YU-HAO HU.
1. 2 Preface In the time since the 1986 edition of this book, the world of compiler design has changed significantly 3.
Computing System Fundamentals 3.1 Language Translators.
Reverse Engineering - Padma Dasari. Reverse Engineering Engineering is the profession involved in designing, manufacturing, constructing, and maintaining.
©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.
Understanding the Behavior of Java Programs Tarja Systa Software Systems Lab. Tampere Univ. Sookmyung Women’s Univ. PSLAB Choi, yoon jeong.
1 Technical & Business Writing (ENG-715) Muhammad Bilal Bashir UIIT, Rawalpindi.
 Programming - the process of creating computer programs.
Object Oriented Analysis and Design 1 Chapter 9 From Design to Implementation  Implementation Model  Forward, Reverse, and Round-Trip Engineering  Mapping.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
© SERG Reverse Engineering (REportal) REportal: Reverse Engineering Portal (reportal.cs.drexel.edu)
Reverse Engineering. Reverse engineering is the general process of analyzing a technology specifically to ascertain how it was designed or how it operates.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 Extracting Sequence.
Reverse Engineering CS3300 Fall What is it? Extracting design information from existing software Two types: Source Code based (easier) or Binary.
“Software reverse engineering involves taking an existing system for which source code or proper documentation is not available and attempting to recover.
Reverse Engineering Dept. of I&CT, MIT, Manipal. Aspects To Be Covered Introduction to reverse engineering. Comparison between reverse and forward engineering.
Friday, 23 August 2013 Session Work out Presented By: Abhijit Pal.
Object Oriented Analysis & Design By Rashid Mahmood.
Tempus Software Maintenance and Evolution JMSE-SM&E Unit 7: Reverse Engineering Prof. Mohammad A. Mikki Gaza, Palestine,
Contents What is Reverse Engineering (RE)? Why do we need Reverse Engineering? Scope and Tasks of Reverse Engineering Reverse Engineering Tools Reverse.
Reverse Engineering Contemporary Countermeasures By: Joshua Schwartz.
CS223: Software Engineering Lecture 34: Software Maintenance.
Reversing Karthik S 1BM05CS029. What is Reverse Engineering? Reverse engineering (RE) is the process of extracting the knowledge or design blueprints.
Software Tools and Environments
Software Maintenance.
Software Maintenance
UML dynamic Modeling (Behavior Diagram)
Interactive Exploration of Reverse-Engineered UML Sequence Diagrams
Programming language translators
Software Re-engineering and Reverse Engineering
Presentation transcript:

Software Construction and Evolution - CSSE 375 Reverse Engineering Tools and Techniques Shawn & Steve Left – Reengineering from the competition can be seen as theft!

2 Using: SW Reengineering Techniques  Reverse Engineering / Redocumentation /Design Recovery  Restructuring /Refactoring  Conversion  Migration  Software Salvaging Requirements Forward Engineer Architecture Physical Design Implementation Reverse Engineer Recall the Famous “U”

Extracting Info from Software Q11

4 Visualizing Static Models Examine static structure, architecture l Relationships between software artifacts Visualization: l Class diagrams l Hierarchical graphs l Program Dependence Graphs (PDG) Q12

5 Reverse Engineering Tool: Rigi View 1 These tools use “Rigi standard format” to store relationships about a system. Like, “call main printf” to record that “main” has a dependency on the printf function.

6 Rigi View 2: Show By Class

7 Rigi View 2: Show By Class (2)

8 Visualizing Dynamic Models  Examine run-time behavior of software l Debugger, profiler, source code instrumentation  Visualization: l Scenarios (sequence diagrams, activity diagrams) l State diagrams l Animations Q13

jGRASP Control Structure DiagramUML Class Diagram Data Structure Diagram

jGRASP Environment 10

Reverse Engineering: Alias “Reversing” “If you think Reverse Engineering Design from Java is hard, abstracting up from binary is near impossible!” Shawn “However, don’t count on the fact that hackers can’t do it!” Steve

12 Software “Reversing”  Reversing is dissecting a program and examining its internals  Common applications of Reversing in the software industry to recover the source code of a program because: l Source code/documentation was lost l Need to find how the program does particular operations l Need to improve the performance of a program l Need to fix a “bug” l Need to identify a security vulnerability / malware Q14

13 Model of Reversing Hard, but doable if the conditions are good. Really hard, and traction is mostly when small segments or simple situations are attempted. Q15

Hex Editors  Hex editors read executing programs from RAM  Display their contents in hexadecimal code  Enable the editing of the running hexadecimal code Hex EditorsRAM Editor Data Recovery Tools RAM Disassembler WinHexxx Tsearchxx

15 Hex Editors: WinHex

Decompilers  Decompile a binary programs into readable source code  Replace all binary code that could not be decompiled with assembly code DecompilerExecutable Source Code Q16

17 Decompilers: REC

18 Disassemblers/Debuggers: OllyDbg

19 Legal Issues: Interoperability  Exposed software interfaces allows development of interoperable software that runs on the platform  Legal case: Sega vs. Accolade l Ruled in favor of Accolade as they did not violate code copyright of Sega

20 Legal Issues: Competition  Opponents of software reversing claim that it stifles innovation  Illegal l Quite provable: directly stealing code l Hard to prove: decompiling programs and recompiling them to generate a different, but functionally equivalent binary  Legal l Reversing small parts of a product to gather information, not code l Then develop code independently l Funny how scale and independence plays such a role… Q17

21 Legal Issues: Copyright Law  Copyright violation: directly copy protected code sequences from the competitor’s product into you own product  Some have claimed that intermediate copies during RE decompilation violates copyright  If the final product does not contain anything that was directly copied from the original product, copying is considered fair use