Documentation

How to use ZEROIFY.exe

Modify the Zeroify.exe.config file: LocalPathToInputFolder and LocalPathToOutputFolder will need to point to the correct paths

Run ZEROIFY.exe manually OR as an automated task that occurs right before deploying your website.

Use the files found in the output folder LocalPathToOutputFolder as your ZEROIFIED website project files.

Which file extensions does ZEROIFY currently support?

.html & .htm

.css

.js

.aspx, .ascx, .asmx, .master (ASP.net)

.php

Can I change what the ZEROIFY output looks like?

Yes, but only in the paid full version.

There are 5 settings related to the output of obfuscated names, in the Zeroify.exe.config:

UseCompactMode

ZeroifyPrefix

ZeroifySymbol1

ZeroifySymbol2

ZeroifySuffix

By default (and by force in free version) these are set to "false", "ZER", "O", "0", and "IFY", respectively.

When UseCompactMode is set to false: If you changed the other 4 settings to let's say: "H", "A", "4", and "PPY": your obfuscated code may have names such as "HA4A4PPY", "HAAAAPPY", and "H444A4PPY"

When UseCompactMode is set to true: the other 4 settings are ignored. The obfuscated code generates much shorter names such as: "ZA1", "Z44", "ZQH", "ZRQ".

Reserved Words

Several files called Zeroify.ReservedWords.* come with the ZEROIFY.exe download. Every word in every file that starts with Zeroify.ReservedWords.* will be treated just like the entries in the config ObjectNamesToIgnoreRename: these are words and object names that will be ignored and not ZEROIFIED.

These are provided as their own files to make it much easier to manage what you do and do not want ignored and that future releases of ZEROIFY may include updates to these ReservedWords files: overwriting older versions of these files shouldn't be a problem.

You can optionally delete any or all ReservedWords files. You can also create your very own custom file by simply naming it starting with "Zeroify.ReservedWords.". The ZEROIFY program simply looks for any files starting with that: you don't have to provide the file name/path to any config.

Best Practices you should follow:

Please follow these guidelines when writing or editing your code to ensure optimal results after using ZEROIFY on your website project.

All HTML values need to be surrounded by quotes.

Either single or double quotes, doesn't matter. Not using quotes will result in ZEROIFY not recognizing it as valid HTML and will likely not be ZEROIFIED properly.

GOOD: <i class="xyz">

GOOD: <i class='xyz'>

BAD: <i class=xyz>

Everything is Case Sensitive

"SomeName" and "somename" are considered 2 different things and will not share the same ZEROIFY key/value pair. This applies to all scenarios, whether it be CSS, Html, Javascript, etc.

HTML Attributes renames trick

If there are names of things you want ZEROIFIED that may not normally be picked up automatically by the ZEROIFY software as automatically detected to be renamed, then simply add them to any .css file like this:
.nameOfObjectIWantZEROIFIED, .anotherOne, .andAnotherOne

So, if you want custom HTML attributes to be ZEROIFIED, they must also exist in a .css file somewhere

You could even create a separate "zeroify.css" file that nothing in your entire website project ever references or uses, simply for this purpose.

Make sure already minified javascript files end with ".min.js"

ZEROIFY will always ignore all files that end in ".min.js", no matter what the Zeroify.exe.config settings are.

You must include the NON minified version of .js files in your project if you wish for them to be ZEROIFIED.

This only matters if a javascript file is intended to be ZEROIFIED. Files won't be ZEROIFIED when they are on the ignore list (due to "InputFileNamesAndFolderNamesToIgnore" or "ObjectNamesToIgnoreRename" in the config), in which case it won't matter if they are already minified.

Some javascript downloads will come with both a ".min.js" and a ".js".

All HTML must have matching < and > tags and they must be propertly escaped if they are for display only.

This only matters if the ProgramMode is set to "1", the smart mode (as opposed to "0", the fast mode).

If you have text you want to display, such as a Math problem of "2 is less than 5", then you would escape the html less than sign via "&lt;" (<) html. Sames goes for "&gt;" (>). Do a view source on this exact example to see it in action: "2 < 5"

All < tags must have a matching > tag.

GOOD: <b>

BAD: <<b>

BAD: <b>>

Referencing names of classes, IDs, etc, programmatically when using partial names will no longer work.

GOOD: document.getElementByID("nameOfObject1")

BAD: document.getElementByID("nameOfObject" + "1")

GOOD: $("#nameOfClassOrId1")

BAD: $("#nameOfClassOrId" + "1")

BAD: $("#nameOfClassOrId" + i) // i = 1

Why?

Before using ZEROIFY:

html: <a id="nameOfID_1">hello</a> <a id="nameOfID_2">world</a>

javascript: $("#nameOfId_" + i) // i = 1

After using ZEROIFY:

html: <a id="ZERO00IFY">hello</a> <a id="ZERO0OIFY">world</a>

javascript: $("#nameOfId_" + i) // i = 1

Although the javascript code would be valid and work correctly before using ZEROIFY on your code,
it won't work after using ZEROIFY because the html IDs in this example have been renamed but the javascript code has not.

ZEROIFY, simply put, is a complex find/replace program that renames things it finds in files. It can't rename what it can't find or doesn't match what it is looking for to rename.

Because using partial names will no longer work, using the css wildcard selector "class*" will not work.

BAD: pre[class*="className-"]

However, the workaround is simple. In this example, you would simply include "className-*" in your ZEROIFY.config's ObjectNamesToIgnoreRename value:
This would allow the css wildcard selector to still work, but all html, css, and javascript object names or values that start with "className-" would not be ZEROIFIED.

Intentionally name things longer

This only matters if the ProgramMode is set to "0", the fast mode (as opposed to "1", the smart mode).

If you are planning to ZEROIFY your code, it makes no difference whether a class name is called "xyz" or "someReallyLongDescriptiveName". The end result is the same: they will be renamed to the same thing, such as "ZEROO0IFY".

By naming things longer, you reduce the risk of ZEROIFY accidentally renaming something it should not have.

In Fast mode, everything gets renamed, not just code. If you have text on the page that says "I love indexing tasks" and you have a javascript function called "index" and a css class name called "ask"...
Then the text on your page could become "I love ZEROO0IFYing tZEROO0IFYs".

This is one reason these configuration settings exist, and whose values are recommended to be a minimum of 5, especially when ProgramMode is "0":

How ZEROIFY Licensing works

The first time you run ZEROIFY on any computer, it will auto generate its own Zeroify.InstallationID.txt and fill it with its InstallationID.
The InstallationID is the unique identifier for your install. Provide this InstallationID to the ZEROIFY website to provide you a LicenseKey.
Copy/paste that LicenseKey into the Zeroify.LicenseKey.txt file.
This will activate the program to unlock all features and will no longer auto insert "zeroify.com" into your html files.

Acquiring the LicenseKey is a one time payment of $35.00. You can then use ZEROIFY forever on that computer.

Each LicenseKey is only valid for the specific computer that generated the InstallationID.
To use ZEROIFY.exe on any other computer, will require the purchase of another LicenseKey.
A new InstallationID will be auto generated from being used on a different computer.

The only way to acquire new updates to the software is to manually download newer versions.

Do not worry about accidentally overwriting your Zeroify.InstallationID.txt or Zeroify.LicenseKey.txt files.
Simply re-run the program and it will refill the correct InstallationID into your config file.
If you have paid for an LicenseKey already, simply copy/paste your InstallationID into the zeroify.com website and it will show you your LicenseKey.