gpt4 book ai didi

java - 真的不可能保护 Android 应用免受逆向工程吗?

转载 作者:IT老高 更新时间:2023-10-28 13:24:19 24 4
gpt4 key购买 nike

众所周知,Android 应用程序是用 Java 编写的。在 Java 中,无论 what you do ,不可能保护已编译的代码免于反编译或逆向工程,如堆栈溢出问题 How to lock compiled Java classes to prevent decompilation? 建议。

如何保护包含算法商业 secret 的应用免遭逆向工程?

我所说的“如何”不仅是指软件技术,还包括其他创造性方法。

最佳答案

对我来说,第一站是使用 ProGuard 优化和混淆代码众所周知,它适用于针对 Android 的 Dalvik 的字节码虚拟机(通过 Dex)。这是一个非常棒的工具,可以增加“逆向”代码的难度,同时缩小代码的占用空间(在某些情况下非常显着:我最近的一个小程序从大约 600 KB 减少到大约 50 KB)。

就像其他人所说的那样,在将算法的实现分发给客户端时,您永远不会获得 100% 的算法细节安全性。为此,您需要将代码单独保留在服务器上。尝试使客户端代码接近 100% 的安全性实际上相当于 DRM并且可能使您的客户端代码在面对网络中断时变得脆弱,并且通常会使(合法)用户感到沮丧。

Android 开发者博客有一些 useful articles关于“防篡改”Android 应用程序的问题(他们建议使用 ProGuard 作为整体方法的一部分)。

关于“创造性”方法:一些开发人员采用 debugger detection techniques为了防止运行时分析并将其与部分二进制代码的加密相结合(以阻止静态分析),但老实说,足够坚定的攻击者可以circumvent这些,虽然如 Windows 知识库文章 Games: Error Message: A Debugger Has Been Detected: Unload the Debugger and Try Again 所示,它可能会导致合法用户感到沮丧。 。我女朋友的“学习驾驶”DVD 软件在 VirtualBox 下无法运行出于这个原因,但她当然责怪 Linux!

OpenRCEWikipedia's article on obfuscated code如果您想进一步研究,这可能是一个很好的起点。但请注意,与通过逆向工程丢失商业 secret 相比,过度使用这些让用户感到沮丧的技术可能会给您带来更多损失。点赞Anton S says ,也许最“有创意”的方法在于调整商业模式而不是技术。

最新安卓SDK update 2010 年 12 月 6 日(恰逢 Android 2.3 Gingerbread 发布):

Integrated ProGuard support: ProGuard is now packaged with the SDK Tools. Developers can now obfuscate their code as an integrated part of a release build.

关于java - 真的不可能保护 Android 应用免受逆向工程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4336637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com