使用keytool可以轻松获取任何应用程序的MD5指纹。那么应用程序最独特的标识符是什么?
我正在尝试构建一个客户端服务器应用程序,我想要一个安全的通信。 我的问题围绕这两个假设 - 1)有人可以对我的应用程序进行逆向工程,并了解我如何与服务器Web服务进行交互 2)我的应用程序可以简单地卸载并替换为具有类似包名的恶意应用程序。
使用这两个漏洞,系统很容易受到攻击。
我对这些问题的解决方案是将我的应用程序的MD5签名传输到服务器。 MD5签名将被预先传送到服务器。 MD5签名对于每个应用程序都是唯一的,但这种方法存在很大问题。可以使用keytool生成任何apk的MD5签名。任何人都可以拉我的apk并生成MD5并在webservices通信中使用它。
Android应用的唯一标识符是什么? 包名和MD5指纹很容易受到损害!
答案 0 :(得分:1)
基本上,您希望确保在服务器端与客户端应用程序进行通信。
Verify Back-End Calls from Android。这个链接可能会有所帮助,因为它给这种情况带来了很高的信心。 (这里必须是HTTPS)
答案 1 :(得分:1)
作为@Maddy回答的另一个步骤,您可能会考虑篡改抵抗/完整性保护技术,这将使您的应用程序无法运行以防有人试图修改它。 DexProtector(http://dexprotector.com)可能就是这里的解决方案。 link下的幻灯片也应该有用。
N.B。 我是Licel的首席执行官,因此我隶属于DexProtector。
答案 2 :(得分:0)
第一个问题
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)有人可以对我的应用进行逆向工程,并了解我与服务器网络服务的互动方式
使用DexGuard,可以使逆向工程变得更加困难,例如加密字符串
https://www.saikoa.com/dexguard
<强> Proguard的强>
“ProGuard工具通过删除未使用的代码并使用语义模糊的名称重命名类,字段和方法来缩小,优化和混淆代码。结果是一个较小的.apk文件,更难以进行逆向工程。“
创建android项目时。
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属性。路径可以是绝对路径或相对于项目根目录的路径。“
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/