E-Glue Application Merging executables in WIN32 environment By : Gil Arbeli, Ran Didi Instructor : Gal Badishi Softlab – June 2006.

Slides:



Advertisements
Similar presentations
Remote Controlled Agent Avital Yachin Ran Didi SoftLab – June 2006.
Advertisements

SYSTEM PROGRAMMING & SYSTEM ADMINISTRATION
Mr. D. J. Patel, AITS, Rajkot 1 Operating Systems, by Dhananjay Dhamdhere1 Static and Dynamic Memory Allocation Memory allocation is an aspect of a more.
Copyright © 2002 W. A. Tucker1 Chapter 1 Lecture Notes Bill Tucker Austin Community College COSC 1315.
CS 31003: Compilers ANIRUDDHA GUPTA 11CS10004 G2 CLASS DATE : 24/07/2013.
1 Starting a Program The 4 stages that take a C++ program (or any high-level programming language) and execute it in internal memory are: Compiler - C++
Programming Types of Testing.
{ Dominion - Test Plan Version 1 – 22 nd Apr Aravind Palanisami.
Creating a Program In today’s lesson we will look at: what programming is different types of programs how we create a program installing an IDE to get.
Labreg in WPF By Lior Shetrit Semester: Spring 2009 Instructor: Viktor Kulikov March 25, 2009 Networked Software Systems Lab Department of Electrical Engineering,
1 Lecture 1  Getting ready to program  Hardware Model  Software Model  Programming Languages  The C Language  Software Engineering  Programming.
1/28/2004CSCI 315 Operating Systems Design1 Operating System Structures & Processes Notice: The slides for this lecture have been largely based on those.
Mark Rees Microsoft Consulting Services OFC409 Windows Workflow Foundation (WF) Primer Creating WF programs in Visual Studio Creating workflow templates.
Course Introduction and Getting Started with C 1 USF - COP C for Engineers Summer 2008.
Copyright Arshi Khan1 System Programming Instructor Arshi Khan.
Systems Software Operating Systems.
Types of software. Sonam Dema..
- Chaitanya Krishna Pappala Enterprise Architect- a tool for Business process modelling.
Java Software Solutions Lewis and Loftus Chapter 2 1 Copyright 1997 by John Lewis and William Loftus. All rights reserved. Software Concepts -- Introduction.
Chapter 2 Software Tools and Assembly Language Syntax.
Section 8.2. Classification of Software
OBJECT MODULE FORMATS. The object module format we have employed as an educational device is called OMF (relocatable object format). It’s one of the earliest.
Trying to like a boss… REVERSE ENGINEERING. WHAT EVEN IS… REVERSE ENGINEERING?? Reverse engineering is the process of disassembling and analyzing a particular.
Architecture of.NET Framework .NET Framework ٭ Microsoft.NET (pronounced “dot net”) is a software component that runs on the Windows operating.
Programming languages Prepared for : Yasmeen al bobo Done by Abdallah Abu Afash ID:
Incell Phonium Processor Project Plan Document Dale Mansholt Aaron Drake Jon Scruggs Travis Svehla.
Computer Architecture and Operating Systems CS 3230: Operating System Section Lecture OS-7 Memory Management (1) Department of Computer Science and Software.
Chapter 2: Operating-System Structures. 2.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Jan 14, 2005 Operating System.
CS 425 Game Programming I Jan M. Allbeck. Outline  Introductions  Expectations  Tools and setup  Quick introduction to C++ and Visual Studio  What.
Scalable Game Development William Roberts Senior Game Engineer
 2004 Deitel & Associates, Inc. All rights reserved. 1 Chapter 4 – Thread Concepts Outline 4.1 Introduction 4.2Definition of Thread 4.3Motivation for.
Replay Compilation: Improving Debuggability of a Just-in Time Complier Presenter: Jun Tao.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Memory: Relocation.
CSE 232: C++ Programming in Visual Studio Graphical Development Environments for C++ Eclipse –Widely available open-source debugging environment Available.
Using Microsoft Visual Studio C++ Express 2005 Name: Dr Ju Wang Ashwin Belle Course Resource:
Processes Introduction to Operating Systems: Module 3.
Microsoft Visual Basic 2005 BASICS Lesson 1 A First Look at Microsoft Visual Basic.
Dissecting the Windows CE Build Process James Y. Wilson Principal Engineer, Windows Embedded MVP CalAmp, Inc. James Y. Wilson Principal Engineer, Windows.
Express Application Delivery 1 Ralph Chen Innovative Solutions Co. Ltd Confidential Gaming Application Development Solution Innovation is based on ideas.
A. Frank - P. Weisberg Operating Systems Structure of Operating Systems.
Program Development Cycle
Microsoft .NET A platform that can be used for building and running windows and web applications such that the software is platform and device-independent.
FORTRAN History. FORTRAN - Interesting Facts n FORTRAN is the oldest Language actively in use today. n FORTRAN is still used for new software development.
 Programming - the process of creating computer programs.
Plug-in Architectures Presented by Truc Nguyen. What’s a plug-in? “a type of program that tightly integrates with a larger application to add a special.
Threaded Programming Lecture 2: Introduction to OpenMP.
Chapter 2. System Structures
1 Getting Started with C++ Part 1 Windows. 2 Objective You will be able to create, compile, and run a very simple C++ program on Windows, using Microsoft.
Win32 Programming Lesson 19: Introduction to DLLs.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Lesson 1 1 LESSON 1 l Background information l Introduction to Java Introduction and a Taste of Java.
The Development Process Compilation. Compilation - Dr. Craig A. Struble 2 Programming Process Problem Solving Phase We will spend significant time on.
Introduction Ken Ryall – Nokia Warren Paul – Nokia Daymon Rogers – Freescale John Cortell - Freescale.
Chapter 11  Getting ready to program  Hardware Model  Software Model  Programming Languages  Facts about C++  Program Development Process  The Hello-world.
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
Some of the utilities associated with the development of programs. These program development tools allow users to write and construct programs that the.
Object Files & Linking. Object Sections Compiled code store as object files – Linux : ELF : Extensible Linking Format – Windows : PE : Portable Execution.
Introduction to Operating Systems Concepts
Chapter 4 – Thread Concepts
GFE Control Panel Guy Ezra Prof. Ran Giladi Mr. Niv Yemini.
Component 1.6.
Before You Begin Nahla Abuel-ola /WIT.
ECE Application Programming
Chapter 4 – Thread Concepts
CE-105 Spring 2007 Engr. Faisal ur Rehman
Chapter 1 Introduction(1.1)
Computer Terms Review from what language did C++ originate?
CSC 497/583 Advanced Topics in Computer Security
Hello World Program In Visual Studio and Debugging
Presentation transcript:

E-Glue Application Merging executables in WIN32 environment By : Gil Arbeli, Ran Didi Instructor : Gal Badishi Softlab – June 2006

Problem  Adding functionality to a proprietary software.  Adding functionality to applications without the need to rewrite them.  Adding an ability to run sequentially two (or more) applications.

Problem example ( … )  An office management application + a backup component.  A cleanup component + application with private data.

Goals  Providing an elegant generic solution for “ Gluing ” two unrelated application together.  Producing a single executable while maintain both original applications ’ functionality.  Learn the “ behind the scenes ” of running application in windows environment

header imports sections resource PE data needed in order to execute the application Imported functions needed for the application Code and data of the application Additional data used by the application File Structure

Implementation Issues  Setting the environment for each application.  Merge the application in a smart way so the wont interrupt each other.

Solution approach  Both of the applications are in the same memory space.  Choosing in Runtime which of the applications will be executed.

First approach  Find and capture the exit points of the first application.  Not feasible to capture all the exit points of an application.

Accepted approach  Each application will run as a separate process.  Second application will wait until first one will terminate.  This approach omits the problem encountered in the previous one.

Problems encountered  Windows loader can be run only once.  Applications compiled to run alone.

What have we done We separated the solution into two main components:  Loader – setting the environment  Creator - Gluing them …

Gluing applications : Loader Sections Imports App.2 Imports Resources App.1 Code & Data Sections Imports Resources Code & Data Sections Imports Combined Imports Code & Data Sections Code & Data Sections App.1 Sections App.2 Sections Resources Imports

- Loader Flow diagram Start Set environment for first application Run first application Wait for first application to terminate Run second application Wait for second application to terminate End Set environment for second application End In a new process End

Drawbacks of solution  Not keeping the purpose of all sections (i.e. Export, reloc, Debug sections).  If the second applications uses command line arguments, the command line will not be forward (only to the first application).

Theoretical background  Understanding the structure of the Portable Executable (PE) format.  Loading process of a PE file.  DLL ’ s loading process in windows32 environment.  Inter-process synchronization.  Windows32 API ’ s.

Implementation and Tools  The creator module was written in C  The loader module was written in Assembly  Microsoft visual studio 2005  Masm32  Windbg (windows debugging tool)  Softlab people and facilities

Future development  Extend the E-glue idea to more operating system platforms.  Enhance the functionality of a glued application (e.g. arguments)

Educational revenue  Deep understanding of the Portable Executable file format, and Windows executables loading process.  Experience in using Reverse Engineering Techniques.  Writing small low-lever assembly code.  Using Windows APIs.

conclusion  Provide a proof of concept solution for an idea for the windows32 platform system.  Learn various fields within the scope of our project.

Thanks to …  Gal Badishi - our instructor, and the one that came up with the E-Glue idea.  The Soft-Lab staff, that was kindly enough to try and help us with a bunch of weird problems we encountered.