这种 BE 嵌入式许可机制会干扰防病毒软件吗?
Posted
技术标签:
【中文标题】这种 BE 嵌入式许可机制会干扰防病毒软件吗?【英文标题】:Could this PE embeded Licensing Mechanism interfere with Antivirus software? 【发布时间】:2014-04-21 21:06:15 【问题描述】:我正在研究一种Windows Native C++ 桌面软件许可机制,并且我试图尽可能不引人注目。它背后的想法很简单,我试图阻止人们分享它,主要是通过在软件中添加他们的个人信息并将其锁定在一系列目标机器上。
许可的工作原理:
当有人从我的服务器下载软件时,他们会获得一个新的个性化 PE 部分,其中包含个人身份信息和防止篡改的哈希密钥。哈希值会根据嵌入的公钥进行检查,并由服务器上的私钥生成。
当该工具运行时,它会根据哈希键检查自身,然后调用 home 并仅在本地测试成功并且从 home 获得绿灯时运行。由于这些工具是需要始终在线的 Internet 工具,因此呼叫 home 几乎总是可能的,除非通过 DNS 阻止(但我将在工具中包含一个自定义 DNS 客户端,以避免在解析呼叫 home 时出现 Windows ).
问题:
我主要担心的是防病毒软件是否可能对嵌入在 PE 结构中的自定义部分皱眉?我不是在谈论附加到文件末尾的免费数据。我正在嵌入一个新部分并重写 PE。
我做了一些测试,没有问题,但我想知道其他人是否有更多的经验。
【问题讨论】:
-1?严重地!?想发表评论吗? 【参考方案1】:我看到了一些危险信号:
您的应用程序未由 Authenticode 签名,或者(更糟糕的是)您的新部分使 Authenticode 签名无效。解决方法:不要重复造***,用Authenticode机制代替自己的。
由于您的可执行文件是唯一的,因此不能将其列入白名单。
您的应用程序包含自己的 DNS 客户端。 AV 软件会注意到这一点。
自定义 PE 部分本身的得分不会太差,但为什么这么复杂? RT_RCDATA
资源似乎更合适。
【讨论】:
1.资源真的很容易编辑。 2. 目前,签署工具也不是问题。幸运的是,它是为精通技术的观众准备的,所以他们不会轻易被吓倒。并且可以使用CryptUIWizDigitalSign(CRYPTUI_WIZ_NO_UI, ...);
即时签名。 3. 为什么低级别(UDP 套接字级别)静态链接的 DNS 客户端会被 AV 注意到?我从来没有遇到过这样的问题...
@CodeAngry: 1:所以?仍然受签名保护。 2. 我精通技术,缺少签名对我来说是一个危险信号,正是因为我知道它应该在那里。 3. 因为 AV 在套接字级别监控网络流量,并且看到不是来自操作系统的 DNS 请求。当您拥有多个客户时,“我从来没有遇到过这样的问题”这句话变得毫无意义。他们会的。
好的。我是更大规模软件分发的新手。您能否也给我以下内容:是否有针对个人的代码签名证书?什么是文书工作和嵌入的签名个人信息? --- 我不太习惯将我的个人信息与工具捆绑在一起......
@CodeAngry:这可能应该是一个单独的问题,关于programmers.SE(如果还没有的话)【参考方案2】:
签名防止篡改是一种常见的误解。他们不阻止它,他们只是揭示它。
如果用户是同谋(他们打算使用破解/未经适当许可的版本),让他们发现篡改不会让您有任何收获。
最好不要使用唯一的指纹来阻止软件的运行,这肯定会导致warez版本的许可证检查被修补,而只是收集多个安装的数据,以便在追求时使用在未经授权的复制的民事诉讼中采取法律行动。
【讨论】:
你是对的。现在我也会阻止执行,如果被篡改并且它会调用 home 来验证每台安装机器,因为无论如何工具都需要在线才能完成工作. @CodeAngry:如果你阻止执行,那么很明显你有篡改检测......而且用不了多久就会出现没有篡改检测的破解版本。如果你不根据唯一指纹采取任何行动,它就不太可能被删除,然后当你遇到破解版本时,你可以追踪他们的血统。拥有两个独特的指纹可能是值得的,有两种不同的方法,其中一种被报告回家,另一种则完全处于非活动状态,准备好在发现破解的二进制文件后进行分析。以上是关于这种 BE 嵌入式许可机制会干扰防病毒软件吗?的主要内容,如果未能解决你的问题,请参考以下文章