是否应对HASP供应商代码进行加密/混淆?

时间:2013-11-18 17:06:29

标签: c# obfuscation sentinel hasp

这与SafeNet / Aladdin Sentinel HASP密钥有关。我已经发布到他们的网站上,但万一其他人都知道答案或者找到有用的答案,我也会在这里发帖。

根据SafeNet提供的文档"软件保护和许可Guid.pdf"我们应该保密我们的供应商代码,对吧?

好吧,如果我构建" \ Samples \ Runtime \ csharp \"中提供的示例,然后使用Envelope保护应用程序,然后在JetBrains dotPeek中反编译已包含的应用程序,我可以看到供应商代码很容易在那里串起来。似乎Envelope不会混淆const字符串。或者也许是它的班级字符串,我不知道。

这是使用供应商代码的推荐方式吗?似乎不是很秘密。如果我将Vendor Code字符串放入函数中的临时变量中,那么它会被混淆。是应该这样做的吗?如果是这样,示例代码是否应该反映出来?

感谢。

1 个答案:

答案 0 :(得分:5)

我们注意到了同样的事情。 const字符串未被混淆的原因可能是由于const变量是compile time constant这一事实,它允许编译器将const变量的引用替换为常量值本身at {编译时间。因此,在包络过程开始时,基本上没有const字符串字段进行混淆。 (这不完全正确 - const的定义在IL中保留,但仅用于文档目的;任何代码都不引用它。)

我们处理此问题的方法是使用static readonly字符串,在static构造函数中初始化。这样做将字符串值存储为运行时常量,允许包络过程正确访问它们以进行混淆。 (正如您所提到的,通过反编译程序集来验证这一点。)