Nightingale

What is it?

It is a small library which was developed to detach programs from the registry.

Why?

Because there are some programs which rely on the registry and therefore can’t be moved onto an USB stick. So the issue to solve was how to make these applications ‚portable‘. Many other programs also rely on special COM-objects on the system and refuse to work if they can’t find them. This wrapping is NOT supported at the moment. Another aspect is the usage as an additional way to store program settings. Since many program store their settings in the registry, nightingale can be used to store a seperate setting while preserving the one stored in the registry.

Changes of the new version

There have been the following upgrades:

  • Removed a NULL-pointer exception when passing NULL for lpData and lpcbData to RegQueryValueExA. Now a short test run with Firefox was successfull.

How does it work?

There is a new version of nightingale which employs a loader in order to hook the registry functions. This is much easier to use and leaves the binary untouched. The new version still epxorts the registry functions, even though this isn’t necessary anymore. This has been left in place since it is possible to compile the old version from the sources too.

Gathering entries

Since the hooking the installation routine would require more specialized advances I decided to create a ‚learning‘ wrapper which would store the needed entries and keep them in a table. So if a lookup is performed, the nightingale table is checked first and if no match is found a new entry is generated from the data obtained from the registry. The creation of new keys is also intercepted so that only a table entry is generated.

Usage

In order to use the library you need to do a few simple steps:

  • copy the nightingale.dll and the loader.exe into the folder where target is stored
  • create a shortcut to the loader.exe
  • right click the shortcut and select properties
  • add to the end of the target field the name of the executable that shall be started by the loader
  • run the loader with the shortcut

After you’ve finished working with the program and closed it, a file with the ending of ‚.ntg‘ should appear in the programs folder. This is where nightingale stores the used entries. When starting the program again there won’t be any access to the registry. Any key already known will be provided by nightingale.

NOTICE

Just to clarify, if you actually make an application portable by using this library, please bear in mind that this might collide with the EULA of the respective program. This is not the intention of this ‚product‘.

Download

  • Library

    This archive contains the nightingale.dll, the loader.exe and a readme file

  • Sources
    This archive contains the sources for nightingale and the loader.

Thanks to…

  • CryptoCrack for continous testing, suggestions and all the patient support.

Contact

nightingale @ [this domainname].biz

Last update: 16.01.2008