我正在尝试确保不会有人重新编译我的混淆应用程序,然后将恶意数据发送到我的服务器。我正在对我的应用程序的versionCode和packageName进行SSLed PHP_POST。这些发布的变量都是通过非对称加密以及签名验证进行加密的,每次版本升级都会更改签名验证。我曾想过使用校验和,但这些方法并没有得到谷歌的官方支持,而且研究表明,它们不是防错的,这意味着它们可能会扰乱合法用户。
最重要的是,当检测到100%不合法的东西时,会通过IP/Mac地址/IMEI/Serial/Android_ID/等进行现场禁止。
我知道没有什么是100%安全的,好的安全和坏的安全之间的区别是打破安全所花费的时间/金钱/努力比受安全保护的物品更有价值。考虑到这一点,有没有其他方法可以用来保护我的应用程序,或者我应该实现的任何想法,以增加现有的安全性?
顺便说一句,反编译/重新编译一个已经被混淆的apk(jar)有多容易,一旦它完成了,它会变得更容易吗?(也就是,我更改密钥多少次都无关紧要,因为应用程序已经被破坏,反编译器可以简单地查看我上一个密钥所在的相同位置)
发布于 2013-02-18 16:33:46
第一件事,首先,不要自己加密。如果您正确地(!)做SSL可能足以保护传输中的数据不被篡改,等等。你需要做的是以某种方式验证你的应用程序,这通常是棘手的,因为你需要在应用程序中保留凭据。有不同的方法可以绕过这一点,但目前的标准(也是谷歌认可的方式)是使用Google Play服务来获取令牌并在您的服务器应用程序中验证它。详情请访问:http://android-developers.blogspot.jp/2013/01/verifying-back-end-calls-from-android.html
这并不完美,但可能比您能想到的大多数非标准解决方案都要好。
反编译通常很容易,混淆也不会改变太多,因为找到调用系统API的位置(获取MAC地址、散列、加密等)是很容易的。
https://stackoverflow.com/questions/14929274
复制相似问题