是否有任何已知的方法可以保护 Windows 8 商店应用程序免受盗版?当我为 Windows Phone 7/8 编写代码时,我只是检查了 WMAppPRHeader.xml 中是否存在某些字段。在 Android 中,我可以检查包签名并且我有 LVL 库。在 iOS 中,搜索包内的一些文件就足够了。
但是 Windows 8 商店应用程序有类似的吗?
是否有任何已知的方法可以保护 Windows 8 商店应用程序免受盗版?当我为 Windows Phone 7/8 编写代码时,我只是检查了 WMAppPRHeader.xml 中是否存在某些字段。在 Android 中,我可以检查包签名并且我有 LVL 库。在 iOS 中,搜索包内的一些文件就足够了。
但是 Windows 8 商店应用程序有类似的吗?
是和不是。
几乎您所做的一切,即使在您上面提到的那些情况下,都可以被反汇编和覆盖。考虑一下,他们所要做的就是用 NOP 幻灯片替换组装中的那些行(完全忽略反汇编),然后重新打包,用自己的证书签署应用程序包并将其安装在自己的机器上。
关键是他们必须安装它的方式。为了安装 Metro 应用程序,他们需要获得开发人员的许可证并旁加载应用程序。根据 MSFT 的说法,他们(以某种方式)跟踪该开发人员的侧载的使用情况,以确保您没有安装盗版应用程序,并且确实将其用于测试和开发目的(您必须同意才能获得开发商许可证)。
现在,如果有人能够进一步绕过这个系统,那么这不会对他们产生太大影响,但这就是 DRM 的工作方式。就目前的技术状态而言,它并不完美(而且可能永远不会完美)。
不过,为了回答您的问题,Windows 8 具有系统内置的类似功能。只要系统正常工作,滥用其开发人员许可证的用户将失去该许可证并且根本无法旁加载应用程序。
您可以采取一些措施让他们更难拆解和重新打包您的应用程序并在商店中出售,就像在 Android 市场上很常见一样。查看 Dotfuscator。他们有专门针对 Marketplace 应用程序的版本。
不幸的是,这是可以提供的最好的。你可以让盗版更难,但并非不可能。您可以让应用程序对安装目录的内容进行哈希处理并将其发送到移动服务进行验证,但他们也可以轻松地定期运行一次,嗅探正在发送的数据包,然后重播验证响应。您还可以在移动服务中创建签名证书并验证响应来自移动服务本身,但他们也可以只替换该证书。您可以让它首先从您的移动服务中提取证书,但他们可以将您的应用程序指向他们自己的移动服务。
而且,他们可以完全绕过检查。
该系统已经有了drm,试图让盗版者更难创建一个可用的系统,但是对于盗版,只要有意愿,就有办法。