6

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

什么人可以做的吗?

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

4

1 回答 1

4

是的,有些事情你可以做,它们会让逆向工程师变得非常具有挑战性,但我怀疑你能做任何能阻止Chris Eagle的事情。

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

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

于 2013-03-12T21:33:46.017 回答