【问题标题】:Android shared library integrity protectionAndroid共享库完整性保护
【发布时间】:2013-03-10 04:05:27
【问题描述】:

有没有办法以某种方式“保护”Android 平台的本机共享库 (.so) 以防止二进制更改? 例如。在对应用程序进行逆向工程后,有人可以用 NOP 覆盖 JMP 指令,并将该库分发到已获得根目录的设备。

有没有人可以做的什么

我在这里寻找的是关于实施一系列检查(例如加密、校验和等)的想法。 当然,由于该平台看起来并不为此提供支持(如果我错了,请纠正我)它必须都是“客户端”。因此整个事情有点徒劳,但至少会阻碍一些逆向工程。

【问题讨论】:

  • 当然,您可以通过让它计算自己的校验和、加密其部分代码来实现 SO 保护。这一切都类似于多年来在 Windows 中所做的事情(但更难)。但是如果你没有在 Linux 上保护模块的经验,你最好不要开始。我不知道是否存在针对您的任务的预先创建的保护产品。
  • 谢谢@EugeneMayevski'EldoSCorp。我想试试 - 你如何计算自己的校验和?

标签: android security android-ndk integrity


【解决方案1】:

是的,有些事情你可以做,它们会给逆向工程师带来很大的挑战,但我怀疑你能做任何会阻止 Chris Eagle 的事情。

防止修改的最佳方法是在编译后获取 .so 的 SHA-2,并在每次运行时重新散列,将其与已知值匹配。此检查将在客户端强制执行,因此熟练的 RE 可以修改二进制文件以忽略检查。虽然它确实让它变得有点困难。如果您在整个代码中都放置检查并使用不同的检查技术,那么它会扩展 RE 必须做的工作量。但是请注意,Microsoft 已经在反 RE 技术上投入了数百万美元,并且仍然 存在 Office 和 Windows 的盗版副本。你永远不会阻止他们。我的个人哲学(现在我自己研究过 RE)是,试图阻止它们最终太痛苦了。只要做一个好的应用程序,让它便宜,人们就会购买。无论如何,偷你东西的歹徒不会买它。

如果您的应用调用 home,您还可以将哈希提交到服务器进行验证。当然,RE 仍然可以绕过这一点,但这是另一回事。

【讨论】:

  • 正是我想要的。谢谢!
猜你喜欢
  • 2011-07-13
  • 1970-01-01
  • 1970-01-01
  • 2015-07-20
  • 2016-02-22
  • 2012-02-09
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多