保护我的应用程序安全免受反汇编程序的影响

Posted

技术标签:

【中文标题】保护我的应用程序安全免受反汇编程序的影响【英文标题】:Protecting my apps security from a disassembler 【发布时间】:2011-02-22 08:13:14 【问题描述】:

所以我最近测试了反汇编我的一个 android 应用程序,令我惊恐的是,我发现代码可读性很强。更糟糕的是,我所有的变量名都完好无损!我认为那些会在编译时被压缩成不可读的东西。该应用程序被触发在一定时间后过期。但是,现在找到名为 checkIfExpired() 的函数并找到变量“过期”对我来说是微不足道的。有什么好的方法可以让潜在的黑客更难弄乱我的应用程序吗?

在有人说显而易见的事情之前:是的,这是通过默默无闻的安全性。但显然这是我唯一的选择,因为用户总是可以访问我的所有代码。这对所有应用程序都是一样的。我的 deactivation-thingy 的细节并不重要,关键是我不想让反汇编器理解我做的一些事情。

边问:为什么变量名没有被压缩?如果我不再像我的习惯那样使用很长的变量名,会不会是我的程序运行得更快?

【问题讨论】:

我不明白你是如何将dex文件反汇编成Java的? 【参考方案1】:

混淆器是最好的解决方案。

这是一个我实际上没有尝试过但看起来很有希望的方法: http://proguard.sourceforge.net/FAQ.html#android

ProGuard 是一个免费的 Java 类文件 收缩器、优化器、混淆器和 预验证器。它检测并删除 未使用的类、字段、方法和 属性。它优化字节码和 删除未使用的指令。它 重命名剩余的类、字段、 以及使用短的无意义的方法 名字。最后,它预先验证了 为 Java 6 或 Java 处理的代码 微型版。

【讨论】:

我真的要调查一下。如果堆栈跟踪的“去混淆”有效,那么可能就是这样!你自己有在安卓上使用这个的经验吗? 很遗憾,我没有使用 Proguard 的经验。但是,它们确实包含特定的 Android 示例。我期待在月底将其与我的下一个应用程序版本一起使用。【参考方案2】:

Proguard 几乎可以满足您的一切需求。 我将它用于我的所有应用程序,并且效果很好,将应用程序大小减少了约 30% 作为副作用。 问题是,我必须编写一个自定义 bash 构建脚本,因为您无法将 Proguard 插入现有的 Android ant 构建过程。可能应该得到一个博客并写下它。 :)

【讨论】:

如果你愿意,我会订阅你的博客 :) 我将成为您的第二个订阅者 :)

以上是关于保护我的应用程序安全免受反汇编程序的影响的主要内容,如果未能解决你的问题,请参考以下文章

如何保护应用程序免受第 3 方 js 库中存在的 XSS 向量的影响?

原子对象是不是受到保护免受竞争条件的影响?

保护 Firebase 可调用函数免受中间人的影响

保护用户免受扩展程序加密劫持

保护您的 Android 应用免受模拟位置的影响

Vue.js:如何保护登录组件免受经过身份验证的用户的影响