+======================================================+
| PE Loader with Self Learning Ability by c0rdat ^ind. |
+======================================================+

         +----------+
     The | A ny     |
         | B uild   |
         | E nabled |
         | L oader  | project.
         +----------+

Platform: Win 9x,Me,NT,2000,XP
Language: English
 contact: cordat@go2.pl

Latest version of this loader generator available at:
http://free.hostdepartment.com/c/c0rdat/
if this site is down, email me or use google with keywords:
"abel process patcher". Please note that it can take a few weeks
for google to add my new site to url list.

---------------------------------------------------------------------
The main use of this program is software testing and development.
When you use loader as the 'modifier' for your program, it is really
annoying when you have to look for specific code's RVA after each
compiling of your proggy, and modify loader to fit changes.

Imagine the situation, when you send modifiers (loaders) to your
application's testers with some version of program, and then
(and this will probably happen 5 minutes before deadline) find
a bug in program. Will you have enough time to compile it, and then
de-compile looking for interesting pieces of code, to rebuild
each of loaders-modifiers as needed... If you decide to use learning
technology, loader's rebuilding will not be needed anymore.

That's why I started the ABEL project (Any Build Enabled Loader).
Presented loader can 'learn' the new version of application if there
were no changes to pieces of code that should be patched. Loader uses
smart search technology, and (in most cases) isn't sensitive to
build-to-build changes in machine code.
It is also not sensitive to almost ANY ready-made protection system
(including exe-packers) - you can use one loader for testing the
same application packed with different protection systems.

---------------------------------------------------------------------

FAQ:

Q: What is a loader after all ?
A: A loader is a small program (sometimes called 'process patcher')
which is able to load another program and make some changes in it's
code IN MEMORY (after loading and unpacking, if .exe was packed).

Q: There are plenty loaders in internet, who needs another one ?
A: This loader is unique. It has Self Learning Ability (quite simple
idea, I don't really know why everybody isn't using it) that allows
loader to modify ITSELF when target program version changes (i.e. user
updates his version). It's not just "search&replace" patcher (sometimes
called "byte hunter"), because byte hunter looks for matching byte
sequence EVERY time target proggy is run, and ABEL does it only after
each change of application version.

Q: OK, so how does it work ?
A: Loader attempt to load target program and check if program version
matches the characteristic bytes (included in loader file itself).
In case of perfect match, it modifies the target program IN MEMORY.
If match is not 100%, loader attempts to 'learn' the new version of target
program, by searching the new locations of characteristic byte sequences.

ATTENTION:
During the learning process, target application must be loaded and running
(check taskbar). If application says 'Error...' and after clicking
'OK' just exits, DON'T CLICK OK. If target application crashes and Windows
says 'Unrecoverable application error...', DON'T CLICK OK EITHER.
Let it wait with that message visible. Give loader a few seconds,
and it will pop-up with a message. Don't let target application terminate
when learning process is in progress (this will surely cause a 'crash').
The learning process can take several minutes (depending to PC speed
and number of patches required for target application) so be patient.
When learning is finished loader will pop-up with a message.

After learning, discovered addresses are then written down to a .lrn file.
If characteristic byte sequences can't be found, you'll have to get
loader for newer version. If they are found, when you run loader next time,
it will load a set of discovered addresses from a .lrn file, and then patch
the target program, using them. Learning process will be repeated every
time you update the target application.
There if a possibility, that application version is changed, and after
learning target program isn't working at all... What you can do is try
to delete .lrn file manually, and repeat learning sequence... If it doesn't
help - you need new loader for new target program version.