jory's VB EXE Obfuscator

UPDATED AUGUST 15, 2005

have you had a look at your Visual Basic compiled projects in a hex editor?
are you aware that your object names are compiled directly into your exe's, dll's and ocx's?
are you giving away trade secrets
by just having your object names exposed?

don't sweat it..
my new VB EXE Obfuscator will...

wash them away!
yup, its true. And it's a snap to use too.
in this screen-shot I'm loading a compiled VB EXE project named 'np'.



look at the detected object names - isn't that nasty?
and this is a small project, there could be hundreds if not thousands of objects listed in there! Do you want to help others figure out how you've designed your software?

well have no fear! One pass through my whiz-bang obfuscator and...



Voila! Garbage !

Your application operates just as it did before
but without the potential security risk
!

Your original binary is not modified
the obfuscated file is saved to the same directory with the extension "-OB"

Distribute your software SAFELY
rename the obfuscated file and sleep easy!

What does this cost to use?
nischt, nada, zip, zero, nuttin. That's 0$ people!

Why am I doing this?
i think this tool will benefit everyone that comes across it

How well does it work?
stellar!
try it for yourself!

Are there limitations to the size of the source file?
files of any size can be obfuscated!

Can I use other protection software with obfuscated files?
absolutely!

What are the consequences of using this tool?
if used properly, there are none.
Make sure you TEST obfuscated files after each run!


How do you use this tool properly?
when you select a file (EXE, DLL or OCX) it will be processed and all object names will be listed in the 'object names' box. If you have not yet created a 'clusion' (*.clu) file for automated 'inclusion' or 'exclusion' of object names the application will ask you if you want to create one. a clusion file is required for command line use and will speed up interactive builds by quickly showing you what has changed since the previous build.

Using clusion files for automation
when you select Yes to "No clusion file was found for this application, do you want to create one?", this dialog appears beside the main interface

in this window you will cut and paste items from the object pool to the 'include list' or 'exclude list' boxes. Items that appear in the 'include list' will be obfuscated, and items that appear in the 'exclude list' will not be obfuscated. In addition to cut & paste, you also have two options:

the 'smart auto-include' feature will automatically scan the entire object pool for object names that conform to the VB standards (eg: lblLabel, mnuMenu, txtText, etc..) and automatically insert them in the include list.

in either list box (include or exclude) you may enter items with wildcards to specify a wide range of objects that may change over time but all conform to a specific naming convention. Example: Adding "MyApp*" to the include list will automatically obfuscate any object name that begins with 'MyApp'.

once you are satisfied with the include and exclude lists, press 'build new list' and your clusion file will be saved in the same directory as the source filename. you can now click obfuscate to create a protected file, or use the command line features described below.

Interactive obfuscation
when you select No to the question "No clusion file was found for this application, do you want to create one?", the 'OBJECT NAMES' box is used to control obfuscatation. If you see an object that you do not want obfuscated (an exported function, an imported function, a garbage object name, etc..) simply delete its line. if you do not remove unknown or illegal object names your obfuscated program will CRASH! once you are satisfied with the OBJECT NAMES list, press 'obfuscate' to create a protected file with the extension '-OB.exe'.

Can I automate the obfuscation process?
yes! and the command line interface is a snap to use.
the option -o %filename% will automatically (and quietly) obfuscate your source file, overwriting the original. Here is a simple test script for automated compilation and obfuscation:
(in a command or batch file)

rem compile exe with visual basic
"c:\Program Files\Microsoft Visual Studio\VB98\vb6.exe" /m c:\test\test.vbp
rem obfuscate exe using my obfuscator
"c:\temp\VBEXEObfuscator.exe" -o c:\test\test.exe

note that this first command line version does not support spaces within filename paths

What users have said about my Obfuscator
"Thanks Jory! VB obfuscator is exactly what we were looking for! Your simple, effective interface and ability to automate it in our builds will help protect our hard work. I wish you the best of luck with your work! I will make sure to share your tool on our 'Must Haves' Windows page."
- Christopher Williamson, Lead developer, DreamQuest Software, http://dq.com

"This app is absolutely great!"
- A leading developer of VB tools who requested his name remain anonymous

"Awesome work Jory, I've been dreaming of a tool like this since the days of VB4!"

"It certainly works"
- Cad Delworth C.Eng MBCS, Ibex Technology Ltd.

Legal Notice - PLEASE READ!
the VB EXE Obfuscator software available from the download link below has been virus tested and will only perform what is described above. VB EXE Obfuscator software was developed with good intentions for the benefit of the entire Visual Basic community. that said, please review this legal notice:

YOU USE THIS FREE APPLICATION AT YOUR OWN RISK
No liability is assumed for consequential, incidental, indirect or special damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information and the like), whether foreseeable or unforeseeable, arising out of the use of or inability to use the VB EXE Obfuscator software, regardless of the basis of the claim and even if the author has been advised of the possibility of such damage.

jory's notes

a
big thank-you
goes out to the early beta testers who sent me their EXE's for testing! some users have graciously offered to send in a registration fee (one user as high as $200!) but i'm happy to say that this product will remain free for as long as I maintain it. If you do wish to send me something, as of March 2002 I've started accepting PayPal. Click the PayPal 'buy now' button below to send me $15 which I will most probably use to buy coffee to further support this product ;)

Enjoy!

Jory


revsion history

build 340 - August 15, 2005
What's new in 340
include wildcards behave as they should
some very minor performance hacks

build 311
- September 27, 2002
What's new in 331
some mad hacks yield faster performance!
bug fix to handle invalid EXE's

build 272 - February 5, 2002
What's new in 272
support for more object types!
faster + smarter object screening
a few hard to track bugs were squashed

build 237 - January 12, 2002
What's new in 237
added support for Visual Basic 4 binaries
faster object detection & obfuscation
minor bug fixes

build 230 - January 1, 2002
What's new in 230
faster obfuscation

build 210 - November 1, 2001
What's new in 210
overall performance improvements
several minor bugfixes

build 201 - October 8th, 2001
What's new in 201
faster object detection
faster obfuscation
minor improvements

build 200 - October 2nd, 2001
What's new in 200
clusion automation
command line interface
DLL specific auto-exclusions

build 116 - July 1st, 2001
What's new in 116
10x faster than build 110
new engine - finds EVERYTHING
auto-detection and auto-exclusion of Win32 API function calls
improved obfuscation mask reduces possibility for name/size overruns
removed 'detect all objects' option
now supports windows in large fonts mode

NOTE:
please review your entire object list before obfuscating, the new engine may detect invalid object names which you must manually remove for the output file to work correctly.

build 110 - June 28, 2001
What's new in 110
3x faster object referencing
3x faster obfuscation
now handles EXE's, OCX's and DLL's
added 'detect all objects' option
smart object exclusion when 'detect all objects' option is active

build 100 - June 27, 2001
(initial release)

it's alive!

© Jory Anick, All Rights Reserved