【问题标题】:Is there any prevention methods for removing `IsTrial` and trivially cracking WinRT applications?有没有什么预防方法可以去除`IsTrial`,随便破解WinRT应用程序?
【发布时间】:2012-09-27 01:59:19
【问题描述】:

我读了一篇关于reverse engineering windows 8 应用程序的文章。最令人担忧的事情之一是它们的修改有多容易,但微软如何在其中包含许可。

特别值得注意的是 Javsscript(尽管 C# 也容易受到 IL 重建的影响)。它们提供函数LicenseInformation.IsTrial()。但是,如文章所述,如果您更改了一些权限,您可以直接编辑 javascript 并将 IsTrial 替换为 false

尽管这篇文章是在 Windows 8 的早期(首次)公开版本中发表的。他们采取了哪些措施来防止在当前发布版本中发生修改? Javascript 应用程序是否应该被视为不可能货币化?

【问题讨论】:

    标签: javascript licensing windows-runtime reverse-engineering windows-store


    【解决方案1】:

    应用程序包经过签名并定期检查是否被篡改。 Windows 不会启动已被标记为已被篡改的打包应用(修改包中的文件是一种篡改)。

    "App packages and deployment" 文档页面指出:

    所有包都必须使用受信任的签名进行签名。这使 Windows 能够确认签名者的身份并验证包的内容没有被篡改。 Windows 不会部署未签名的包。

    "Signing an app package" 文档页面指出:

    如果已安装包中的任何文件被修改,签名验证可能会阻止应用启动。

    也就是说,没有技术限制阻止某人破解打开应用程序包并构建一个新的、修改过的包。为此,需要开发人员许可证。不过,在这一点上,它与用户可以下载和安装的任何其他程序没有什么不同。

    【讨论】:

    • 获取原始 .appx 包实际上是相当困难的(需要使用 Fiddler 来获取 URL)...我相信也可以从 windows 商店应用程序中获取所有文件目录,然后从那里重新打包。所以基本上,这不是超级容易,但对于熟悉开发 Windows 应用商店应用程序的任何人来说绝对是可能的?
    • 另外,往返 .Net 程序集怎么样?这有点跑题了,但签名会有帮助吗?
    • @Earlz:我没有这样做,所以我不知道从个人经验来看,但我认为可以在新应用程序中重新打包内容。我猜想让它变得更难一点会相当简单,例如通过自己在代码中测试应用程序包的有效性。但是,如果用户在他的机器上安装了该应用程序,那么他当然可以将其反汇编并按照他认为合适的方式将其重新组合在一起(这在 JavaScript 和 .NET 中更容易,但在一定程度上在 C++ 中仍然如此) .我不明白为什么 Windows 应用商店应用程序与桌面应用程序的情况会有所不同。
    • 我觉得这很奇怪,因为大多数许可方案不仅有单行代码或要禁用的单个功能,而是通常有许多微妙的检查,因此难以破解。似乎人们忽略了这样一个事实,即 Windows 应用商店包只是一个带有可执行代码的 zip 文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 2021-04-29
    • 2019-12-22
    相关资源
    最近更新 更多