|
Without any doubts you know what Borland C++Builder
is. Being a high-end IDE coupled with a middle/low-end
compiler and linker (not to mention their object library),
it is widely used to quickly and easily (thanks to IDE)
create bi-i-iig and slo-o-oow (thanks to the rest of
the package) applications.
Seems like ordinary bugs were not enough for Borland
software engineers. They felt they needed to implement
something really spicy and special... And here it is:
every standalone executable built
by BCB in full release mode (without dynamic RTL and
runtime packages) has... an export section. Nothing
occurs to me but a loud orgasmic "Wow!". So
here it is: "WOW!"
Not only this really unnecessary export section adds
to the size of executable (in most cases it really ADDS
MUCH), it also reveals internal names used in your source
code. Needless to say, any software cracker will be
really happy to find something that looks as appealing
as a method like @TRegForm@CheckRegCode$qqrv exported
by your executable...
Quite naturally, this cool pheature cannot be turned
off (I think, it is exactly this pheature that Borland
calls "smart linking" in online documentation).
Another cool pheature in BCB is the possiblity to strip
relocations from executables. Although fully supported
by the linker (-B switch), it makes IDE crazy and even
if you manually add this switch to the linker flags
in your project file, IDE will automagically remove
it next time you change any project option.
Now it's time to introduce KillExp
- a simple post-processor for applications generated
by BCB. KillExp
does only two very simple things (they are really simple
as soon as you know how to do them): it removes the
export section and (optionally) strips relocations thus
making executables smaller and a bit less crackable.
You don't have to deploy
KillExp constantly
during your development cycle, the only time you need
it is when you build a release and want to make it available
for users. Executable size gain for average projects
may be 64-128K or even more for big projects with lots
of forms and components.
Of course, chances are that your particular project
really needs the exports and/or relocations so it is
always a good idea to check if your executable is still
functional after processing by KillExp.
No extensive debugging is necessary, just the fact that
it can start is enough in most cases.
Chances are that KillExp
may be useful for other Borland compilers like Delphi
or C++. However, I did not test the program with these
compilers.
Good news is that KillExp
is totally free. Another good news is that KillExp
source code is freely available so that you may customize
it to your own taste.
|