PEBundle
©2000 Jeremy Collake
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