在通过 Windows 8 AppStore 分发之前,必须检查所有 Metro 应用程序。这是否意味着不允许使用代码混淆?或者仍然有可能,并且在这样的检查中只监控一些特定的方面?
3 回答
这是一个扶手椅式答案,其中包含一些我想到的东西:
如果 C++ 应用程序依赖于到运行时或 API 的动态链接,即使是 C++ 应用程序也可能会被分析,WinRT 应用程序就是这种情况。Microsoft 批准理论上可以包括使用特殊沙箱和/或操作系统挂钩对您的应用程序进行自动或人工指导测试,这些挂钩能够检测您的应用程序是否尝试某些被禁止的操作。
在底层,WinRT 的 C++ 应用程序更像原生 C++ 应用程序,而不是 C++/CLI,因此在所有条件都相同的情况下,不需要像 C# 那样进行混淆。
您仍然可以构建以 WinRT 为目标的 C# 应用程序,但您的代码仍将编译为 CIL 并在 CLR(或多或少)中运行,通过 Microsoft 提供的包装器调用 WinRT。因为是 CIL,所以混淆的问题应该和 C#/.NET 混淆的问题一般。
以下是一些事实:
- Marketplace for WP7 允许混淆 C# 应用程序(甚至 MS 他建议这样做),我看不出 Windows AppStore 禁止此类应用程序的任何原因。
- 几乎可以肯定,一些供应商将提供兼容的 C++ 混淆器。
- 你应该关心你的客户而不是饼干。:)
- 许多用于代码混淆的黑客行为将被禁止。
请记住,如果您有一些想要隐藏的逻辑,请创建一个 Web 服务并在您的客户端应用程序中使用它。最好花时间构建更好的应用程序,修复错误等。
没有骰子,如果有人可以访问二进制文件只是有人破解它的时间问题。
WinRT 仍然可以进行混淆处理。Application Certification Kit 的检查涵盖了很多方面,包括元数据和 IL 验证。就像旧的 peverify 一样。