应用程序/ DLL - 安全性

时间:2009-09-04 10:37:25

标签: security

我想知道在这种情况下保护apllication和DLL文件的最佳方法是什么:

示例:

  • 在客户端部署应用程序(软件)
  • 此软件具有DLL - 在数据工厂中使用的直接注入(MS SQL,MySQL,其他)。

通缉安全:

  • 要求#1 - 主DLL(Core)需要某种“许可证”(对于此用户和X持续时间,不能在其他计算机上使用(复制)。
  • 要求#2 - 数据工厂DLL不能被客户端自定义代码使用(他无法构建自己的代码并使用我的库。 (已编辑 - 增加了新要求)
  • 要求#3 - 使用外部公司的硬件或服务不是我们的选择。 。

我找到的解决方案:

  • 需求#1 -

    • 解决方案#1 - 软件需要自定义“保存数据文件”(对其进行全面保护),此文件将用于控制。应用程序将不时地(或者当它开始时,或者如果应用程序连续运行,则在24小时内从24小时读取它。它将存储第一个执行日期,上次执行日期,该机器的某个ID,到期日期等。 。
      • 优点:
        • 客户端无法删除它或应用程序将停止工作,他无法更改系统日期(倒回),因为该应用程序与日期匹配。
        • 如果用户想要升级过期日期,则软件允许(通过离线或在线方式)。
      • 缺点:
        • 好吧,这个文件将是一个黑客目标。我不知道保护它的最佳方法。
  • Req#2 -

    • 解决方案#1 - 我没有:P

。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 -

有谁可以告诉我有关此主题的最佳做法?

不同的解决方案,优点和缺点等......

。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 - 。 -

2 个答案:

答案 0 :(得分:0)

需求1

我不确定这是否符合您的需求,但您可以使用涉及USB加密狗的商业解决方案。您可以找到几家提供软件安全解决方案in the internet的公司。这些产品附带的大多数软件组件都包含许可和时间到期方式。 另一方面,您需要更高的硬件成本以及投入集成的时间和工作。

需求2

取决于您的DLL的接口。您是否认为您的客户或其他人可以在界面上没有适当的标题和信息的情况下轻松使用您的DLL?

如果您这么认为,也许您可​​以使界面看起来更复杂或使用模糊处理。

答案 1 :(得分:0)

我在this响应中回答了有关许可/保护软件的问题 - 这对于您控制下的DLL也可以正常工作。简而言之,部署无法复制的东西是不可能的,但可以在部署后生成密钥,然后通过呼叫您的组或公司来获得许可。

关于 Req 2 ,我认为最合理的方法就是将参数传递给可能黑客无法知道的每个函数。我不相信使名称复杂或以其他方式混淆它们有帮助(您可以始终分析DLL以发现其内容)。混淆也会使更难维护 - 从来不是一个好主意。我怀疑保护它们比维护这些DLL更重要!

因此,我会投票给某些形式的幻数传递给你的函数。最简单的是一个简单的整数。更安全的是时间表示(时间窗口最好),然后哈希。如果DLL中的dehash与当前时间匹配,则表示您已使用自己的代码调用。