views:

84

answers:

1

I know it is impossible to 100% guarantee from cracking your real-world software. But I want only protect my product from unauthorized accessing of normal user.

.Net framework has feature about strongly-typed name that can be used to protect software because you can specific what assembly and public key token will be loaded.

So, what is the best idea for preventing product from cracking by using Public key token?

A: 

The purpose of strong-naming is to ensure that when you load an assembly, you are loading the assembly that you think you're loading. So if you load assembly with full name System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL the strong-name works to ensure that you load this assembly and that some evil corporation hasn't slipped another assembly in its place. Strong-naming will not help you prevent unauthorized access to your software.

Jason
I know. But if you have some engine to load specified assembly, you can manage your application to be loaded or not without require other code and it is impossible to create fake assembly that has same public key token. So it should make your application hard to crack or abuse.
Soul_Master
When I think of the word "crack" in reference to software, I think of circumventing security measures that are in place to protect the software. If someone has a copy of your application and a copy of the assembly that it's expecting, there is nothing in strong-naming to prevent them from copying those files and providing them so something else. This is not the problem that strong-naming was meant to solve.
Jason
Soul_Master
No. Once an assembly is strongly-signed with a certain private key it has a fixed public-key token.
Jason
Yes. I know. I mean, if I generate assembly that can run only when machine has the same unique key and assembly must be signed with private key, application will run when user is authorized and normal user cannot create fake assembly that has the same public key token.
Soul_Master