我正在开发一个涉及付款的应用程序。我将在应用程序中采用某种加密,并在服务器后端采用某种加密和安全性。
我想知道如何保护我的 Xamarin 代码,特别是在部署到 Android 时。我知道 Xamarin.iOS 转换为本机代码,但 Xamarin.Android 在 DLL 中部署 .Net 代码,可以使用 DotPeek 或任何其他工具轻松反编译该代码,并且代码将可见,包括我的加密密钥或任何其他安全相关数据服务器和我的应用程序之间的安全所必需的。混淆是一种选择,但我想知道任何其他选择。请指导我解决这个问题,因为这是我非常关心的问题。
直接回答你的问题:不,没有什么本质上可以保护 Xamarin 编译的 Android 应用程序免受逆向工程攻击。
正如您必须使用 ProGuard 等工具采取行动来保护 APK 中的 Android 原生代码一样,包含应用程序业务逻辑的 .NET 程序集将要求您采取特殊操作来混淆、加密或以其他方式保护程序集免受这些攻击。窥探的眼睛。凭借相对较小的 .NET 工具链和探索中间语言代码的兴趣,人们可以了解很多有关应用程序如何组合在一起的知识。需要明确的是,ProGuard 仅混淆应用程序的 Java 代码,并且不为 Xamarin 编译的 APK 中找到的 .NET 程序集提供保护。
正如您的问题以及问题评论中所指出的,DotPeek、ildasm、ILSpy 和 Reflector 等工具提供了一种非常简单(并且在许多情况下免费!)的方法来检查 .NET 程序集,并且其中许多工具提供了将大量 IL 代码转换回更高级别的 .NET 语言(如 C# 或 VB.NET)的机制。只需付出一点额外的努力,这些高级类就可以插入 Visual Studio 或 Xamarin Studio 解决方案并转换回运行代码 - 哎呀!由于 Xamarin.Android 使用即时编译,除了 Android 原生代码上的类似 ProGuard 的解决方案之外,您还可以实现 Babel for .Net 或 Crypto-Obfuscator for .Net 等混淆器,为大量开发人员提供支持-可配置的混淆技术/规则以及加密程序集各部分的选项。
虽然这些工具使逆向工程的猫鼠游戏变得更加困难,但我们最终谈论的是尝试保护客户端代码;那些决心研究底层实现并有耐心这样做的人将能够寻找二进制文件和程序集中留下的线索,开始研究正在使用的混淆或加密技术。虽然没有 100% 安全的工具、机制或安全方法,但您可以通过应用分层安全方法来降低风险,并着眼于花时间实施多层方法和采用这些额外的安全措施带来的额外复杂性。作为SilverlightFox
建议聘请安全专业人员在组织其他平台的背景下审核您的应用程序,这可能是确定其他需要改进的领域、突出潜在关注领域或获取进一步改进组织所选平台安全方法的建议的重要一步。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)