3

我试图确保有人无法重新编译我的混淆应用程序,然后将恶意数据发送到我的服务器。我正在对我的应用程序的 versionCode 和 packageName 进行 SSLed PHP_POST。这些 POSTED 变量都通过非对称加密以及签名验证进行加密,每次版本升级都会更改。我曾考虑过使用校验和,但这些方法不受 Google 官方支持,研究表明它们不能防错,这意味着它们可能会破坏合法用户。

最重要的是,当检测到 100% 不合法的东西时,通过 IP/Mac 地址/IMEI/Serial/Android_ID/etc 禁止站点。

我知道没有什么是 100% 安全的,好的安全和坏的安全之间的区别在于破坏安全所需的时间/金钱/努力的价值高于受安全保护的项目。考虑到这一点,是否有任何其他方法可以用来保护我的应用程序或我应该实施的任何想法以添加到当前安全性?

在旁注中,反编译/重新编译一个被混淆的 apk(jar) 有多容易,一旦完成一次会更容易吗?(也就是说,我更改密钥的次数并不重要,因为应用程序已经受到攻击,反编译器可以简单地查看我最后一个密钥所在的位置)

4

1 回答 1

2

首先,首先,不要自己做加密。如果您正确(!)执行 SSL 可能足以保护传输中的数据免受篡改等。您需要做的是以某种方式验证您的应用程序,这通常很棘手,因为您需要将凭据保留在应用程序中。有不同的方法,但目前的标准(和谷歌认可的方式)是使用谷歌播放服务来获取一个令牌并在你的服务器应用程序中验证它。详情在这里:http ://android-developers.blogspot.jp/2013/01/verifying-back-end-calls-from-android.html

这并不完美,但可能比您能想出的大多数非标准解决方案要好。

反编译通常很容易,并且混淆不会有太大变化,因为找到调用系统 API 的位置(获取 MAC 地址、哈希、加密等)是微不足道的。

于 2013-02-18T08:33:46.237 回答