ZEROIFY

A program that obfuscates client-facing website code while maintaining debuggability

What is ZEROIFY?

ZEROIFY is a program for obfuscating client-facing website code by means of data masking html IDs, html attributes, css classes, javascript variables, and javascript function names.

Time saver

Compared to other obfuscators, ZEROIFIED code takes a fraction of the time to debug issues, especially javascript bugs.

Faster Load Times

Other obfuscators cause websites to run slower. ZEROIFY always minifies. Paid version has "Compact Code" mode.

Debuggable code

Because code syntax is not altered (but is minified), the code can still be debugged as easily as before ZEROIFY was used.

Protects Your Code

ZEROIFY makes it harder to reverse engineer your code, protecting you from business or competitive loss.

Novelty Minification

Imprint any long "word" you want into code element names.
Element rename example: "ZERO00IFY"

Compact Minification

Reduce file sizes and save precious bytes of data.
Element rename example: "Z4" or "ZQ".

Offline program

Put your website project into an input folder and it will spit out your ZEROIFIED code into an output folder.

BEFORE: What are these code elements for?

  • #BackgroundColorRegion
  • .TopLeftLogoImage
  • _RedirectUserToBuyNowPage()

AFTER: What about after ZEROIFY has been used?

  • #ZERO00IFY
  • .ZER0O0IFY
  • _ZEROO0IFY()

Examples

Quickly get started using the ZEROIFY.exe program:
Download an example website project that is ready to be ZEROIFIED as is.
Zeroify.exe.config file included.

1) Html Website Download
2) ASP.net Website Download
3) Html Website + 3rd party js/css Download
ZEROIFY.com has been ZEROIFIED by the ZEROIFY trial!
View Source

Examples: Code Snippets

Get a quick glimpse at what ZEROIFY does with a few code snippets below.


HTML

Before:

    <p class="leftwrapper">
        <a href="#" id="btnAdd" 
        onclick="DoSomething(this)" 
        attrUserID="1234" 
        class="someclass">click here</a>
    </p>
                     
After:

    <p class="ZER00OIFY">
        <a href="#" id="ZERO0OIFY" 
        onclick="ZEROOOIFY(this)" 
        ZER0OOIFY="1234" 
        class="ZEROO0IFY">click here</a>
    </p>
                     

    <p class="ZA">
        <a href="#" id="ZC" 
        onclick="ZF(this)" 
        ZR="1234" 
        class="ZB">click here</a>
    </p>
                     

CSS

Before:
    
    H1 { font-size:30px; }
    .contentwrapper { margin:15px; }
    div.btnBuyNow, a.btnBuyNow:hover { color:blue; }
    #lg-region-8 { color:green; }
    
After:
    
    H1 { font-size:30px; }
    .ZER0OO0IFY { margin:15px; }
    div.ZER00O0IFY, a.ZER00O0IFY:hover { color:blue; }
    #ZER00OOIFY { color:green; }
    
    
    H1 { font-size:30px; }
    .Z3 { margin:15px; }
    div.ZJ, a.ZJ:hover { color:blue; }
    #ZQ { color:green; }
    

JavaScript

Before:

    var lastTimeButtonWasClicked = null;
    function AlertLastClickTime() {
        lastTimeButtonWasClicked = (new Date()).toString();
        var contentHtml = document.getElementById("contentwrapper");
        contentHtml.innerHTML += lastTimeButtonWasClicked;
    }
                    
After:

    var ZER0O00OIFY = null;
    function ZER0O0OOIFY() {
        ZER0O00OIFY = (new Date()).toString();
        var n = document.getElementById("ZER0OO0IFY");
        n.innerHTML += ZER0O00OIFY;
    }
                    

    var ZB = null;
    function ZD() {
        ZB = (new Date()).toString();
        var n = document.getElementById("ZW");
        n.innerHTML += ZB;
    }
                    

Documentation

How to use ZEROIFY.exe

  • Download ZEROIFY.exe and save it to your local computer.
  • 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.

Before using ZEROIFY:

  • html: <a href="#" customAttribute="123" attrUserID="5678" dontZeroifyMe="5678">hello world</a>
  • css:  .customAttribute, .attrUserID{}

After using ZEROIFY:

  • html: <a href="#" ZERO0O0IFY="123" ZEROO0OIFY="5678" dontZeroifyMe="5678">hello world</a>
  • css:  .ZERO0O0IFY, .ZEROO0OIFY{}

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":

  • IgnoreCssClassNamesLessThanOrEqualToTotalCharacters
  • IgnoreJavascriptFunctionNamesLessThanOrEqualToTotalCharacters
  • IgnoreJavascriptGlobalVariableNamesLessThanOrEqualToTotalCharacters

License

TRIAL PAID
Unlimited uses YES YES
Obfuscates website code YES YES
Minifies JS and CSS YES YES
ZEROIFY.com link auto inserted into html YES NO
Can change what the ZEROIFY output looks like NO YES

$35.00

Lifetime unlimited use of ZEROIFY per InstallationID

BUY NOW

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.

Contact

Please choose which one best fits your question

1) Sales/Licensing questions. Email
2) How do I...? REDDIT
3) I got this error... REDDIT
4) I have an idea/request. REDDIT
5) Why do you...? REDDIT
6) When will you...? REDDIT
7) You suck and I hate you. Email
8) ZEROIFY is awesome! Tell your friends!