如何保护DLL功能或获取导入的位置?

时间:2013-07-16 14:03:57

标签: c++ dll hash checksum mql4

我想限制谁/什么可以使用我的C ++ DLL。我有一个 .mq4 脚本(或者它可以是我猜的任何其他内容),我使用DLL - #import - ed函数。

我想要做的限制是: DLL中有一个静态文件路径,在每个函数的开头我只计算一个新的校验和(sha1) file(文件路径指向的位置)并将其与原始校验和(也是静态)进行比较。这很好,因为如果有人修改.mq4,该功能将无效。

我的问题是:如果我只是将原始的.mq4留在那里,我创建了一个新的,在那里导入DLL,我可以毫无问题地使用DLL,因为在DLL中,我正在检查原始.mq4,(静态文件路径指向的位置),而不是我使用它的位置。

所以我应该弄明白,导入DLL的位置并检查该文件的总和。或许还有另一种技术,我不知道。

1 个答案:

答案 0 :(得分:0)

主要解决方案:(与#34;许可证或非许可证的困境无关?")

为了知道谁导入/谁称为DLL函数,传统的#import机制太轻量级,主要是开源的潜在攻击者。

根据设计,有史以来最强大,最智能,最难以平行的保护是 occam 并行执行语言(用于透明机),其中来电者和被叫者之间就通信达成一致协议与否。因此,没有人可以通过发送未被请求的"来劫持和使用远程服务。调用

第二个最接近的是(occam - 遗留粉丝)语言,支持基于CSP的方案 - 无论是python,Go还是其他符合CSP标准的引擎。

(他们自己的方法的终身受害者暴露于公众)

世界其他地方习惯于生活在一个环境中,在这种环境中,对象和DLL无休止地容易受到攻击者的攻击,这些攻击者可能在任何时候超载/误用任何DLL服务或对象方法,而DLL端或一旦呼叫者不被允许/被允许请求这样的服务,对象实例就无法保护自己并拒绝/拒绝服务。

MQL4具有与CSP沟通的能力 - " safe"环境,所以如果您确实有这样的需求,请让您的MQL4 - 侧连接到远程端并使CSP安全受益,以避免未经授权使用服务。

代理介

如果您不想移动那么远,请尝试使用代理调解您的C ++ DLL:

  • 强制执行每次呼叫自我呈现的呼叫者身份
  • 调解每次呼叫引用计数/检查的呼叫者身份绑定
  • 防止伪调用者劫持中介节点以获取目标DLL访问
  • 保留MQL4端隐藏的中介< - >目标握手详情