为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

九州编程 2019-12-12 14:09:45
众所周知,Android应用程序是用Java编写的。在Java中,无论您做什么,都无法保护已编译的代码免于反编译或反向工程,因为堆栈溢出问题如何锁定已编译的Java类以防止反编译?建议。如何保护包含算法商业机密的应用程序免受逆向工程的侵害?“如何”不仅指软件技术,还指其他创造性的方法。
查看完整描述

3 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

对我而言,第一站是使用ProGuard对代码进行优化和混淆,ProGuard可以与针对Android Dalvik VM(通过Dex)的字节码一起使用。这是一个非常有用的工具,可以增加“反转”代码的难度,同时缩小代码的覆盖范围(在某些情况下,是非常大的:我最近的一个applet从大约600 KB减小到大约50 KB)。


就像其他人说的那样,当算法的实现分发给客户端时,您将永远不会获得100%的算法细节安全性。为此,您需要将代码单独保存在服务器上。尝试将客户端代码的安全性提高到100%左右实际上等于DRM,并且在网络中断的情况下会使客户端代码易碎,并且通常会使(合法的)用户感到沮丧。


关于“创造性”方法:一些开发人员使用调试器检测技术来防止运行时分析,并将其与二进制代码部分的加密结合起来(以阻止静态分析),但是老实说,有足够的坚定攻击者可以规避这些条件, Windows知识库文章游戏:错误消息:已检测到调试器:卸载调试器,然后重试。由于这个原因,我女友的“学习驱动” DVD软件将无法在VirtualBox下运行,但她当然会归咎于Linux!


如果您想进一步研究OpenRCE和Wikipedia关于混淆代码的文章,可能是一个很好的起点。但请注意,与通过逆向工程失去商业机密相比,过度狂热地使用这些使您的用户受挫的技术可能会造成更大的损失。就像Anton S所说的那样,也许最“创意”的方法在于调整业务模型而不是技术。


2010年12月6日最新的Android SDK更新(与Android 2.3 Gingerbread版本一致):


集成的ProGuard支持:ProGuard现在与SDK工具打包在一起。开发人员现在可以将其代码混淆为发行版本的集成部分。


查看完整回答
反对 回复 2019-12-12
?
不负相思意

TA贡献1777条经验 获得超10个赞

如果可能的话:远程过程调用受良好保护的服务器(该服务器具有您要保护的代码)。


查看完整回答
反对 回复 2019-12-12
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

使它变得如此便宜以免打扰,并且不要在客户端执行的秘密之上建立您的业务模型。换句话说,不要分享您的秘密。


查看完整回答
反对 回复 2019-12-12
  • 3 回答
  • 0 关注
  • 410 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信