Last Modified October 2, 2026

Protecting your App from Hacking

Hacking protection to prevent illegitimate Users circumventing your Application licensing should include multiple elements of an overall strategy that includes software_DNA protection.

No solution provides 100% protection from reverse-engineering and hacking, but the objective is to create multiple barriers to make it very difficult to crack through the licensing of your application.

Working to your advantage, in today’s environment, legitimate Users are more careful with hackers promising a hack around App licensing, that may also contain malware, ransomware and other nefarious add-on’s.

To date, hackers have targeted the Application itself and not the licensing library, because it is much easier to hack the App itself.

We highly recommend that you implement an overall Hacking Protection strategy for your App, which may include:

Application Signing / Notarization
(Mac OS / Android)

Applications targeted for MAC OS and Android OS generally need to be "signed" so that they can be distributed in the Apple Store and Google Store, and installed on the target device. Un-signed Applications are either flagged during installations or just not installed.

MAC OS Applications distributed outside the Apple Store need to be "notarized" by Apple to avoid being flagged during installation and start-up.

Users are thus aware if they are downloading and installing an Application from an un-trusted source.

Application Encryption
(Windows / Linux)

Encryption is a robust protection from hacking and is highly recommended for Windows or LINUX based applications, where Application signing is not the norm.

Code Obfuscation

Obfuscation attempts to make the Application's source code or machine code that much harder to understand and difficult for the hacker who may have reverse-engineered the source code or machine code of your application, in an attempt to circumvent your licensing implementation.

Obfuscation has many forms, and tools exist to automate this step. For example, in Android Studio, you can use the built-in ProGuard Obfuscation tool which will change / shorten the names of your app's classes, methods and fields to semantically obscure names. Other tools may alter your code, insert "dead code", replace function signatures, etc..

The overall objective is to make your source or machine code hard to understand for the hacker.

Detecting Runtime Environment

Many IDE's and frameworks allow you to detect if your Application is running on an emulator or in debugging mode, which would be quite suspicious for the "Release" version of your application.

Your application should just abort (immediately or delayed to confuse the hacker / user) if it detects this situation.

DNA Runtime Guards

Hackers may zero in on the API calls to the DNA Library within your Application and try to circumvent the main DNA_Validate() call at start-up.

DNA Runtime Guards take two forms:

  • placing several DNA_Validate() calls at critical / functional locations in addition to the main DNA_Validate() call at start-up
  • using the different DNA_Validate() variants (ex: DNA_Validate2(), DNA_ValidateCDM4() ) in your code that will have different function signatures in your compiled code

See Runtime Guards     for details.

DNA Library Authentication

Ensure that your Application is working with a valid / authenticated DNA Library, versus an illegitimate or hacked Library, as follows:

  • compute the MD5 or SHA1 Hash Code of the DNA Library (ex: DNA.DLL) file on the user’s device

  • compare it to the known MD5 or SHA1 code for the specific version of the DNA Library you are using

  • If it does not match, it is not a valid DNA Library, exit the program.

If your Application is signed, authenticating the library is optional.

For Windows and LINUX environments where Apps are usually not signed, authenticating the DNA Library is recommended.

 

MD5 or SHA1 Hash Algorithm

You must use the SHA1 Hash algorithm if your Users may be subject to FIPS (US Government) compliance. Do not include or use the MD5 Hash algorithm in such situations to prevent your App being blocked from running on Windows computers.

In all other situations, you can use either the MD5 or SHA1 Hash algorithm to authenticate the DNA Library.