Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

developer:monkeycompilerlicensing [2015/09/14]
127.0.0.1 external edit
developer:monkeycompilerlicensing [2016/01/29] (current)
sandy
Line 1: Line 1:
-====== Monkey Script Compiler Licensing ​information ​====== +====== Monkey Script Compiler Licensing ​Information ​====== 
-> **Summary:​** //License protection for Monkey-made ​plugins.//+> **Summary:​** //License protection for Monkey-made ​plug-ins.//
  
-=====Contents===== 
-  * [[#How does licensing work?]] 
-  * [[#​Disclaimer]] 
  
-| [[#Back to top]]| 
- 
----- 
-\\ 
  
 =====How does licensing work?===== =====How does licensing work?=====
  
-The licensing implementation in Monkey ​plugins has been made to look the same as other Robert McNeel & Associates products, ​though ​the security is not as good as with official McNeel license codes. (Please ​[[#read the disclaimer]] before you use this feature.)+The licensing implementation in Monkey ​plug-ins may look the same as other Robert McNeel & Associates products, ​but the security is not as good as with official McNeel license codes. (Please read the disclaimer ​below before you use this feature.)
  
 The licensing system has to cater for the following needs: The licensing system has to cater for the following needs:
  
-  * There have to be multiple ​valid licenses available for every *.rhp the compiler generates. +  * Multiple ​valid licenses ​must be available for every *.rhp the compiler generates. 
-  * Licenses can only be generated by the person making the plugin+  * Licenses can only be generated by the person making the plug-in
-  * It must be possible to generate additional licenses ​at any time that work with an existing *.rhp. +  * At any time, it must be possible to generate additional licenses that work with an existing *.rhp. 
-  * A license protected ​plugin ​will not run without a valid license.+  * A license protected ​plug-in ​will not run without a valid license.
   * A license may not be transferred to another computer.   * A license may not be transferred to another computer.
  
-When you compile a new Monkey-made ​plugin, you can check the [Licensed pluginbox on the Compilation page in the Wizard to unlock the license options:+When you compile a new Monkey-made ​plug-in, you can check the **Licensed plugin** box on the Compilation page in the Wizard to unlock the license options:
  
 | {{:​legacy:​en:​MonkeyCompiler_CompilePageDefault.png}} | | {{:​legacy:​en:​MonkeyCompiler_CompilePageDefault.png}} |
  
-If you do not check the [Licensed pluginbox there will be no licensing code whatsoever. If you do not intend to sell your plugin ​this is probably what you want. If you do check the box, you'll have to set the license settings before you can complete the Wizard and compile your plugin. Press on the [License options...button to change the settings. The first time you enable the licensing option, this dialog will be opened ​automatically.+If you do not check the **Licensed plugin** box there will be no licensing code. If you do not intend to sell your plug-in ​this is probably what you want.  
 + 
 +If you do check the box, you'll have to set the license settings before you can complete the Wizard and compile your plug-in. Press the **License options...** button to change the settings. The first time you enable the licensing option, this dialog will open automatically.
  
-\\ 
  
 | {{:​legacy:​en:​MonkeyCompiler_LicensingOptions.png}} | | {{:​legacy:​en:​MonkeyCompiler_LicensingOptions.png}} |
Line 35: Line 29:
 \\ \\
  
-You have to do two things when making a license protected ​plugin:+You have to do two things when making a license protected ​plug-in:
  
   * Set a product password   * Set a product password
Line 42: Line 36:
 \\ \\
  
-The product password you choose has to be unique and hard to guess since it is the only thing that stops other people from generating valid licenses for your product. You can specify any text, as long as it is safe (your dogs name, your highschool sweethearts dogs name, your aunts dogs name and so on and so forth). You will also need to remember this text if you intend to generate more licenses ​at a later time (when you save a license table, the product password ​will be saved for you, so you don't //​actually//​ have to remember it. Also, if you save your plugin ​project as an *.mcp file the license password ​will be stored)Whenever ​you change the product password a new example key will be generated and displayed on the form. You can copy this key to the windows clipboard (in case you need one quickly) with the [Copy keybutton. This example license is only one of many valid license keys that will unlock a plugin ​protected by your current password.+The product password you choose has to be unique and hard to guess. It is the only thing that stops other people from generating valid licenses for your product. You can specify any text, as long as it is safe (your dog'​s ​name, your high school sweetheart'​s dog'​s ​name, your aunt's dog'​s ​name and so on and so forth). You also need to remember this text if you intend to generate more licenses later(When you save a license table, the product password ​is saved for you, so you don't //​actually//​ have to remember it. Also, if you save your plug-in ​project as an *.mcp file the license password ​is stored.) When you change the product password a new example key is generated and displayed on the form. You can copy this key to the windows clipboard (in case you need one quickly) with the **Copy key** button. This example license is only one of many valid license keys that will unlock a plug-in ​protected by your current password.
  
 \\ \\
  
 The product code is merely a decorative item. It helps to determine which product a certain license key is for. For example, if you see a license key like this: The product code is merely a decorative item. It helps to determine which product a certain license key is for. For example, if you see a license key like this:
- 
-\\ 
  
 **RH30**-PWKO-P30S-4UX0 **RH30**-PWKO-P30S-4UX0
  
-\\+You immediately know it will unlock a copy of **Rh**inoceros **3.0**. As you can see the product code uses two letters and two digits to identify the product name and product version. You can pick any combination of letters and digits. The product code has no effect on the license validity and it will be visible on the registration dialog which users have to fill out (see below).
  
-You immediately know it will unlock a copy of **Rh**inoceros **3.0**. As you can see the product code uses two letters and two digits to identify the product name and product version. However, you can pick any combination of letters and/or digits if you are so inclined. The product code has no effect on the license validity and it will be visible on the registration dialog which users have to fill out (see below). 
- 
-\\ 
 \\ \\
  
-When you are happy with the current product password and code, you can save a textfile ​with any number (one thousand by default) of unique, valid license keys. (Actually, there is no guarantee they are all unique, that would be impossible since there is only a finite number of valid licenses per password. ​However ​the chances of duplicate keys are very small indeed.) If you plan to do the bookkeeping yourself, you'll want to have a Text file, which can be easily opened and edited in notepad. If you plan to make an automated frontend for license distribution,​ you're probably better ​of with the XML file, which can be parsed using available tools. Below you see a portion of a Text license table file. (For a description of the License XML format see [[developer:​monkeycompilerlicensexmlformat|this]] page):+When you are happy with the current product password and code, you can save a text file with any number (one thousand by default) of unique, valid license keys. (Actually, there is no guarantee they are all unique. That would be impossible since there is only a finite number of valid licenses per password. ​Still, ​the chances of duplicate keys are very small.) If you plan to do the bookkeeping yourself, you'll want to have a text file, which can be easily opened and edited in Notepad. If you plan to make an automated frontend for license distribution,​ you're probably better ​off with the XML file, which can be parsed using available tools. Below you see a portion of a Text license table file. (For a description of the License XML format see [[developer:​monkeycompilerlicensexmlformat|this]] page):
  
 \\ \\
Line 67: Line 56:
 \\ \\
  
-When you give a license protected ​plugin ​to a customer, you also have to supply a valid key. Your customer ​will have to enter this key whenever ​your plugin ​loads for the first time. He/​she ​will see a registration box with a blank field. The user is allowed to enter invalid keys before the plugin ​fails to load:+When you give a license protected ​plug-in ​to a customer, you also have to supply a valid key. Your customers ​will have to enter this key when your plug-in ​loads for the first time. They will see a registration box with a blank field. The user can enter four invalid keys before the plug-in ​fails to load:
  
 \\ \\
Line 78: Line 67:
 \\ \\
  
-The registration dialog is smart enough to extract the license from a garbled string. It will ignore casing, ​whitespace, non-alphanumeric characters and the product code. Hence, the following strings will all work:+The registration dialog is smart enough to extract the license from a garbled string. It will ignore casing, ​white space, non-alphanumeric characters and the product code. Hence, the following strings will all work:
  
   * MP10 - 6MC4 - B3P1 - 6B3T - 1073   * MP10 - 6MC4 - B3P1 - 6B3T - 1073
Line 87: Line 76:
 \\ \\
  
-The instruction message on the registration dialog uses the name and version of the plugin ​that you specified in the plugin ​attributes. If you have supplied a valid URL for the Website ​(not the Update ​URL) field in the attributes, ​there will appear ​a link to your website on the registration dialog. The name of the link will be the Organization you entered in the attributes.+The instruction message on the registration dialog uses the name and version of the plug-in ​that you specified in the plug-in ​attributes. If you have supplied a valid URL for the website ​(not the update ​URL) field in the attributes, a link to your website ​appears ​on the registration dialog. The name of the link will be the Organization you entered in the attributes.
  
 \\ \\
  
-Once the user has entered a correct key and subsequently ​pressed the [Registerbutton, the plugin ​will create a new registry key under **HKEY_CURRENT_USER\Software\<​YourPluginName>​\License** ​which will be used to determine whether ​or not the plugin ​has already been registered whenever it is loaded again. If you want to disable the registration you have to delete or change this registry key. As you will notice ​the key is stored under Current User meaning your plugin ​must be registered with every user before ​he/​she ​can use it on the same machine. This registry key contains a value field with a string containing the date and time of registration and value field with a hashcode ​which makes it impossible to transfer this particular registration flag to another PC. +Once the user has entered a correct key and pressed the **Register** button, the plug-in ​will create a new registry key under **HKEY_CURRENT_USER\Software\<​YourPluginName>​\License**. This is used to determine whether the plug-in ​has already been registered whenever it is loaded again. If you want to disable the registration you have to delete or change this registry key. Notice ​the key is stored under Current Usermeaning your plug-in ​must be registered with every user before ​they can use it on the same machine. This registry key contains a value field with a string containing the date and time of registration and value field with a hash code which makes it impossible to transfer this particular registration flag to another PC.
- +
-| [[#Back to top]]|+
  
 ---- ----
-\\ 
 \\ \\
  
 =====Disclaimer===== =====Disclaimer=====
  
-We put a fair amount of effort into making the Monkey compiler licensing system secure and untransferable,​ but there are no guarantees whatsoever regarding the uncrackability of compiled *.rhp files. A motivated, experienced cracker will have little problems circumventing the license check. If you desire better security you'll have to use 3^rd^ party obfuscators,​ installers ​and/or encrypters.+We put a fair amount of effort into making the Monkey compiler licensing system secure and untransferable,​ but there are no guarantees whatsoever regarding the uncrackability of compiled *.rhp files. A motivated, experienced cracker will have little problems circumventing the license check. If you desire better security you'll have to use third party obfuscators,​ installersor encrypters.
 \\ \\
  
 ---- ----
  
-This software is provided on an "as is" ​basis without warranty of any kind, expressed or implied, including but not limited to the implied warranties of merchantability and fitness for a particular purpose. The person using the software bears all risk as to the quality and performance of the software. The author will not be liable for any special, incidental, consequential,​ indirect or similar damages due to loss of data or any other reason.+This software is provided on an //as is// basis without warranty of any kind, expressed or implied, including but not limited to the implied warranties of merchantability and fitness for a particular purpose. The person using the software bears all risk as to the quality and performance of the software. The author will not be liable for any special, incidental, consequential,​ indirect or similar damages due to loss of data or any other reason.
  
 ---- ----
Line 115: Line 101:
  
 {{tag>​Developer RhinoScript_Monkey}} {{tag>​Developer RhinoScript_Monkey}}
- 
developer/monkeycompilerlicensing.txt · Last modified: 2016/01/29 by sandy