Android■如何检查手机上的 App 是不是正版?( 二 )
运行安卓7.0及更高版本的设备支持APK签名方案v2(亦即v2方案)和它的更高版本 。 (在Android P中 , v2方案被更新为v3方案 , 以支持在签名块中包含附加信息 , 但在其他情况下也一样 。 ) 。 v2方案对APK的内容进行散列和签名 , 然后将生成的APK签名块插入APK中 。
应用程序可以非常简单地通过Android Studio的选项或命令行进行签名 。
打开Android Studio , 进入Build > Generate Signed APK 。
你可以按照下文中的步骤进行操作 , 来生成一个签名密钥:https://developer.android.com/studio/publish/app-signing#sign-apk 。
当你可以选择谷歌应用商店对你的应用的每一个版本进行签名时 , 你有很多选择 。 详情请参照上面的链接 。
生成密钥并查看其内容的简单命令分别如下:
生成秘钥:
keytool -genkey -v -keystore-storepass-alias-keypass-keyalg RSA -keysize 2048 -validity 30000 查看秘钥:
keytool -list -v -keystore-alias-storepass-keypass 备注:你需要用实际值替换上面尖括号里的变量 。 根据你的应用程序的实际需要 , 设置生成密钥、密钥大小和有效日期(以天为单位)的算法需要提供的值 。
此外 , 还可以使用APKSigner和ZipAlign工具来检查 , 这些工具很方便(本文将不讨论它们 , 但是它们非常值得探讨) 。
本文插图
如何通过代码检查应用程序签名信息?
下面的代码可以用来检查应用程序签名信息:
public boolean validateAppSignature(Context context) throws NameNotFoundException {PackageInfo packageInfo = context.getPackageManager.getPackageInfo(getPackageName, PackageManager.GET_SIGNATURES);//note sample just checks the first signaturefor (Signature signature : packageInfo.signatures) { // SHA1 the signatureString sha1 = getSHA1(signature.toByteArray);// check is matches hardcoded valuereturn APP_SIGNATURE.equals(sha1);}return false;} 当一个应用程序(APK文件)被安装到安卓设备上时 , 包管理器将验证APK文件是否已经使用该APK中包含的证书正确地签名 。 如果证书(或者更准确地说 , 证书中的公钥)与用于在设备上签署任何其他APK的密钥匹配 , 则新APK可以在清单中指定它将与其他类似签名的APK共享UID 。
如果设备上的私有签名密钥丢失 , 会出现什么情况?
这将导致旧的应用程序无法更新!这种情况下 , 它将生成一个新的包名&一个新的证书 。 比如说:
Authenticator应用程序是一个身份验证程序 , 这个应用程序的一个私有应用程序签名密钥丢失或受损 , 因为在几年前的一次更新中 , 它的软件包名称从com.google.android.apps.authenticator被更改为com.google.android.apps.authenticator2 。 由于此更改 , 所有后续的Authenticator应用程序更新只能以新的程序包名称发布 , 并且使用由新的专用签名密钥生成的新签名 。
不过 , 最近谷歌公司也增加了对“rolling key”的支持 , 这可能会在有这种麻烦的情况下为开发者节轻一点压力 。
以上所有这些内容供你参考 , 希望你能从中获得一些帮助 。 签名是一个至关重要的场景 , 需要深入了解才能理解安卓系统的整体安全状况 。
原文:https://hackernoon.com/how-to-check-whether-the-mobile-app-on-your-phone-is-authentic-or-not-j9gt32lw
本文为 CSDN 翻译 , 转载请注明来源出处 。
推荐阅读
- 海峡生活汇印度对中国虎视眈眈,我国将如何迎接挑战,英国仍想着事后清算
- JEECG前端Chrome调试小技巧汇总
- 「空调」集中空调怎样用得安全?杭州检查5431家公共场所
- 嘴强玩家马小跳如何才能绝地翻盘?萨满:简单,炉石传说:对手场上7个死亡之翼
- 购房置业▲社保未缴满15年如何补救,这4种方式都可以,劝你不要选第4个
- #青春有你第二季#青你2学员问杨天真“火了如何调整心态”,杨天真怒怼:等你火了再说吧
- 程程搞笑该如何废物利用,网友回答笑了,在家找到过期的洗面奶
- 崔元新不输当前5G新机的4款旧旗舰,你如何选择呢?,新一轮降价潮
- 炒米视角对国家没用”,此人如何评价?,王福重博士谈农民:“一身蛮力
- 讲故事的女人是如何对待她们的?说出来你绝对不敢相信,萨达姆俘虏美国女兵后
