-- I G N I T I O N --

Initial version 1.0
(14. Jun. 2000)

Copyright (C) 2000 Bruno 'Beosil' Heidelberger

///////////////////////////////////////////////// Table of Contents //

1 License

2 Introduction
2.1 What is Ignition?
2.2 Functioning
2.3 Current Features
2.4 Author

3 Package Overview
3.1 Directory Structure
3.2 Special/Important Files

4 Installation
4.1 Installation
4.2 Configuration

5 Known Problems/Bugs
5.1 Current Bugs
5.2 Feedback

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

2.1 What is Ignition?

Ignition is an educational tool demonstrating how somebody could
potentially manipulate applications in memory at runtime.

2.2 Functioning

Ignition executes the following steps when started:

1) Ignition reads the configuration file

2) The target application is searched

3) A checksum/length test is done to identify the matching patch

4) The target application is executed

5) The patch is applied to the running target application

2.3 Current Features

- runs on all Windows platforms (Win9x/NT/2000).

- target application can be specified via commandline, path or
registry-entry.

- a checksum/length test identifies and chooses the correct patch
for different versions of a target application.

2.4 Author

Bruno 'Beosil' Heidelberger (beosil@swileys.com)

3.1 Directory Structure

- Ignition        : root directory of Ignition
- Source       : source (VC6 workspace)
- Ignition  : source-code of the executable
- Dll       : source-code of the DLL

3.2 Special/Important Files

- Ignition/Ignition.cfg
This is the configuration file for Ignition. See
"4.2 Configuration" for details.

- Ignition/License.txt
This file describes the license for Ignition. Read it carefully!

4.1 Installation

The installation of Ignition is straightforward: Unpack the whole
zip-file to your "Program Files" directory.

4.2 Configuration

All information about the target application is stored in the
configuration file of Ignition (Ignition.cfg). This file contains two
parts: The first part defines the location of the target application,
the second part is a list of memory-patches for it.

Lines starting with a # are comment lines.

A target application location can be defined in three different
ways:

- !commandline
The commandline parameter of Ignition is an absolute or
relative path to the target file.
Example: !commandline

- !file <filename>
<filename> is an absolute or relative path to the target file.
Example: !file "C:\Foo\app.exe"

- !registry <key> <value> <add-on>
The path to the target file is <add-on> appended to the value
stored in <value> under <key> in the registry.
Example: !registry "Software\Foo\1.0" "InstallPath" "app.exe"

It is possible to have several target locations specified. The first
match (existing file) will be used in this case.

For every version of the target application there should be a
memory patch line defined like this:

<name> <checksum> <length> : <address> = <byte> ... <byte> , ...

- <name> is the name/description of the specific version.

- <checksum> is the CRC32 checksum of the target file in hex.

- <length> is the length of the target file in hex.

- <address> is the virtual address of a memory patch element.

- <byte> ... <byte> is a list of bytes in hex that are written
to the specified <address>.

Example: "app.exe" a1b2c3d4 1a00 : 401022 = 1f 2e , 4013ae = ff

5.1 Current Bugs

No known bugs right now. ;)

5.2 Feedback

If you find any bugs or have suggestions or questions, just drop a
mail to beosil@swileys.com. Do *NOT* ask me questions about specific
configuration files, I will ignore them.