1

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

我想要做的限制是: DLL中有一个静态文件路径,在每个函数开始时,我只计算文件的新校验和(sha1)(文件路径指向)并将其与原始校验和(也是静态的)。很好,因为如果有人修改.mq4,该功能将不起作用。

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

因此,我应该以某种方式弄清楚,DLL 的导入位置并检查该文件的总和。或者也许还有另一种技术,我不知道。

4

1 回答 1

0

一个主要的解决方案:(与“许可或不许可?”的困境无关)

为了了解谁导入/谁调用了 DLL 函数,传统#import机制过于轻量级,并且主要是对潜在攻击者开放源代码。

有史以来最强大、最智能且几乎无法并行的保护是,在设计上采用occam并行执行语言(用于晶片机),其中调用者和被调用者要么就通信协议达成一致,要么不达成一致。因此,没有人可以通过发送“未经请求的”呼叫来劫持和使用远程服务。

第二个最接近的是(occam-legacy follower)语言,它们支持基于 CSP 的方案——无论是 python、Go 还是其他符合 CSP 的引擎。


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

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

MQL4具有与 CSP-“安全”环境通信的能力,因此如果您确实有这样的需求,请将您MQL4的 - 端连接到远程端并受益于 CSP 安全性,以避免未经授权使用服务。


代理中介

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

  • 强制执行呼叫者身份每次呼叫自我呈现
  • 调解调用者身份绑定的每次调用引用计数/检查
  • 防止假调用者劫持中介节点以获取目标 DLL 访问权限
  • 保留 MQL4 端隐藏的中介<->目标握手细节
于 2015-09-17T02:10:32.510 回答