抛开android获取app的签名 —— 一次源码探索之旅
来源:互联网 发布:adobe xd windows下载 编辑:程序博客网 时间:2024/05/19 13:30
在android中的利用PackageManager可以很轻松得到一个app的签名哈希值,但是需要在android下弄一次比较麻烦。其实完全可以抛开android获取,很多软件之类的都实现了,只是不知道怎么实现的。今天正好有兴趣,小小的探索了一下。
签名哈希值是PackageManager的getPackageInfo方法获取的,但是PackageManager是一个抽象类。。。而且找了半天也没找到子类之类的东西,上来就卡住了。。。。
只好求组万能的百度,原来有个PackageManagerService,在com\android\server\pm下,不过关于位置网上说法不一样。PackageManagerService近万行代码,看的脑袋痛。还好网上有高手进行了详细分析http://www.open-open.com/lib/view/open1328776151311.html。大概看了看,我最关心的还是签名,直接看有关签名的部分。
可以看的是在collectCertificatesLI这个方法里,这里调用android\content\pm\PackageParser的CollectCertificates方法,在这个方法里就可以看的通过JarFile来解析apk包,遍历里面的JarEntry,再调用JarEntry的getCertificates()来获取签名。这里就可以将代码简单修改一下脱离android直接用JarFile来解析apk包获取签名。
其实呢,JarEntry的getCertificates()实质上是得到apk包里的签名文件CERT.RAS解析出签名的,也可以直接把这个文件拿出来,用更简单的方法解析获取签名,不过感觉没什么必要,而且好像不仅仅需要这一个文件就够了。
整个过程很简单,只是在PackageManagerService上花了一些时间,但还是没太看明白,看了那个高人写的也比较茫然,看来只能等以后再研究了。后来又接着向下研究签名,发现签名文件所关联的JarEntry每个apk包都不同,研究很久没发现那个JarEntry有什么特别的代码,而且有关的源码是不全的。。。
这样的话就可以写一个小工具了,十几行代码就可以了,可以很轻松的获取一个apk包的签名哈希值,其实也可以获得签名的具体内容。
- 抛开android获取app的签名 —— 一次源码探索之旅
- Android探索之旅 | 国际化你的App+网站推荐
- 【Android】一个获取Android应用签名摘要的App工具
- 一次移动记账App的设计探索
- 获取android APP 签名的MD5和SHA1
- 通过控制台获取Android app签名的sha1值
- 通过android应用获取第三方应用签名的源码
- Android用于获取app签名值
- Android实战技巧之五十:App的系统签名
- Android App的签名打包
- Android App的签名打包
- Android App的签名打包
- Android App的签名打包
- Android App的签名打包
- Android App的签名打包
- Android App的签名打包
- Android App的签名打包
- Android App的签名打包
- 我一个箭步的快乐的翅膀冲下了楼梯
- 一群群白色的快乐的翅膀泡沫争先恐后
- Doxygen使用教程
- Linux 内存机制
- 灾区的人就一定能渡过难关
- 抛开android获取app的签名 —— 一次源码探索之旅
- 我想这就不用去戳穿
- 当json键为数字时的取值方法解析
- 我的快乐的翅膀手机怎么一眨眼工夫
- [Unity3d] Webplayer屏蔽鼠标右键
- 移动研究院笔试题
- 所有的东西都被洗刷一新
- jquery.autocomplete自动提示
- 广播每个周末还放电影另外还有乒乓球桌