提取应用的签名和包名
2016-04-28 16:25
274 查看
欢迎Follow我的GitHub, 关注我的CSDN, 未经授权, 禁止转载.
Android应用在使用第三方的库时, 可能需要申请密钥, 表明应用身份, 如高德定位SDK等. 应用签名(printcert)是公开的, 只要下载到Apk包, 就可以公开提取. 签名中包含MD5, SHA1, SHA256. 应用唯一性就是表现为签名+包名, 就像人的指纹一样重要, 是确定应用属性的重要信息, 也是应用商店检测盗版应用的途径.
本文讲解如何提取应用的签名和包名.
![](https://img-blog.csdn.net/20160428162406908)
(1) Keystore
系统默认签名: 存放位置:
日常测试应用的签名, 均来自于此, 提取密钥.
输入默认密钥库口令: android
即可显示
自定义签名: 进入到存放keystore的文件夹,使用命令:
显示默认签名类似的效果.
(2) RSA
已经编译成Apk的包, 我们无法获取Keystore, 但是可以在RSA中获取签名.
修改Apk包的后缀名, 从”.apk”变为”.zip“, 解压缩.
进入META-INF文件夹, 即
使用命令
即可, 显示Apk的签名.
获取MD5, SHA1, SHA256.
输出, package: name, 即包名.
注: 也可以修改本地包名, 匹配已经存在的密匙.
修改应用包名的方法, 在build.gradle中, 添加applicationId, 即
修改包名为com.amap.location.demo.
未添加gradle的参数, 默认位置是AndroidManifest.xml,
其中manifest的package属性, 表示包名, 即
build.gradle的包名属性优先级高于manifest, 其他属性也是一样.
在第三方库的开发者平台输入签名和包名, 就可以生成唯一密钥, 放到程序中, 就可以使用库了.
签名+包名, 表明Apk的唯一身份, 防止盗版仿冒的Apk出现, 是Android的安全机制.
PS: 公司经常使用第三方库, 需要申请唯一的账号, 统一管理; 作为开发者, 在测试时, 也需要申请一些测试Key, 加快开发速度.
OK, that’s all! Enjoy it.
最初发布地址:
http://www.wangchenlong.org/2016/03/12/1602/get-app-cert-and-package/
欢迎Follow我的GitHub, 关注我的简书, 微博, CSDN, 掘金.
我已委托“维权骑士”为我的文章进行维权行动. 未经授权, 禁止转载, 授权或合作请留言.
Android应用在使用第三方的库时, 可能需要申请密钥, 表明应用身份, 如高德定位SDK等. 应用签名(printcert)是公开的, 只要下载到Apk包, 就可以公开提取. 签名中包含MD5, SHA1, SHA256. 应用唯一性就是表现为签名+包名, 就像人的指纹一样重要, 是确定应用属性的重要信息, 也是应用商店检测盗版应用的途径.
本文讲解如何提取应用的签名和包名.
签名
获取签名包含两种方式:(1) Keystore
系统默认签名: 存放位置:
~/.android/debug.keystore.
日常测试应用的签名, 均来自于此, 提取密钥.
keytool -list -v -keystore debug.keystore
输入默认密钥库口令: android
即可显示
证书指纹: MD5: 97:0B:1C:... SHA1: 47:DF:70:... SHA256: 83:F9:04:... 签名算法名称: SHA256withRSA 版本: 3
自定义签名: 进入到存放keystore的文件夹,使用命令:
keytool -list -v -keystore [xxx] -keypass [xxx]
显示默认签名类似的效果.
(2) RSA
已经编译成Apk的包, 我们无法获取Keystore, 但是可以在RSA中获取签名.
修改Apk包的后缀名, 从”.apk”变为”.zip“, 解压缩.
进入META-INF文件夹, 即
cd META-INF.
使用命令
keytool -printcert -file CERT.RSA
即可, 显示Apk的签名.
获取MD5, SHA1, SHA256.
包名
查看包名就一行命令, 显示Apk的信息.aapt dump badging [xxx.apk]
输出, package: name, 即包名.
package: name='xxx.xxx.xxxxx' ...
注: 也可以修改本地包名, 匹配已经存在的密匙.
修改应用包名的方法, 在build.gradle中, 添加applicationId, 即
android { defaultConfig { applicationId "com.amap.location.demo" // ... } }
修改包名为com.amap.location.demo.
未添加gradle的参数, 默认位置是AndroidManifest.xml,
其中manifest的package属性, 表示包名, 即
<manifest package="wangchenlong.chunyu.me.wcl_amap_demo">
build.gradle的包名属性优先级高于manifest, 其他属性也是一样.
在第三方库的开发者平台输入签名和包名, 就可以生成唯一密钥, 放到程序中, 就可以使用库了.
签名+包名, 表明Apk的唯一身份, 防止盗版仿冒的Apk出现, 是Android的安全机制.
PS: 公司经常使用第三方库, 需要申请唯一的账号, 统一管理; 作为开发者, 在测试时, 也需要申请一些测试Key, 加快开发速度.
OK, that’s all! Enjoy it.
最初发布地址:
http://www.wangchenlong.org/2016/03/12/1602/get-app-cert-and-package/
欢迎Follow我的GitHub, 关注我的简书, 微博, CSDN, 掘金.
我已委托“维权骑士”为我的文章进行维权行动. 未经授权, 禁止转载, 授权或合作请留言.
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories