PEBundle

©2000 Jeremy Collake

collake@charter.net

http://www.collakesoftware.com

 

 

****WARNING*********************************************************************************

This software is in its infancy, and is being distributed for beta testing purposes only. It is, by no means, intended to represent a finished product at this time.

 

This software is provided as-is, without warranty of ANY KIND, either expressed or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose. The author shall NOT be held liable for ANY damage to you, your computer, or to anyone or anything else, that may result from its use, or misuse. Basically, you use it at YOUR OWN RISK. Registration is required to continue using this software after a 14-day evaluation period has expired. Please see the registration information at the end of this document.

***********************************************************************************************

 

 

Purpose:

 

PEBundle physically attaches DLL(s) to an executable, resolving dependencies in memory and therefore removing the requirement of the DLL image(s) to be distributed with the executable, or exist as a separate physical image. PEBundle does NOT write attached DLLs to disk, but handles API dependencies transparently in memory with virtually no extra memory usage over the normal requirement for the EXE+DLL, except in the special case of, what would have been, a shared DLL module.

PEBundle is intended for the advanced user/developer and certain limitations in the current version must be observed. Basically, if you need a REAL module handle for the DLL, for use in system API calls, then PEBundle may not be any use to you in its current state (I’m working on it). However, if the DLL merely contains basic APIs that your executable calls, then PEBundle should work fine.

 

Expected Questions and Answers:

 

Q: Can I bundle multiple DLLs to an executable?

 

A: Yes. you can run PEBundle multiple times on an executable and bundle as many DLLs as you wish.

 

 

Q: Can I bundle PECompact’d executables, or PECompact bundled executables?

A: Yes. The bundling of PECompact’d executables and DLLs is supported, as is the PECompact’ion of bundled executables and DLLs.

 

 

Q: Can I bundle with system DLLs?

 

A: Yes, but doing so wastes memory and does not remove them from the process’s module list, in most cases. System DLLs are shared across processes, and the bundling of one to your executable will cause the DLL to be mapped into the process space (in most cases the shared copy of the system DLL will also be mapped into the process space, depending on the dependencies of other system DLLs.)

 

 

Q: If I call GetModuleHandle(LPSTR BundledDllBaseName) in my program, what will it return?

A: It will return a pseudo-handle to the bundled DLL. This will be a valid pointer to the DLL image in memory, but will NOT be a valid handle in most cases. You can, however, use it for GetProcAddress calls within the executable or DLL. The usage of GetModuleHandle and GetProcAddress calls will not work externally (called from another process) because the PEBundle symbiote does not intercept calls from them.

 

 

Q: When I bundle with some DLLs (including VB runtime libraries), my executable will run under WindowsNT/2k but will crash under Windows 95/98, what’s the deal?

 

A: Yea, I’m working on figuring out the cause of that problem.

 

 

Q: Can I bundle a DLL to another DLL?

A: That is not currently supported. However, PEBundle will allow you to perform that operation. So, perhaps it may work under certain circumstances.

 

 

 

License

This software is free for consumer use, that being on one computer and applications which have been processed with PEBundle may not be distributed. For shareware or commercial use, registration is required. Registration is inclusive of all future versions, so registering now in the beta stage while the price is low is probably a good idea if you feel this software will be of use to you or your company. The two types of licenses available are:


1.) Shareware   - Licensed for use by shareware authors. PEBundle’d shareware applications may be freely distributed after registration without any royalties.
Cost:  $20.

Secure online purchase via credit card: http://www.regsoft.net/purchase.php3?productid=31091

 

2.) Commercial – Licensed for use by companies or teams of programmers. PEBundle may be used on commercial applications and they may subsequently be distributed without any royalties.

Cost: $49.

Secure online purchase via credit card: http://www.regsoft.net/purchase.php3?productid=31092

 

If you do not wish to register via credit card, a check or money order may be sent to:
                          Jeremy Collake

                          PO BOX 426

                          Talbott, TN 37877