• ArmDot Home
  • Documentation
  • Tutorial
  • API
  • Download
Show / Hide Table of Contents
  • Getting Started
  • Tutorial
  • MSBuild Obfuscation Task
  • Embedded Files
    • Embedded Files
    • Predefined Directories
  • Key Generators
    • Key Generator for PHP
    • Key Generator for C/C++
  • Command Line Tools
    • ArmDotConsole.exe
  • API
    • ArmDot.Api.Keys
      • LicenseKey
      • LicenseKeyDecoderError
      • LicenseKeyDecoderException
    • ArmDot.Client
      • Api
      • Api.Hardware
      • Api.LicenseKeyState
      • EmbedFileAttribute
      • HideStringsAttribute
      • IntegrityCheckingAttribute
      • ObfuscateControlFlowAttribute
      • ObfuscateNamesAttribute
      • ObfuscateNamespacesAttribute
      • ProtectEmbeddedResourcesAttribute
      • VirtualizeCodeAttribute
    • ArmDot.Engine.MSBuildTasks
      • ObfuscateTask
  • Obfuscation Attributes
  • Stack Trace Deobfuscation
  • ArmDot Warnings
    • How to disable a warning?
    • Warning ARMDOT0001
    • Warning ARMDOT0002
    • Warning ARMDOT0003
    • Warning ARMDOT0004
    • Warning ARMDOT0005
    • Warning ARMDOT0006
    • Warning ARMDOT0007
    • Warning ARMDOT0008
  • Glossary
    • Hardware Id
  • License
  • Activation

ArmDotKeyGen.php

ArmDotKeyGen.php is a template of PHP script created to automate generating of license keys. One can use ArmDotKeyGen.php on a web server to create license keys.

The script is installed into ArmDot installation directory, by default ArmDotKeyGen.php is available via the path %ProgramFiles(x86)%\ArmDot\keygens\php\ArmDotKeyGen.php or %ProgramFiles%\ArmDot\keygens\php\ArmDotKeyGen.php.

Usage

As ArmDotKeyGen.php is a template only, one needs to modify it to make it work for your ArmDot project.

Project Information

First, take two parameters, private exponent and modulus, from a project file.

Just open *.armdotproj file in your favourite text editor and find the following at the beginning:

<ArmDotProject>
  <Cryptography Method="RSA" PrivateExponent="kR4IbNzzy1J0HKsbm8CfLJget8p8Kh5XeN6kbVXgnoff8YEFjvvvyxopXGbOBdRKCjM2eFNf2fN+8Ed4RJUuL0UnUa98268qFvxM4I3mnhhIgHi9KCCI6dulJlWCJLCwMpIzAq7GLJhdjhNKwS416YwuPsx3SYioybboudS1ok8A"
   Modulus="wbe+R3ci2f5nc/KhoiNfOprHft9dZF8FlpYoRMmpqSm2CiNq2u2QrS65yGm3b1SnoZb+FqdxrQkKjdxl9yQy7hLVzkcWQRfZ13NybN6ipFfV1MBNX6bDZ7q+J+Ka8dPaFBTha5zsO/lDw5aWeallsXj0Eg90bYgKtq3XLbIbEqwA" />

private exponent and modulus are values of the attributes PrivateExponent and Modulus respectively.

Now let's modify ArmDotKeyGen.php to make it create serial keys for your application. Open it and find $armdot_project, replace values of "privateExponent" and "modulus" with ones from your project.

You should get the following:

// Take these parameters from ArmDot project
$armdot_project = array
(
    "privateExponent" => "kR4IbNzzy1J0HKsbm8CfLJget8p8Kh5XeN6kbVXgnoff8YEFjvvvyxopXGbOBdRKCjM2eFNf2fN+8Ed4RJUuL0UnUa98268qFvxM4I3mnhhIgHi9KCCI6dulJlWCJLCwMpIzAq7GLJhdjhNKwS416YwuPsx3SYioybboudS1ok8A",
    "modulus" => "wbe+R3ci2f5nc/KhoiNfOprHft9dZF8FlpYoRMmpqSm2CiNq2u2QrS65yGm3b1SnoZb+FqdxrQkKjdxl9yQy7hLVzkcWQRfZ13NybN6ipFfV1MBNX6bDZ7q+J+Ka8dPaFBTha5zsO/lDw5aWeallsXj0Eg90bYgKtq3XLbIbEqwA"
);

License Key Information

Above we discussed keygen parameters, now you need to specify license information. The ArmDotKeyGen.php provides a sample:

// Serial key parameters
$registration_information = array
(
    // The string must be in UTF-8
    "registrationName" => "UserName",

    // The string must be in UTF-8
    "registrationEMail" => "UserName@domain.com",

    // If you don't want to specify expiration date, remove or comment the following line
    "expirationDate" => array("year" => 2018, "month" => 10, "day" => 1), // 1st October 2018

    // If you don't want to specify maximum build date, remove or comment the following line
    "maximumBuildDate" => array("year" => 2018, "month" => 10, "day" => 1), // 1st October 2018

    // If you don't want to specify user data, remove or comment the following line
    "userData" => base64_decode("VXNlckRhdGE=")

    // If you don't want to specify hardware id, remove or comment the following line
    "hardwareId" => base64_decode("B5tSHNWJJ8FJe/md+ouOVFjbYmpk")
);

In most cases, one get parameters from CGI parameters.

Error Handling

Also you might be interested in making your version of the function on_keygen_error that is called when the keygen encounters an error. This is version by default:

// This function is called when the keygen encounters an error
function on_keygen_error($errorDescription)
{
    echo("No license key generated. Please contact vendor for details\n");

    // Send an e-mail or write to a database
    //mail("support@yourdomain.com", "Keygen error", $errorDescription);

    // Prints error to stderr
    fwrite(STDERR, $errorDescription);

    // Exit with error
    exit(-1);
}

Back to top Armdot Home | Copyright © Softanics | Generated by DocFX