3 回答
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工具打包在一起。开发人员现在可以将其代码混淆为发行版本的集成部分。
添加回答
举报