How to make apk secure and what is the most unique identifier an app has?
使用keytool可以轻松获取任何应用程序的MD5指纹。那么,应用程序最独特的标识符是什么?
我正在尝试构建客户端服务器应用程序,并且我希望通信安全。
我的问题围绕着这两个假设-
1)有人可以对我的应用程序进行反向工程,并了解我如何与服务器Web服务进行交互
2)我的应用程序可以简单地卸载并替换为具有相似软件包名称的恶意应用程序。
使用这两个漏洞可以轻易破坏系统。
我对这些问题的解决方案是将我的应用程序的MD5签名传输到服务器。 MD5签名将被预先传送到服务器。 MD5签名对于每个应用程序都是唯一的,但是这种方法存在很大的问题。可以使用keytool生成任何apk的MD5签名。任何人都可以拉我的apk并生成MD5,并将其用于Web服务通信中。
android应用程序的唯一标识符是什么?
软件包名称和MD5指纹很容易受到损害!
作为@Maddy答案的附加步骤,您可能会考虑防篡改/完整性保护技术,如果有人尝试对其进行修改,这将使您的应用无法运行。 DexProtector(http://dexprotector.com)可能是此处的解决方案。链接下的幻灯片也应该会有所帮助。
N.B.
我是Licel的首席执行官,因此隶属于DexProtector。
基本上,您需要确保与服务器端的客户端应用程序通信。
验证来自Android的后端通话。该链接可能会有所帮助,因为它为这种情况提供了很高的信心。 (HTTPS必须在这里)
第一个问题
1)我的应用程序可以简单地卸载并替换为具有相似软件包名称的恶意应用程序。
最好的方法可能是使用ANDROID_ID
试试这个连结http://blog.vogella.com/2011/04/11/android-unique-identifier/
还要检查此内容http://android-developers.blogspot.in/2011/03/identifying-app-installations.html
第二期解决方案
2)有人可以对我的应用程序进行反向工程,并了解我如何与服务器Web服务进行交互
使用DexGuard,这可以使反向工程更加困难,例如通过加密字符串
https://www.saikoa.com/dexguard
保卫者
" ProGuard工具通过删除未使用的代码并使用语义上晦涩的名称重命名类,字段和方法来缩小,优化和混淆您的代码。结果是一个较小的.apk文件,很难进行反向工程。"
当您创建android项目时。
1 2 | 1. proguard.cfg file is automatically generated in the root directory of the project. 2. The default configuration file only covers general cases, so customize as per your needs. |
启用它
"在/project.properties文件中设置proguard.config属性。该路径可以是绝对路径,也可以是相对于项目根目录的路径。"
1 2 | Case1: Just add proguard.config=proguard.cfg if the proguard.cfg is in projects root path. Case2: Configure from other location [proguard.config=/path/to/proguard.cfg] |
删除project.properties中的"#"(或取消注释)proguard配置语句。最初将对此进行评论。
自定义它。尝试此链接http://1belong2jesus.wordpress.com/