![]() ![]()
A possibility to solve this problem, and in general to improve the protection offered by the software key, is to generate a machine code starting from a combination of values instead of starting from the MAC address only. ![]() This means that the same machine code will be generated for two different machines both without a network card. APIs UuidCreate and UuidCreateSequential will return a constant UUID. #Program Protector License Key windowsThis implies that this function doesn't work properly in Windows NT, if a certain service pack has been installed.Īnother problem arises on computers without any network card. Note: in the code related to NT, we didn't check the service pack version installed. We could have used UuidCreateSequential for all operating systems, but unfortunately, it is not always present in Windows NT, depending on the service pack that has been installed. However, as MSDN library states, in Windows XP/2000, the API UuidCreateSequential returns a UUID that is a function of the MAC. This is due to the fact that, in Windows XP/2000, the UuidCreate function internally called by CoCreateGuid, generates for security reasons an UUID that cannot be traced to the Ethernet/token ring address of the computer on which it was generated. For doing that, if the operating system is Windows 2000, ME or XP, we have used the API UuidCreateSequential otherwise, if the operating system is NT, we have used CoCreateGuid. The method RetrieveMACAddress retrieves the MAC. ![]() Static RETVALUE GetSoftwareKeyStringFromIniFile( In this section, we give a brief description of the class CSoftwareKey whose methods will be used in “ protected_comp.exe”, “ softwarekey_vendortool.exe” and “ softwarekey_customertool.exe”.Ĭonst BYTE pMachineCode, #Program Protector License Key installThe following picture tries to illustrate the steps needed to produce and install a software key valid for a certain machine A. Furthermore, it is possible to create a tool that automates the software key installation. It is possible to save it in the registry. For simplicity, we save the software key in an “ini” file. At this point, the customer can use our component “ protected_comp.exe”. On receiving the “software key”, the customer has to install it in the file “ protected_comp.ini”. We will introduce some possible techniques in the following sections.Īfter generating the “software key”, we need to send it to the customer. #Program Protector License Key serialMoreover, it is possible to use other data than the MAC address as a seed (F.Y.I., CPU identifier, Windows serial number, etc.), but our choice seems to be easier and quite general. In order to improve protection, more complex algorithms should be used. Note: In the code provided with this article, functions f and g are just simple permutations of the MAC address. We can view the machine code generation as the application of a function f to the MAC address: Substantially, this signature is obtained using the MAC (Medium Access Control) address (i.e., usually an Ethernet address) as a seed. This “machine code” can be viewed as a signature of the machine in which the tool “ softwarekey_customertool.exe” has been run and in which the “ protected_comp.exe” will be executed. Then he needs to send this “machine code” to us. In order to use our component, the customer needs to generate a “machine code” using the tool “ softwarekey_customertool.exe” we provide to him. Let's suppose we are the vendor of a certain component “ protected_comp.exe”. If he tries to install our executable on a different machine, the component won’t run. In particular, it allows us to grant to the customer the right to use our component (EXE) only on a certain machine. The software key we propose in this article, with the mentioned limitations, allows us to get the above intention. Let’s assume we would like to control how many installations our customers do. Note that the following notes are suitable for other types of components as well (e.g., DLL, COM, etc.). Let’s suppose we have a software product encapsulated in an executable (EXE) with a policy fee based on installations. In order to explain the background idea, we need to describe the context in which our software key could be useful. #Program Protector License Key how toHowever, we think that this article could be useful in allowing us to better understand the mechanisms underlain a software key.īy the way, in the following sections, we'll mention how to by-pass this protection and some ideas that could be useful to make attackers work harder. ![]() We are aware that it is quite simple by-passing the protection offered by the software key presented in this article. We want to highlight that this is just an example. In this article, we’ll show a way to implement a simple software key that could be useful for protecting software components (e.g., EXE, DLL, COM, etc.) against misuse and for keeping track of installations. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |