1 / 12

What are Lock Cores?

What are Lock Cores?. Lock Cores are used to encrypt and decrypt your .Net assemblies in a way that makes it more difficult to crack than just encryption by itself.

ethan
Download Presentation

What are Lock Cores?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. What are Lock Cores?

  2. Lock Cores are used to encrypt and decrypt your .Net assemblies in a way that makes it more difficult to crack than just encryption by itself. It is simple to encrypt files using built in .Net Framework classes. But it is even easier to decompile .Net code and see how you are decrypting which makes it easier for someone to crack your encrypted assemblies. Especially if they intercept your decrypt key. Lock Cores do several things to try to make it difficult to even see how the decrypt is being performed.

  3. Lock Cores are actually 2 DLLs that work together to provide encryption and decryption. One DLL is a lock, and the other is the key. There is a specific folder structure that is used to store these DLLs. First you have a folder that matches the name you gave your Lock Core. Then under that folder you have two more. One called lock. And one called key. In each of these folders are the DLLs and both DLLs have the same GUID name. My Lock Core lock d5ef387457c0415a9f67aa4d4a499a0d.dll key d5ef387457c0415a9f67aa4d4a499a0d.dll

  4. Each Lock Core can be unique which makes it even more difficult for your assemblies to be hacked. Some verify that the executable calling them is who they are expecting them to be. Some check local files for existence and contents such as license files. Some reencrypt the assemblies when they are first ran on the client using unique info on the client such as network card MAC address or hard drive serial number. Some even check the existence of hardware USB devices before decryption. My Lock Core 1 My Lock Core 2 My Lock Core 3

  5. Further Lock Cores help protect your assemblies because they are written in C++. It is well known that reverse engineering C++ is much more difficult than today's modern meta data driven languages. .Net easily decompiles. C++ doesn’t at all.

  6. The Assembly Lockbox Builder uses a Lock Core lock to encrypt each assembly into lox files.

  7. When you run your application it asks the .Net Runtime for an assembly to be loaded. Then .Net asks AssemblyLockbox.dll to load the assembly. Next AssemblyLockbox locates the LOX file, decrypts it, and passes it back to the .Net Runtime.

  8. When you ship your software you will package all your encrypted assemblies and all the keys for the Lock Cores used to encrypt them. You create Lock Cores by using the Assembly Lockbox Builder. Application.exe AssemblyLockbox.dll d5ef387457c0415a9f67aa4d4a499a0d.dll ClassLibrary1.lox ClassLibrary2.lox ClassLibrary3.lox

  9. You create Lock Cores by using the Assembly Lockbox Builder.

  10. You create Lock Cores by using the Assembly Lockbox Builder. You can select how you want your Lock Core to work. And include verification features to prevent decryption unless certain conditions are met. Then generate the Lock Core.

  11. This results in two C++ DLLs being generated (lock & key) in the selected output folder. This is why it is required to have VC++ already installed to create Lock Core DLLs.

  12. Once the Lock Core has been generated then you can set Lock Core References to it in the Assembly Lockbox Builder. A Lock Core Reference allows you to assign a Lock Core lock to individual assemblies so that each assembly can be encrypted by different Lock Cores.

More Related